Я пытаюсь использовать закрытый XML в веб-приложении C # ASP.NET.У меня есть набор данных, который содержит более 30 таблиц данных.Я хочу передать каждую таблицу данных в виде отдельного рабочего листа, а затем создать Excel.
Каждая таблица данных имеет 10000 строк и 255 столбцов.Я получаю сообщение об ошибке:
{System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at ClosedXML.Excel.XLRangeBase.Cell(XLAddress cellAddressInRange)
at ClosedXML.Excel.XLRangeBase.Cell(Int32 row, Int32 column)
at ClosedXML.Excel.XLCell.SetValue[T](T value, Int32 ro, Int32 co)
at ClosedXML.Excel.XLCell.InsertTable[T](IEnumerable`1 data, String tableName, Boolean createTable)
at ClosedXML.Excel.XLCell.InsertTable(DataTable data, String tableName, Boolean createTable)
at ClosedXML.Excel.XLCell.InsertTable(DataTable data)
at ClosedXML.Excel.XLWorksheets.Add(DataTable dataTable, String sheetName)
at ClosedXML.Excel.XLWorksheets.Add(DataTable dataTable)
Я пытался использовать следующий код
XLWorkbook wb = new XLWorkbook();
foreach (DataTable dt in ds.Tables)
{
wb.Worksheets.Add(dt);
}
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename= " + filename1 + ".xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
wb.Dispose();
Ошибка происходит в строке
wb.Worksheets.Add(dt);
Первыйdatatable добавляется, и затем цикл переходит ко второму datatable.Во втором случае я получаю сообщение об ошибке.
Существует ли ограничение на количество строк и столбцов, которые можно использовать в Closed Xml?Кроме того, есть ли другой способ добиться этого экспорта данных в Excel?