Я использую 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 специально.
Спасибо за любую помощь.