DotNetCore.NPOI всегда создает поврежденный файл
Я использую 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 специально.
Спасибо за любую помощь.
2 ответа
На данный момент это официальный выпуск: https://www.nuget.org/packages/DotNetCore.NPOI.
Dotnetcore.NPOI НЕ является официальным релизом NPOI, и эта ветка прекращается на долгое время. Вместо этого используйте https://www.nuget.org/packages/NPOI/. Если это подтверждено как ошибка, отправьте сообщение о проблеме на https://github.com/tonyqus/npoi/issues.