0

ASP.NET アプリケーションがあり、グリッド データから MS Excel ファイルを作成する必要があります。「名前を付けて保存」ダイアログは必要ありません。グリッドはページングできます。グリッドのページに大量のデータが含まれる場合があり、それらすべてを処理するのが非常に遅くなることがあります。

グリッド内のすべてのデータから MS Excel ファイルをより高速に作成するにはどうすればよいですか?

4

2 に答える 2

0

グリッドビューに複数のページがある場合、.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;
 }

コード ビハインドのどこでも。

これはよくあるエラーのようです。

于 2013-04-04T20:39:40.787 に答える