C#加载xlsx文件的性能不好

我有一个关于在C#中加载Excel(Xlsx)文件的问题。 我已经用NPOI 2.0实现了Excel加载,但性能非常差(加载时间为15到25秒,10000行和60列)(运行在Win7上,带有Intel(R)Core TM i5-3210M CPU @ 2.50GHz(4 CPU),〜2.5GHz))。 我以为这是因为NPOI 2.0还在testing阶段,所以我尝试了另外一个名为EPPlus的库,并且加载Excel文件的时间也相当长。

以下是我如何使用EPPlus加载它:

var existingFile = new FileInfo(path); var excelData = new ExcelViewModel(path); // Open and read the XlSX file. using (var package = new ExcelPackage(existingFile)) { // Get the work book in the file ExcelWorkbook workBook = package.Workbook; if (workBook != null) { // Here is some initializing...... var viewSheetModel = new ExcelSheetViewModel(sheet.Name, numberOfColumns, titles); for (var row = titleRowIndex + 1; row <= end.Row; ++row) { var viewRowModel = new ExcelRowViewModel(); for (int column = start.Column; column <= end.Column; ++column) { var cell = sheet.Cells[row, column]; viewRowModel.AddCellValue(cell.Value != null ? cell.Value.ToString() : string.Empty); } viewSheetModel.Rows.Add(viewRowModel); } excelData.AddSheet(viewSheetModel); } } 

根据dotTrace Profiler,大约40%的时间浪费在get_Workbook方法(通过访问“package.Workbook”属性)中,然后在get_Item和get_Value中调用另外30%,然后在方法AddCellValue中调用5% (这是我的数据模型),其余的时间被分散到各种方法调用中。

有什么我做错了,或者是这种performance正常吗?

干杯