内存问题,同时创造大量的excelfile使用OpenXml.Spreadsheet:我需要的是能够做到超过200000行!
问题:创建过程中,吃的所有内存(4GB)。说OU memeory异常的。
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();
}