C#中更快的Excel文件访问

smo*_*med 0 .net c# excel optimization performance

我的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;
    }
Run Code Online (Sandbox Code Playgroud)

Hec*_*rea 5

我没有做过与Excel的任何一个时间过长... ...但在几年前,我们能够加快我们的一些流程,从Excel读取读取数据的单元格范围在同一时间到一个数组(而不是去细胞按细胞).

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