DotNetCore.NPOI始终创建损坏的文件

时间:2019-02-18 14:02:47

标签: c# .net-core npoi sxssf

我使用 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 个答案:

答案 0 :(得分:0)

Dotnetcore.NPOI不是NPOI的官方发行版,并且很长时间以来,它们都不再维护该分支。请改用https://www.nuget.org/packages/NPOI/。如果确认为错误,请向https://github.com/tonyqus/npoi/issues

提交问题