Я экспортирую большой DataTable в формат листа Excel (.xls). Здесь я вызываю хранимую процедуру, которая возвращает DataTable. Хранимая процедура используется для возврата 7 50 000 строк с 93 столбцами.Экспорт больших данных в формат xls: Исходящая из системы Исключение
В конце, если я передаю параметры хранимой процедуры, для завершения процесса требуется 8 минут, так как это длительный процесс.
Но когда я вызываю процедуру с переднего конца, при назначении записей в DataTable возникает исключение «System Out Of Memory».
Так что, когда я google, я узнал, что это потому, что размер превышает размер ОЗУ сервера, поэтому он выдает это исключение. Когда я экспортирую небольшой DataTable, он отлично работает.
Каков альтернативный способ для этого? Кто-нибудь предлагает мне. Ниже мой код,
C#:
DataTable dt = BindDatatable();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "MBQ_Auto.xls"));
Response.ContentType = "application/ms-excel";
//Response.ContentType = "application/octet-stream";
//Response.ContentType = "text/tab-separated-values";
string str = string.Empty;
foreach (DataColumn dtcol in dt.Columns)
{
Response.Write(str + dtcol.ColumnName);
str = "\t";
}
Response.Write("\n");
int rowCount = 0;
foreach (DataRow dr in dt.Rows)
{
str = "";
for (int j = 0; j < dt.Columns.Count; j++)
{
Response.Write(str + Convert.ToString(dr[j]));
str = "\t";
}
Response.Write("\n");
if (unchecked(++rowCount % 1024 == 0))
Response.Flush();
}
Response.End();
Если он слишком большой для серверной памяти, что он собирается делать с клиентом? (И что произойдет, если одно из полей содержит символ табуляции?) – Richard
Формат файла xls не поддерживает более чем более 65 000 строк. Чтобы иметь больше строк, вам нужно использовать xlsx. – Linkan
Я экспортирую более 2 записей lakhs с помощью xls. – thevan