2
我正在处理一个表单,它将允许我的用户选择电子表格并将其数据复制到SQLite数据库。我的SQLite查询是事务,发生在大约一秒钟内,但我的代码中没有正确运行的部分是它通过Excel范围循环并创建我的插入语句的地方。它是一个嵌套的循环,用于遍历所选范围和所有行中的所有列。整个360行和43列电子表格的整个过程需要大约四分钟的时间才能运行。我最初认为这是SQLite插入,所以我将它转换为批量插入。一旦我挖了一点,并通过代码,我意识到这是'for'循环造成的。这里是我的代码:缓慢嵌套'for'循环读取Excel对象
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);
如果任何人有关于如何加快这有什么想法,或者如果我做错了,我打开尝试任何事情。
你是对的,先生。感谢您在感恩节前一天为我节省大量头痛!这现在需要所有的毫秒。 – VinnyGuitara
不客气。我很高兴我能帮上忙。 – Maertin