DotNetCore.NPOI 总是创建损坏的文件
Posted
技术标签:
【中文标题】DotNetCore.NPOI 总是创建损坏的文件【英文标题】:DotNetCore.NPOI always creates corrupted file 【发布时间】:2019-07-11 22:31:43 【问题描述】:我使用 DotNetCore.NPOI 将数据导出到 *.xlsx 文件,我的程序似乎内存不足,所以我尝试使用相对较新的 SXSSFWorkbook降低内存占用,但生成的文件总是损坏且无法打开。
即使是这个简单的示例(最初使用 Java 或其他语言)也会创建损坏的文件:
var wb = new SXSSFWorkbook(new XSSFWorkbook(), 1024); // keep 1024 rows in memory
var sh = wb.CreateSheet();
// Should not even have to flush anything before end, only 100 lines
for (int rownum = 0; rownum < 100; rownum++)
var row = sh.CreateRow(rownum);
for (int cellnum = 0; cellnum < 10; cellnum++)
var cell = row.CreateCell(cellnum);
cell.SetCellValue($"rownum:cellnum");
var o = new FileStream("test.xlsx", FileMode.Create, FileAccess.Write);
wb.Write(o);
o.Close();
wb.Dispose();
当我将第一行更改为此时,它可以工作(但始终将整个文档保存在内存中):
var wb = new XSSFWorkbook();
...
不确定我是否应该像这样将 XSSFWorkbook 实例传递给 SXSSFWorkbook 实例:new SXSSFWorkbook(new XSSFWorkbook(), 1024)
,但不知道还能做什么。原始示例中的 SXSSFWorkbook 构造函数只需要行数。找不到任何专门用于 .NET 的示例。
感谢您的帮助。
【问题讨论】:
【参考方案1】:Dotnetcore.NPOI 不是官方的 NPOI 版本,他们停止维护这个分支很长一段时间。请改用https://www.nuget.org/packages/NPOI/。如果确认为bug,请提交issues至https://github.com/tonyqus/npoi/issues
【讨论】:
以上是关于DotNetCore.NPOI 总是创建损坏的文件的主要内容,如果未能解决你的问题,请参考以下文章