I want to fill an Excel file to one million records but I get an outofmemory exception error.
This is my code
private void FillingExcellSheet(IEnumerable<object> sooratHesabList, string path, int i, int excelFilePartsNumber, string source,
ExcelData item, int itemsCount, string itemId)
{
int Max_Num_SEFAOT = CalculateMaximum_Numbers_SaveExcel_File_AOTime(sooratHesabList.Count());
var dest = SetExcelFilePath(i, excelFilePartsNumber, path, item);
CopyExcellFileFromSourceToDestination(source, dest);
IWorkbook workbook = null;
IWorksheet worksheet = null;
IRange cells = null;
SaveLogQueryResultCount(item, itemsCount, i);
SaveLogTemplateFilePartCopiedInsertingRows(excelFilePartsNumber, i, item);
for (int j = 0; j < Max_Num_SEFAOT; j++)
{
workbook = Factory.GetWorkbook(dest, System.Globalization.CultureInfo.CurrentCulture);
worksheet = workbook.Worksheets[SooratHesabName];
cells = worksheet.Cells;
FillingExcellSheet(cells, sooratHesabList.Skip(Maximum_Numbers_SaveExcel_File_AOTime * j).Take(Maximum_Numbers_SaveExcel_File_AOTime), item,j,excelFilePartsNumber);
workbook.Save();
GC.Collect();
GC.WaitForPendingFinalizers();
workbook.Close();
}
SaveLogTemplateFilePartSaved(excelFilePartsNumber, i, item);
}
private void FillingExcellSheet(IRange cells, IEnumerable<object> sooratHesabList, ExcelData item, int j, int excelFilePartsNumber)
{
if (excelFilePartsNumber > 1 && j == 0)
item.RowNumber = 2;
foreach (IEnumerable<object> row in sooratHesabList)
{
var colNumber = 0;
cells[item.RowNumber, colNumber, item.RowNumber, 48].Copy(cells[(item.RowNumber) + 1, colNumber, (item.RowNumber) + 1, 48]);//ToDo: check style of template file
foreach (var columnValue in row)
{
cells[item.RowNumber, colNumber].Value = columnValue?.ToString();
colNumber++;
}
item.RowNumber++;
}
}