Я использую OpenXML SDK 2.0 для создания файла Excel с большим объемом данных, appox. 1000000 строк, и мне нужно оптимизировать использование памяти, потому что моя машина тормозит очень быстро.
Я хочу решить эту проблему путем сброса части сгенерированного дерева DOM в файл во время выполнения. Я делаю свою собственную буферизацию для данных. Например, у меня есть 100000 записей для записи, и я хочу сбросить поток в файл, когда я добавляю 1000 строк в таблицу Excel. Я делаю это с помощью метода worksheetPart.Worksheet.Save ().
В документации говорится, что этот метод Save (): «сохраняет данные в дереве DOM обратно в деталь. Он также может вызываться несколько раз. Каждый раз, когда он вызывается, поток сбрасывается.»
foreach (Record m in dataList)
{
Row contentRow = CreateContentRow(index, m); // my own method to create row content
//Append new row to sheet data.
sheetData.AppendChild(contentRow);
if (index % BufferSize == 0)
{
worksheetPart.Worksheet.Save();
}
index++;
}
Этот метод работает, потому что диаграмма использования памяти имеет форму, но, к сожалению, использование памяти увеличивается со временем.
У кого-нибудь есть идеи, как решить эту проблему?