ASP.NET アプリケーションがあり、グリッド データから MS Excel ファイルを作成する必要があります。「名前を付けて保存」ダイアログは必要ありません。グリッドはページングできます。グリッドのページに大量のデータが含まれる場合があり、それらすべてを処理するのが非常に遅くなることがあります。
グリッド内のすべてのデータから MS Excel ファイルをより高速に作成するにはどうすればよいですか?
ASP.NET アプリケーションがあり、グリッド データから MS Excel ファイルを作成する必要があります。「名前を付けて保存」ダイアログは必要ありません。グリッドはページングできます。グリッドのページに大量のデータが含まれる場合があり、それらすべてを処理するのが非常に遅くなることがあります。
グリッド内のすべてのデータから MS Excel ファイルをより高速に作成するにはどうすればよいですか?
グリッドビューに複数のページがある場合、.aspx ページに AllowPaging="True" があると仮定します。
関数を呼び出してからグリッドビューを再データバインドするときに false に設定すると、Excel ワークブックのページングで問題が発生することはありません。
したがって、ここで私のグリッドビューは gvTest であり、コードは次のようになります。
protected void btnExportToExcel_Click(object sender, EventArgs e)
{
//exports gridview to Excel file.
gvTest.AllowPaging = false;
gvTest.DataBind();
String filename;
Response.Clear();
filename = string.Format("WhateverFileNameYouWant.xls");
Response.AddHeader("Content-Disposition", ("attachment; filename=" + filename));
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvTest.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
また、gvTest.RenderControl(htw) 行で次のようなエラーが発生した場合:
ほとんどの場合、次を追加する必要があります。
EnableEventValidation="false"
.aspx ページの上部に "<%@ Page Language="C#"...." が表示される場所
そして追加:
public override void VerifyRenderingInServerForm(Control control)
{
return;
}
コード ビハインドのどこでも。
これはよくあるエラーのようです。