慢速嵌套';对于';循环读取Excel对象
本文关键字:读取 Excel 对象 循环 对于 嵌套 | 更新日期: 2023-09-27 18:24:40
我正在开发一个表单,该表单将允许我的用户选择电子表格并将其数据复制到SQLite数据库中。我的SQLite查询是事务,大约在一秒钟内发生,但我的代码中运行不正常的部分是它在Excel范围中循环并创建插入语句的地方。它是一个嵌套的for循环,在选定范围内的所有列和所有行上运行。一个有360行43列的电子表格的整个过程大约需要4分钟的时间。我最初认为它是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快速导入数据表
我相信以上问题应该能解决你们的问题。.value2的个别调用导致了问题。您可以将值复制到数组或数据表中,并相应地进行操作以加快速度。