DotNetCore.NPOI всегда создает поврежденный файл - PullRequest
0 голосов
/ 18 февраля 2019

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

Спасибо за любую помощь.

...