用OLEDB读取Excel文件?

时间:2012-02-10 12:52:30

标签: c# sql-server excel oledb

您好我正在阅读带有oledb的excel文件(该文件有100000行)。我必须快速阅读文件。

string conn;

                conn = ("Provider=Microsoft.ACE.OLEDB.12.0;" +
                ("Data Source=" + _filename + ";" +
                "Extended Properties=\"Excel 12.0;\""));
                OleDbConnection oleDBCon = new OleDbConnection(conn);
                oleDBCon.Open();
                DataTable dt = oleDBCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                string excelsheetname = dt.Rows[0].ItemArray[2].ToString();
                string SSQL = "SELECT * from [" + excelsheetname + "]";

                OleDbDataAdapter oleDA = new OleDbDataAdapter(SSQL, conn);
                DataSet ds = new DataSet();
                oleDA.Fill(ds);
                DataTable _DtTable = ds.Tables[0]; // or [ ds ]
                oleDBCon.Close();

然后在带有for循环的_DtTable中我将这些单元格插入到DB中。如何快速读取这个非常大的ex​​cel?并插入数据库?我使用了Parallel.For但它对我来说不是真正的解决方案..任何想法?

3 个答案:

答案 0 :(得分:1)

利用SQL的OpenXML来批量插入数据,这些数据为您工作后

这是我为同样的工作所做的代码:Bulk Insertion of Data Using C# DataTable and SQL server OpenXML function

答案 1 :(得分:1)

要使用ADO向MyTable添加记录,您可以使用类似于以下内容的代码:

'Create a new connection object for Book1.xls
Dim conn As New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "Data Source=C:\Book1.xls;Extended Properties=Excel 8.0;"
conn.Execute "Insert into MyTable (FirstName, LastName)" & _
  " values ('Bill', 'Brown')"
conn.Execute "Insert into MyTable (FirstName, LastName)" & _
  " values ('Joe', 'Thomas')"
conn.Close

这是来自MSDN:http://support.microsoft.com/kb/247412

答案 2 :(得分:1)

您可以查看数据库可以使用的一些方法Excelfiles