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