作者:蔡佳燕 / 臺灣大學計算機及資訊網路中心程式設計組資訊工程師
筆者開發校務系統時,業務單位承辦人時常會提出這樣的需求:將資料匯出到Excel檔。多方參考大家的作法後,在此也分享自己在C#.NET的作法。
前言
關於匯出到Excel檔,目前筆者有兩種作法:一種是真的製作出Excel格式的檔案,另外一種則是用html <table><tr><td >…等標籤語法來製作表格,將其副檔名設定為.xls。一般而言,大家電腦的設定根據副檔名就會以Microsoft Excel來開啟它。
真正Excel格式的報表
以財物管理系統的使用人使用財物明細表為例:
1. 先做出樣板檔(步驟如圖1、圖2及圖3)
2. 程式撰寫輸出資料到樣板檔,要使用System.Data.OleDb,所以在程式檔中要加using System.Data.OleDb;程式的撰寫如圖4,輸出結果如圖5
圖1:輸出的欄位要設定名稱,其下方要有空白的欄位
圖2:使用Excel公式的名稱管理員建立資料表及欄位
圖3:將欄位名稱隱藏,輸出的報表才不會紊亂
圖4:開啟樣板檔,並寫入資料
圖5:資料寫入後的檔案樣貌
HTML表格標籤
筆者常用到的是匯出GridView的資料,所以以此為例,寫下圖6的sample code,輸出檔的副名雖為.xls,但是檔案實質格式為HTML。另外,有一種作法是直接寫到網頁上,sample code請參考圖7。
要注意的是,GridView的使用要在程式端加入圖8的程式。
圖6
圖7:輸出至網頁上
圖8:避免「型別 xxx 的控制項 xxx 必須置於有 runat=server 的表單標記之中。」的問題
兩個做法的優缺點
優缺點; |
Excel格式的報表 |
HTML表格標籤 |
優點 |
1.可以完全利用Excel的功能:例如列印時可加頁碼,可加表頭
2.資料筆數多時,檔案不會過大
3.版面可較美觀 |
1.不用預先準備樣板檔
2.欄位數量隨時可異動,只要程式配合好 |
缺點 |
1.要耗時準備樣板檔
2.版面固定,較無彈性,欄位若有異動,就需更改樣板檔 |
1.Excel開啟時會有檔案疑似毀損的警示語要略過
2.資料多時,因為標籤語法隨著增長,檔案容易過大 |
結語
本文所舉的例子及程式碼皆是以最簡單的方式呈現,第二例中的GridView資料也可應用到第一例中。要匯出的資料來源與要使用何種格式的檔案匯出並無直接關連。而HTML 格式的檔案,使用Microsoft Excel開啟後,一般而言也可以另存成真正EXCEL格式的檔案,大家可以評估自己的需求,使用最適合的方式來達到自己的目的。