Slow nested 'for' loop pour lire des objects Excel

Je travaille sur un formulaire qui permettra à mes users de choisir une feuille de calcul et de copyr leurs données dans une database SQLite. Ma requête SQLite est une transaction et se produit en environ une seconde, mais la partie de mon code qui ne fonctionne pas correctement est l'endroit où elle boucle la gamme Excel et crée mes instructions d'insertion. Il s'agit d'une boucle annulée pour toutes les colonnes de la plage sélectionnée et de toutes les lignes. Tout ce process pour une feuille de calcul à 360 lignes et 43 colonnes prend environ quatre minutes à exécuter. J'ai initialement pensé que c'était l'insert SQLite, donc je l'ai converti en un insert en vrac. Une fois que j'ai creusé un peu et traversé le code, je me suis rendu count que c'est la boucle 'for' qui provoque cela. Voici mon code:

int counter = 1; ssortingng contents = null; ssortingng 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.ToSsortingng("'" + xlRange.Cells[i, j].Value2) + "',"; //MessageBox.Show(xlRange.Cells[i, j].Value2.ToSsortingng()); } contents = contents.Remove(contents.Length - 1); bulkInsert = bulkInsert + "INSERT INTO DeferralInput VALUES (" + contents + "); "; contents = ""; } bulkInsert = "BEGIN TRANSACTION; " + bulkInsert + " COMMIT;"; xlApp.Quit(); ExecuteQuery(bulkInsert); 

Si quelqu'un a des idées sur la façon d'accélérer ou si j'ai fait quelque chose de mal, je suis ouvert à essayer n'importe quoi.

Importation d'Excel dans une DataTable rapidement

Je crois que la question ci-dessus devrait résoudre votre problème. Les appels individuels à .value2 causent le problème. Vous pouvez copyr des valeurs dans un tableau ou une donnée et, par conséquent, manipuler pour accélérer les choses.