我在用着NPOI https://www.nuget.org/packages/NPOI/来处理Excel文件。这是我读取文件的方式:
using (FileStream stream = File.OpenRead(excelFilePath))
{
IWorkbook wb = WorkbookFactory.Create(stream);
...
}
然而,对于任何大于几兆字节的 XLSX 文件,它会导致内存使用量飙升至约 1GB,并最终引发 OOM 异常。
做了一些研究,我已经发现 http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream奇怪的是,从文件而不是流加载工作簿会导致 POI 消耗更少的内存。与我提供的使用文件的 Java 示例最接近的 C# 等效项如下:
OPCPackage pkg = OPCPackage.Open(new FileInfo(excelFilePath));
XSSFWorkbook wb = new XSSFWorkbook(pkg);
但它似乎使用相同的底层实现,因为内存使用量仍然相同并导致 OutOfMemory 异常。
NPOI 有内置的东西可以处理大型 XLSX 文件吗?
也欢迎提出可以处理 XLS 和 XLSX 文件的替代库的建议。
看来 XLSX 支持在 NPOI 中相当新,而且它还无法处理大文件。
尝试了几个库后,EPPlus http://epplus.codeplex.com/能够顺利处理大型 XLSX 文件,因此我最终决定使用两个库来读取 Excel 文件:用于 XLS 的 NPOI 和用于 XLSX 的 EPPlus。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)