將ASP.NET查詢結果(GridView)匯出為Excel檔

摘要:將ASP.NET查詢結果(GridView)匯出為Excel檔

雖然開發ASP.NET將GridView的內容直接轉成Excel檔並不是什麼新技術了,不過在寫程式的時候,有時候遇到這樣的功能時,還是會" 熊熊"(台語)忘記應該要注意的地方,例如:如果GridView是動態載入或是動態建立的模式時,還是有一些小"眉角"(台語)是必須要注意的,不然執行時還是會出錯。

亞當斯這邊要記錄的是,將匯出Excel檔的函式封裝在元件中,以方便ASP.NET應用程式可以共用,這樣的設計方式,就必須在網頁上動些小手腳。

以下為簡易的設計步驟(這邊我用VB來寫範例,需要C#的朋友就自己轉囉):
1.先將匯出Excel的函式寫在一個類別函式庫(Class Library)中,這個ExportGridView方法接收兩個參數,分別是檔案名稱以及GridView物件,並且宣告為靜態方法:Shared。
 

Excel01

2.因為GridView物件必須置於有 runat=server 的表單標記之中,所以請在ASP.NET網頁程式碼中,加入以下這段程式(AJAX也適用):
 

Excel02

3.在ASP.NET網頁中先取資料,將結果放置到GridView控制項中,然後可以設計一個按鈕控制項,當按下按鈕後去叫用ExportGridView方法,就可以將資料匯出到Excel中。
Excel03 4.如果沒有加入第二步驟的程式區段,將會產生以下錯誤畫面。
Excel04

5.不過如果你的GridView控制項有設定分頁或是排序的話,此時還是會產生錯誤,解決方式就是可以在web.config中設定enableEventValidation,如下:
<pages enableEventValidation="false">