1. 程式人生 > >ASP.NET 中 DataGrid 匯出到 Excel 的封裝實現

ASP.NET 中 DataGrid 匯出到 Excel 的封裝實現

最近的專案中要大量用到 DataGrid 中的資料匯出到 Excel 的方法,且資料量比較大。針對這個我做了一個匯出 Excel 的幫助類。
之前在網上我搜索到很多匯出 Excel 的程式碼,但是都不盡如人意。一般有下列幾種方法:

1. 用 Excel.Application 物件逐單元格的填充資料。
這個辦法由於是操作 COM 元件來進行,而 .NET 呼叫 COM 是要經過一層 wrapper 的,必然導致效率不高。還有一個原因是, Excel 不是針對多執行緒而設計的, 在大的併發需求下,可能會出現問題。因此一般這個方法只推薦適用於 Intranet.

2.  用 DataGrid 的 RenderControl 方法直接輸出到一個 HtmlTextWriter 物件。 這個辦法比較簡單,因為是輸出純 html, 不涉及服務端 Excel 物件的初始化帶來的開銷。所以效能應該是比較好的。但是我看了現有的一些例子都是隻能輸出一頁的, 也就是說不適用於分頁的 DataGrid.

3. 用 OWC, 同樣,由於是 COM 元件,存在效能問題。

針對這個情況我決定採用 2 作為最終輸出的方法,在記憶體中構造不分頁的 DataGrid, 然後 RenderControl 的方法。(要傳入資料來源作為引數)。
因為我加了自定義列標題和欄位列表的功能,所以目前的資料來源只能是類似 DataTable 這樣的,至於一些其他可以繫結到 DataGrid 的型別比如 IListSource, IEnumerable, 由於內部不帶有欄位名稱,標題資訊等內容,分析起來非常複雜。簡單起見,我忽略了這些,而僅僅接收 DataTable 作為資料來源。

程式碼在這裡:

http://www.cnblogs.com/rchen/articles/100649.html