我将大型DataTable导出为Excel工作表(.xls)格式。我在这里调用存储过程,它返回DataTable。存储过程用于返回7,50,000行,包含93列。
在后端,如果我传递存储过程的参数,则需要8分钟才能完成该过程,因为这是一个很长的过程。
但是当我从前端调用程序时,将记录分配给DataTable," System Out Of Memory"异常发生。
所以当我谷歌时,我才知道这是因为它的大小超过了服务器的RAM大小,所以它抛出了这个异常。 当我导出小型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();