当前位置:编程学习 > C#/ASP.NET >>

C#如何把EXCEL中的数据导入到SQL数据库中

C#如何把EXCEL中的数据导入到SQL数据库中并且在Datagridview显示出来 --------------------编程问答-------------------- 用OleDB把excel的数据读取到DataTable中,然后再写入Sql server, --------------------编程问答--------------------

//excel导入到datagridview
  public void EcxelToDataGridView(string filePath, DataGridView dgv)
        {
            //根据路径打开一个excel文件并将数据填充到dataset中
            string strConn = @"Provider = Microsoft.Ace.OLEDB.12.0; Data Source = " + filePath + "; Extended Properties = 'Excel 12.0;HDR = NO; IMEX=1'";
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            strExcel = "select * from [sheet1$]";
            DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
            string tableName = schemaTable.Rows[0][2].ToString().Trim();
            OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, strConn);
            DataSet ds = new DataSet();
            myCommand.Fill(ds, "table1");
            //根据DataGridView的列构造一个DataTable
            DataTable td = ds.Tables[0];
            try
            {
                //MessageBox.Show(td.ToString());
                foreach (DataGridViewColumn dgvc in dgv.Columns)
                {
                    if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))
                    {
                        DataColumn dc = new DataColumn();
                        dc.ColumnName = dgvc.DataPropertyName;
                        dc.DataType = dgvc.ValueType;
                        //MessageBox.Show(dc.ToString());
                        td.Columns.Add(dc);
                    }
                }

                //根据excel的行逐一对上面的构造的datatable的列进行赋值

                for (int i = 0; i < ds.Tables[0].Rows.Count - 1; i++)
                {
                    //int j = 0;
                    DataRow dr = td.NewRow();
                    DataRow excelRow = ds.Tables[0].Rows[i];
                    foreach (DataColumn dc in td.Columns)
                    {
                        dr[dc] = excelRow[i];
                        //MessageBox.Show(dr[dc].ToString());
                        i++;
                    }
                    td.Rows.Add(dr);
                }
                //在datagridview中显示导入的数据
                dgv.DataSource = td;
            }
            catch (Exception)
            {
                MessageBox.Show("该表已存在你即将导入的excel文件...,请点击清空按钮重新导入...");
                return;
            }
            finally
            {
                conn.Close();
            }
        }
//你可以获取其中td的值导入数据库 也可以将datagridview导入到数据库
--------------------编程问答-------------------- 可以考虑直接用SQL数据库的导入功能! --------------------编程问答-------------------- 1、写程序。先读取Excel数据,然后根据格式写入数据库。网上有现成代码。
2、用工具。SQL Server有数据导入工具,选好字段和类型,导入即可。

至于显示到datagridview,更简单了,读取Excel返回dataset,然后一绑定就OK了。
祝你好运! --------------------编程问答--------------------
引用 3 楼 sdl2005lyx 的回复:
可以考虑直接用SQL数据库的导入功能!

这个可以一试,效率肯定很高 --------------------编程问答-------------------- Excel本来就是一种数据库,不过比较特殊,我们不常用而已,这个问题就是在两个数据库之间进行数据复制而已 --------------------编程问答--------------------
引用 4 楼 guwei4037 的回复:
1、写程序。先读取Excel数据,然后根据格式写入数据库。网上有现成代码。
2、用工具。SQL Server有数据导入工具,选好字段和类型,导入即可。

至于显示到datagridview,更简单了,读取Excel返回dataset,然后一绑定就OK了。
祝你好运!


正解 --------------------编程问答-------------------- 先用OldDb读到DataTable,再用System.Data.SqlClient.SqlBulkCopy.WriteToServer(System.Data.DataTable)
写入SqlServer
再将DataTable绑定到datagridview
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,