Note that there are some explanatory texts on larger screens.

plurals
  1. POLow performance when reading data from Excel workbook to ArrayList in C#
    text
    copied!<p>Here's a problem description.</p> <p>CONDITIONS: General idea is to read a lot of real numbers from MS Excel file and put them inro ArrayList for further processing. An excel workbook has only one worksheet. All the numbers are real and they are stored in one column. I read these numbers row by row and put them into ArrayList.</p> <p>PROBLEM: the process takes too much time. Program spends about 2 minutes to fill an ArrayList with 10000 elements. Here's my code. I need your advise to make it faster. But the structure of the file cannot be modified. It's only possible to modify code. Help me please to make it faster.</p> <pre><code>// Method GetExcelData opens 1 excel file, reads data row by row and adds // it into the array of source Data Values (sourceDataValues in our case). private void GetExcelData(string fullPath, ArrayList arrForValues) { Excel.Application excelapp = new Excel.Application(); excelapp.Visible = false; // to avoid appearing of Excel window on the screen Excel.Workbook excelappworkbook = excelapp.Workbooks.Open( fullPath, Type.Missing, Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Excel.Worksheet excelworksheet = (Excel.Worksheet)excelappworkbook.Worksheets.get_Item(1); Excel.Range excelcells = excelworksheet.UsedRange; uint rowsNum = 0; for (rowsNum = 1; rowsNum != excelcells.Rows.Count; rowsNum++) { arrForValues.Add((excelcells.Cells[rowsNum, 1] as Excel.Range).Value2); } excelappworkbook.Close(false, Type.Missing, Type.Missing); excelapp.Quit(); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload