Asp.net - 查詢結果匯出為Excel檔小密技
資料來源:http://edu.uuu.com.tw/data_article/article/100510tips.htm 感謝恆毅資訊提供
作 者:趙敏翔 精誠資訊 恆逸教育訓練中心資深講師
技術分類:程式設計
開發ASP.NET時常擷取資料庫的資料,除了可以顯示在網頁上使用,大部分的使用者也有需求想要將網頁上的查詢結果保存下來,因此可以將GridView的內容直接轉成Excel檔。
但是在撰寫轉檔設計的時候,是有一些設計的地方必須要注意的,不然執行時還是會出錯。 接下來亞當斯要介紹的是:將匯出Excel檔的函式封裝在元件中,以方便ASP.NET應用程式可以共用,這樣的設計方式,就必須在網頁上動些小手腳。
以下為簡易的設計步驟(這邊用VB來寫範例,需要C#的朋友就自己轉):
1. 首先,新增一個類別,命名為:ExportUtil.cs 2. 將匯出Excel的函式寫在ExportUtil中或是一個類別函式庫(Class Library)中,這個ExportGridView方法接收兩個參數,分別是檔案名稱以及GridView物件,並且宣告為靜態方法:static。
- public class ExportUtil
- {
- ///
- /// 將ASP.NET查詢結果(GridView)匯出為Excel檔
- ///
- /// Excel檔的檔案名稱
- /// 想要匯出的GridView資料
- ///
- public static void ExportGridView(string filename, GridView gv)
- {
- HttpContext.Current.Response.Clear();
- HttpContext.Current.Response.Write("");
- HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + HttpContext.Current.Server.UrlEncode(filename));
-
- HttpContext.Current.Response.Charset = "";
- HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
- System.IO.StringWriter StringWriter = new System.IO.StringWriter();
- HtmlTextWriter HtmlTextWriter = new HtmlTextWriter(StringWriter);
- gv.AllowSorting = false;
- gv.AllowPaging = false;
- gv.RenderControl(HtmlTextWriter);
- HttpContext.Current.Response.Write(StringWriter.ToString());
- HttpContext.Current.Response.End();
- }
- }
3. 因為GridView物件必須置於有 runat=server 的表單標記之中,所以請在ASP.NET網頁程式碼中,加入以下這段程式(AJAX也適用):
- public override void VerifyRenderingInServerForm(Control control)
- {
-
- }
4. 在.aspx網頁上,就可以執行叫用程式碼:
- ExportUtil.ExportGridView("Customer.xls", GridView1)
5. 在ASP.NET網頁中先取資料,將結果放置到GridView控制項中,然後可以設計一個按鈕控制項,當按下按鈕後去叫用ExportGridView方法,就可以將資料匯出到Excel中。
※ 不過如果你的GridView控制項有設定分頁或是排序的話,此時還是會產生錯誤,解決方式就是可以在web.config中設定enableEventValidation
|
0 留言