慢嵌套'for'循环来读取Excel对象

我正在处理一个表单,这将允许我的用户select电子表格并将其数据复制到SQLite数据库。 我的SQLite查询是事务,发生在大约一秒钟,但是我的代码不是正确运行的部分是它通过Excel范围循环,并创build我的插入语句。 它是一个嵌套的for循环,遍历所选范围和所有行中的所有列。 整个360行43列电子表格的过程大约需要四分钟的时间。 我最初以为这是SQLite插入,所以我把它转换成批量插入。 一旦我挖了一下,并通过代码,我意识到这是'for'循环造成这一点。 这是我的代码:

int counter = 1; string contents = null; string bulkInsert = null; Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(file); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; Excel.Range xlRange = xlWorksheet.UsedRange; int rowCount = xlRange.Rows.Count; int colCount = xlRange.Columns.Count; for (int i = 2; i <= rowCount; i++) { for (int j = 1; j <= colCount; j++) { contents = contents + Convert.ToString("'" + xlRange.Cells[i, j].Value2) + "',"; //MessageBox.Show(xlRange.Cells[i, j].Value2.ToString()); } contents = contents.Remove(contents.Length - 1); bulkInsert = bulkInsert + "INSERT INTO DeferralInput VALUES (" + contents + "); "; contents = ""; } bulkInsert = "BEGIN TRANSACTION; " + bulkInsert + " COMMIT;"; xlApp.Quit(); ExecuteQuery(bulkInsert); 

如果任何人有任何想法如何加快这一点,或者如果我做错了什么,我打开任何尝试。

将Excel快速导入DataTable

我相信上面的问题应该解决你的问题。 .value2的个别调用正在导致这个问题。 您可以将值复制到数组或数据表中,并相应地进行操作来加快速度。