none
將GridView轉匯成Excel in C# RRS feed

  • 問題

  • 有一按鈕:「轉匯成Excel」
    希望能將GridView轉匯成Excel
    用C#的語法   該如何寫呢?
    謝謝^^
    ps.  GridView是有分頁的
    2008年9月8日 上午 09:24

解答

  • Code Snippet

    using System.Text;

    ...

    // download GirdView Records.
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);

    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename=MyExcel.xls"));

    DataTable table = GetMyData();

    this.GridView1.AllowPaging = false;

    this.GridView1.DataSource = table;
    this.GridView1.DataBind();
    this.GridView1.RenderControl(hw);

    this.GridView1.AllowPaging = true;

    Response.Write(sw.ToString());
    Response.End();

     

     

     

    2008年9月8日 上午 09:29
    版主

所有回覆

  • Code Snippet

    using System.Text;

    ...

    // download GirdView Records.
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);

    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename=MyExcel.xls"));

    DataTable table = GetMyData();

    this.GridView1.AllowPaging = false;

    this.GridView1.DataSource = table;
    this.GridView1.DataBind();
    this.GridView1.RenderControl(hw);

    this.GridView1.AllowPaging = true;

    Response.Write(sw.ToString());
    Response.End();

     

     

     

    2008年9月8日 上午 09:29
    版主
  • 補充說明

    1.觸發下載用的按鈕或超連結, 原則上請勿包進 AJAX的 UpdatePanel 裡
    因為如果走AJAX的機制的話
    遊覽器似乎無法正確解讀HTTP檔頭去做正確的下載檔案的動作?

    2.
    必須覆寫 Page.VerifyRenderingInServerForm, (空函數即可)不然 this.GridView1.RenderControl(hw); 會彈出錯誤
    public override void VerifyRenderingInServerForm(Control control)
    {
    }

    其他
    請自行參照小朱出的那本書

    2008年9月9日 上午 03:00
  • 參考下面文章的作法,不過文中是 VB.NET,自行翻成 C#

    擴展 GridView 控制項 - 支援 Excel 及 Word 匯出
    http://www.dotblogs.com.tw/jeff377/archive/2008/05/17/4028.aspx
    2008年9月9日 上午 05:01