The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

ASP.NET 2.0 匯出資料到Excel的簡單作法

如果你要匯出資料成檔案,作法通常有很多種,之前曾經有篇文章【如何用 C# 將資料匯出到 Excel】介紹一些匯��的方式,但今天這個作法應該是最簡單的,也就是透過 GridView 控制項所輸出的 HTML 就可以讓 Excel 開啟了。

在 Excel 或 Word 中本來就看的懂 HTML 語法,你甚至可以試著將隨便一個網頁的副檔名改成 *.doc 然後用 Word 開啟,就可以看的到內容了。當然在 Excel 能看懂得就有一格一格的 <table> 語法啦!

以下的程式碼是寫在 Generic Handler 裡的片段:

[code:c#]

  GridView gvExport = new GridView();
  gvExport.DataSource = getDataTable(strQuery);
  gvExport.DataBind();

  string strExportFilename = "ExportedData.xls"; 

  Response.Clear();
  Response.AddHeader("content-disposition",
       "attachment;filename=" + strExportFilename + ".xls");
  Response.Cache.SetCacheability(HttpCacheability.NoCache);
  Response.ContentType = "application/vnd.xls";
  Response.Charset = "big5";
 
  System.IO.StringWriter stringWrite = new System.IO.StringWriter();
  System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
  gvExport.RenderControl(htmlWrite);
  Response.Write(stringWrite.ToString().Replace("<div>", "").Replace("</div>", ""));
  Response.End();

[/code]

通常你可以寫一支 Generic Handler (泛型處理常式) 專門用來做網站所有資料匯出的動作,若匯出資料有權限上的限制,也可以統一在同一支程式裡判斷。