在C#中更快的Excel文件访问

我的C#应用​​程序从excel文件中获取大量数据并处理,然后将其写回到文件中。

问题是从Excel文件加载数据时,需要一些时间(大约7000字段的Excel需要30秒)

我想让它变得更快,有没有什么方法可以使它在更长的时间内更快?

我用来获取数据的代码是:

streamReader = new StreamReader(@"ExcelPath.txt"); string path = streamReader.ReadLine(); //An Excel Application ==(contains)==> [Many] Excel WorkBook ==(contains)==>[Many] Excel WorkSheets==(contains)==>[Many] Ranges Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook myworkbook = excelapp.Workbooks.Open(path, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true); Microsoft.Office.Interop.Excel.Sheets myworksheets = myworkbook.Worksheets; Microsoft.Office.Interop.Excel.Worksheet myworksheet =myworksheets.get_Item(1); Microsoft.Office.Interop.Excel.Range range = myworksheet.UsedRange; string[] data = new string[range.Rows.Count]; int start = 0; for (start = 3; start < range.Rows.Count; start++) { Microsoft.Office.Interop.Excel.Range myrange = myworksheet.get_Range("O" + start.ToString(), System.Reflection.Missing.Value); data[start] = myrange.Text; } 

我还没有对Excel做任何事情……但是几年前,我们能够加速一些从Excel读取数据的过程,一次只读取一个单元格的数据到一个数组中(而不是单元格由细胞)。

从C#到Excel的每个读操作必须通过COM,这是非常昂贵的。 如果您设法减less需要从Excel中读取的次数(例如,通过一次读取多个值),您将看到速度的显着提高。