Start Here..
當(dāng)前編碼的一個項目中有把查詢結(jié)果(顯示在DataGrid)導(dǎo)出為excel的需求,嘗試了幾種方法,作為技巧拿來和大家分享。 內(nèi)容: 服務(wù)器端實現(xiàn)DataGrid導(dǎo)出為excel 客戶端實現(xiàn)DataGrid導(dǎo)出為excel 服務(wù)器端實現(xiàn)DataTable導(dǎo)出為excel(終極解決方案)
服務(wù)器端實現(xiàn)DataGrid導(dǎo)出為excel 這是網(wǎng)上出現(xiàn)的最多的做法:
在需要導(dǎo)出的地方調(diào)用上面的方法就可以。不過這樣的實現(xiàn)有兩個問題:第一,datagrid中不能包含模板列;第二,只能夠?qū)С霎?dāng)前顯示在datagrid的數(shù)據(jù),無法在分頁的情況下導(dǎo)出全部的查詢結(jié)果。 如果大家分析一下Control.RenderControl的方法,就會發(fā)現(xiàn)RenderControl只是把控件的innerHTML導(dǎo)出來,既然如此,完全可以把導(dǎo)出操作放在客戶端來處理。
客戶端導(dǎo)出excel
下面是調(diào)用的例子
這種方法的缺點是: (1)了能夠在客戶端調(diào)用Excel.Application,需要把IE的安全級別設(shè)為“低”。 (2)與方法一相同,還是只能導(dǎo)出當(dāng)前顯示在datagrid里面的數(shù)據(jù),無法導(dǎo)出分頁的數(shù)據(jù)。
終極解決方案:將DataTable導(dǎo)出為excel 好,讓我們快點結(jié)束這篇無聊的post。一般來說,頁面上的datagrid是以查詢得到的一個DataTable為數(shù)據(jù)源的。那么為了把全部數(shù)據(jù)導(dǎo)入excel中,我們只要把DataTable數(shù)據(jù)源輸出為excel就可以了。
需要注意的是,導(dǎo)出excel之前要把datatable的列名更改為客戶要求的文字,就ok了。因為是從DataTable導(dǎo)出的,所以這種方法解決了分頁數(shù)據(jù)的問題,堪稱終極解決方案。
posted on 2012-08-29 09:57 ** 閱讀(404) 評論(0) 編輯 收藏
Powered by: BlogJava Copyright © **