![](/img/trans.png)
[英]Blazor Server - websocket connection to failed 1006 - PDF Viewer (with file size 13mb to 20mb)
[英]'OutOfMemoryException' reading 20mb XLSX file
我正在使用NPOI处理Excel文件。 这是我读取文件的方式:
using (FileStream stream = File.OpenRead(excelFilePath))
{
IWorkbook wb = WorkbookFactory.Create(stream);
...
}
但是,对于任何大于几兆字节的XLSX文件,它都会导致内存使用量飙升至大约1GB,并最终引发OOM异常。
经过一些研究,我发现奇怪的是,从文件而不是从流加载工作簿可以减少POI的内存消耗。 以下是与我使用文件提供的Java示例最接近的C#:
OPCPackage pkg = OPCPackage.Open(new FileInfo(excelFilePath));
XSSFWorkbook wb = new XSSFWorkbook(pkg);
但是它似乎使用了相同的基础实现,因为内存使用率仍然相同并且会导致OutOfMemory异常。
NPOI是否有内置处理大XLSX文件的内容?
也欢迎提出关于可同时处理XLS和XLSX文件的替代库的建议。
作为替代库的建议, Apache POI是一个很好的库。 我已经将它广泛用于XLSX和XLS文件,并且效果很好。 这是对文件进行快速测试的要点 。
Apache POI唯一无法涵盖的格式是可以使用Xelem代替的旧格式XML文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.