如果你要匯出資料成檔案,作法通常有很多種,之前曾經有篇文章【如何用 C# 將資料匯出到 Excel】介紹一些匯出的方式,但今天這個作法應該是最簡單的,也就是透過 GridView 控制項所輸出的 HTML 就可以讓 Excel 開啟了。
在 Excel 或 Word 中本來就看的懂 HTML 語法,你甚至可以試著將隨便一個網頁的副檔名改成 *.doc 然後用 Word 開啟,就可以看的到內容了。當然在 Excel 能看懂得就有一格一格的 <table> 語法啦!
以下的程式碼是寫在 Generic Handler 裡的片段:
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();
通常你可以寫一支 Generic Handler (泛型處理常式) 專門用來做網站所有資料匯出的動作,若匯出資料有權限上的限制,也可以統一在同一支程式裡判斷。