在c#中更快地访问Excel文件

本文关键字:访问 Excel 文件 | 更新日期: 2023-09-27 18:13:31

我的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;
    }

在c#中更快地访问Excel文件

我在很长一段时间没有用Excel做任何事情…但几年前,我们能够加快一些从Excel读取单元格范围的数据到数组中的过程(而不是逐个单元格)。

从c#到Excel的每个读取操作都必须经过COM,这是非常昂贵的。如果你设法减少你需要从Excel中读取的次数(例如,一次读取多个值),你应该会看到速度的显著提高。