Hej,Skriva till excelfil äter upp allt minne
Mitt problem kommer när jag skapar en excelfil från ett datatable på över uppskattningsvis 500 rader.
Jag kommer att behöva kunna skapa över 2000rader!
Problemet: Skapandeprocessen äter upp allt minne(4GB)
Okej, här kommer koden som jag använder för att skapa excelfilen. Vad kan vara orsaken?
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml.Packaging;
public static void InsertDataToExcelFile(SpreadsheetDocument sheet, DataTable table)
{
sheet.AddWorkbookPart();
sheet.WorkbookPart.Workbook = new Workbook();
sheet.WorkbookPart.Workbook.AppendChild(new Sheets());
WorksheetPart newWorksheetPart = sheet.WorkbookPart.AddNewPart<WorksheetPart>();
newWorksheetPart.Worksheet = new Worksheet();
uint worksheetNumber = 1;
SheetData sheetData = newWorksheetPart.Worksheet.AppendChild(new SheetData());
int numberOfColumns = table.Columns.Count;
bool[] IsNumericColumn = new bool[numberOfColumns];
Row newRow = sheetData.AppendChild(new Row());
Cell newCell;
foreach (DataRow dr in table.Rows)
{
newRow = sheetData.AppendChild(new Row());
for (int colInx = 0; colInx < numberOfColumns; colInx++)
{
string cellValue = dr.ItemArray[colInx].ToString();
if (IsNumericColumn[colInx] && !string.IsNullOrEmpty(cellValue))
{
newCell = CreateNumericCell(cellValue);
}
else
{
newCell = CreateTextCell(cellValue);
}
newRow.AppendChild(newCell);
}
}
newWorksheetPart.Worksheet.Save();
sheet.WorkbookPart.Workbook.GetFirstChild<
Sheets>().AppendChild(new Sheet()
{
Id = sheet.WorkbookPart.GetIdOfPart(newWorksheetPart),
SheetId = worksheetNumber++,
Name = table.TableName
});
sheet.WorkbookPart.Workbook.Save();
}