Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用OLEDB读取Excel文件?_C#_Sql Server_Excel_Oledb - Fatal编程技术网

C# 使用OLEDB读取Excel文件?

C# 使用OLEDB读取Excel文件?,c#,sql-server,excel,oledb,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;\""));

您好,我正在阅读一个带有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循环的DTU表中,我将这些单元格插入DB。。如何快速阅读这个非常大的excel?并插入数据库?我用了平行法,但对我来说这不是真正的解决方案。。有什么想法吗?

利用SQL的OpenXML批量插入数据,这样做对您更有效


下面是我为同样的工作编写的代码:

要使用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的:

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

这是一个有用的insert解决方案?我不累吗?您确定您的代码比Datatable上的经典for循环(如ıwrite up)的性能更好吗?我可能读得不够仔细。您希望从excel中读取数据并插入到另一个数据库中,可能是SQL Server,而不是在excel文件中插入记录。要阅读excel文件,我更喜欢使用ExcelDataReader,谢谢!但在第一行,它说“用C#编写的轻量级快速库,用于读取Microsoft Excel文件('97-2007)。”我有Excel 03/07/10文件。。ExcelDataReader是否支持excel 2010文件?