при экспорте более 500000 записей в Excel с использованием C # .net это дает System.OutOfMemoryException, который не обрабатывается кодом пользователя - PullRequest
0 голосов
/ 20 сентября 2010

Я застрял в вопросе экспорта Excel, это дает ошибку System.OutOfMemoryException в Excel 2007, мы экспортируем 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();

Может кто-нибудь дать мне решение, чтобы справиться с этой проблемой.

1 Ответ

1 голос
/ 20 сентября 2010

Вместо использования 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...