0
我正在將大型DataTable導出爲Excel工作表(.xls)格式。我在這裏調用存儲過程,它返回DataTable。該存儲過程用於返回具有93列的7,50,000行。將大數據導出爲xls格式:系統內存不足異常
在後端,如果我傳遞存儲過程的參數,則需要8分鐘才能完成該過程,因爲這是一個漫長的過程。
但是,當我從前端調用過程時,將記錄分配給DataTable時,會發生「系統內存不足」異常。
所以當我谷歌它,我來了解它是因爲大小超過服務器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();
如果它對於服務器內存來說太大,它會對客戶端做什麼? (如果其中一個字段包含製表符,會發生什麼情況?) – Richard
xls文件格式不支持超過65,000行。要獲得更多行,您需要使用xlsx。 – Linkan
我使用xls輸出超過2萬個記錄。 – thevan