正在嘗試從Excel工作簿中讀取數據,發現需要很長時間才能讀取3560行7列大約1分17秒的表。我所做的只是遍歷整個工作表並將值存儲在一個列表中。Excel工作簿 - 從C#讀取速度很慢?
這是正常的,還是我做錯了什麼?
static void Main(string[] args)
{
List<string> testList = new List<string>();
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Open(@"C:\Users\rnewell\Desktop\FxData.xlsx");
Excel.Worksheet worksheet = workbook.Sheets[1];
Excel.Range range = worksheet.UsedRange;
int rowCount = range.Rows.Count;
int colCount = range.Columns.Count;
int rowCounter = 1;
int colCounter = 1;
while (rowCounter < rowCount)
{
colCounter = 1;
while (colCounter <= colCount)
{
//Console.Write(range.Cells[rowCounter, colCounter].Value2.ToString() + " ");
testList.Add(range.Cells[rowCounter, colCounter].Value2.ToString());
colCounter++;
}
Console.WriteLine();
rowCounter++;
}
Console.ReadKey();
excelApp.Workbooks.Close();
}
您不需要遍歷單元格來讀取範圍:您可以在一個操作中完成。看到謝爾蓋的答案在這裏:http://stackoverflow.com/questions/7919964/low-performance-when-reading-data-from-excel-workbook-to-arraylist-in-c-sharp從.NET自動化的Excel通常是(每個操作)比使用VBA慢,因爲您在跨進程而不是在同一進程內運行。 –
暫時我會忍受滯後。如果數據集變得太大,我將使用此線程上建議的解決方案。謝謝 – Roge