簡體   English   中英

當使用C#.net在excel中導出超過500000條記錄時,它給出了System.OutOfMemoryException未由用戶代碼處理

[英]when exporting more then 500000 records in excel using C# .net it gives System.OutOfMemoryException was unhandled by user code

我陷入了導出Excel的問題,它在Excel 2007中給出了System.OutOfMemoryException錯誤,我們可以導出1000000行,但是當導出超過250000行時,它給出了錯誤,因為我使用的是上載excel的邏輯是Response.Clear(); Response.Charset =“”;

    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    string FileName = "PoliciesDetailsForBranch";
    Response.AppendHeader("content-disposition", "attachment; filename=" + FileName + ".xls");
    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
    GridView gv = new GridView();
     this.EnableViewState = false;
    gv.DataSource = (DataTable)dt;
    gv.DataBind();
    this.ClearControls(gv);
    gv.RenderControl(hw);
    Response.Write(sw.ToString());
    Response.End();

任何人都可以給我解決該問題的解決方案。

與其使用StringBuilder而不是將整個內容轉換為內存中的字符串,而是將其直接發送到Response.Output。

Response.Buffer = true;//left unmodified, but why were you buffering?
Response.ContentType = "application/vnd.ms-excel";
string FileName = "PoliciesDetailsForBranch";
Response.AppendHeader("content-disposition", "attachment; filename=" + FileName + ".xls");
GridView gv = new GridView();
this.EnableViewState = false;
gv.DataSource = (DataTable)dt;
gv.DataBind();
this.ClearControls(gv);
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(Response.Output);
gv.RenderControl(hw);
Response.End();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM