雖然開發ASP.NET將GridView的內容直接轉成Excel檔並不是什麼新技術了,不過在寫程式的時候,有時候遇到這樣的功能時,還是會"熊熊"(台語)忘記應該要注意的地方,例如:如果GridView是動態載入或是動態建立的模式時,還是有一些小"眉角"(台語)是必須要注意的,不然執行時還是會出錯。
亞當斯這邊要記錄的是,將匯出Excel檔的函式封裝在元件中,以方便ASP.NET應用程式可以共用,這樣的設計方式,就必須在網頁上動些小手腳。
以下為簡易的設計步驟(這邊我用VB來寫範例,需要C#的朋友就自己轉囉):
1.先將匯出Excel的函式寫在一個類別函式庫(Class Library)中,這個ExportGridView方法接收兩個參數,分別是檔案名稱以及GridView物件,並且宣告為靜態方法:Shared。
2.因為GridView物件必須置於有 runat=server 的表單標記之中,所以請在ASP.NET網頁程式碼中,加入以下這段程式(AJAX也適用):
3.在ASP.NET網頁中先取資料,將結果放置到GridView控制項中,然後可以設計一個按鈕控制項,當按下按鈕後去叫用ExportGridView方法,就可以將資料匯出到Excel中。
4.如果沒有加入第二步驟的程式區段,將會產生以下錯誤畫面。
<pages enableEventValidation="false">
7 則留言:
Dear Adams
請問我在匯出時已經有加入 gv.AllowPaging = False
gv.AllowSorting = False
但在Excel 中,仍有分頁與排序,該怎麼處理呢?謝謝
Dear Adams, 想請教一下, 我依您的步驟也做了一個 class..但是執行時, 就出現 "因為保護層級,無法存取 'System.IO.StreamWriter.StreamWriter()....請問是否遺漏了什麼地方呢?
不知道你是否可以把錯誤的畫面抓下來寄給我看一下,一般來說通常是沒有問題,因為保護層級是否是因為你的瀏覽器有設定了什麼嚴密的安全性?
my mail : adamschao@gmail.com
請借我轉載,若有不妥,請至我的網頁留言,謝謝~
Dear Adams,我用了您所提供的方式來做Gridview匯出Excel
*****
Microsoft JScript 執行階段錯誤: Sys.WebForms.PageRequ
詳細資料: 剖析 near '<meta http:equiv=Con' 時發生
*****
是因為Gridview是在UpdatePanel中的原因嗎?有辦法解決嗎?
在網路上找了一下,發現將按鈕拉到UpdatePanel外可以解決我的問題,但是,按鈕位置變更動後,版面的編排就不是我所預期的樣子,有辦法在UpdatePanel中使用嗎?
翔提到..不想將按鈕拉到UpdatePanel外,
可於< Triggers >中加入< asp:PostBackTrigger ControlID="ButtonExcel" / >
張貼留言