C# 更快地将excel表复制到DataTable中

C# 更快地将excel表复制到DataTable中,c#,.net,excel,datatable,C#,.net,Excel,Datatable,我正在尝试将一个包含100万条记录的excel工作表复制到一个数据表中。不幸的是,完成这个过程大约需要47秒。有没有更好的方法可以在更短的时间内复制这些信息 以下是将信息导入的代码: 此代码未完成dtTemp是否已绑定到UI对象?文件是本地的还是网络上的?您应该明确使用StringBuilder,不是因为它速度更快,而是因为此循环会生成大量字符串。此代码不完整,因为dtTemp已绑定到UI对象?文件是本地的还是网络上的?您应该明确使用StringBuilder,不是因为它速度更快,而是因为此循

我正在尝试将一个包含100万条记录的excel工作表复制到一个数据表中。不幸的是,完成这个过程大约需要47秒。有没有更好的方法可以在更短的时间内复制这些信息

以下是将信息导入的代码:


此代码未完成dtTemp是否已绑定到UI对象?文件是本地的还是网络上的?您应该明确使用StringBuilder,不是因为它速度更快,而是因为此循环会生成大量字符串。此代码不完整,因为dtTemp已绑定到UI对象?文件是本地的还是网络上的?您应该明确使用StringBuilder,不是因为它速度更快,而是因为此循环会生成大量字符串。此代码不完整,因为dtTemp已绑定到UI对象?文件是本地的还是网络上的?您应该明确地使用StringBuilder,不是因为它速度更快,而是这个循环会生成大量字符串。
String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                            fileName +
                             ";Extended Properties='Excel 12.0 XML;';";

                        OleDbConnection con = new OleDbConnection(constr);
                        OleDbCommand oconn = new OleDbCommand("Select * From ["           + sheetName + "$]", con);
                        con.Open();

                        OleDbDataAdapter sda = new OleDbDataAdapter(oconn);

                        dtTemp.Reset();
                        dtTemp.TableName = userUpload;

                        sda.Fill(dtTemp); //Puts imported table into the dtTemp table
                        con.Close();
                        string fields = "";
                        string tempString;

                        foreach (DataColumn col in dtTemp.Columns) //Generates SQL String from imported table
                        {
                            tempString = RemoveSpecialCharacters(col.ColumnName);
                            if (dtTemp.Columns.IndexOf(col) == dtTemp.Columns.Count - 1)
                            {
                                fields += " [" + tempString + "] varchar(255)";
                            }
                            else
                            {
                                fields += " [" + tempString + "] varchar(255)" + ",";
                            }

                        }

                        fields = fields.Trim();
                        // createSQLConn(fields, connection, connectionTempDB, dtTemp);
                    }