GridView 轉出 Excel 有幾種方法
1. 用 RenderControl() 轉出 HtmlTextWriter ,Response出來 不過只能轉出 .xls 檔 (程式碼在這)
2. 用 ClosedXML 轉出 MemoryStream , 一樣 Response 出來,可轉出 .xlsx 檔 (程式碼在這) (這裡有 ClosedXML 的用法)
3. 用 EPPlus 轉出 MemoryStream,一樣 Response 出來,可轉出 .xlsx 檔 (程式碼在這)
我最後是用了我常用的 EPPlus
動機
我一開始想的很美好,想說 用 GridView 轉出 Excel,這樣轉出的 Excel 格式就會和 GridView 一樣。
結果發現就算用GridView 轉出 HtmlTextWriter ,卻沒辦法把表格框線樣式、背景底色、字型顏色等格式一起轉出,只能轉文字。
所以試到最後還是用原先的 EPPlus,再一行一行設定格式。
說明
第一個方法最需要注意的就是 VerifyRenderingInServerForm 這個 function 一定要加,不然會和我一樣,遇到以下錯誤:
這個錯誤真的是讓我看得霧煞煞。因為我明明就把 GridView 放在 runat=server 的 Form 裡面啦。爬了文才知道要加 VerifyRenderingInServerForm 。
第二種方法 用 ClosedXML 轉出 MemoryStream 以後,會轉出表格格式的EXCEL,EPPlus則是會轉出一般格式的EXCEL。
以上