Закрытый XML - Dataatable и количество строк - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь использовать закрытый 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?

...