C# 在Asp.net 中將DataTable匯出成Excel檔案
將資料庫中的數值匯出Excel,應該是超經典的入門習題之一。 若使用套件有很多方法可達成,這裡討論的是純粹使用oleDB的作法。 手邊以往的程式是從C#改寫成VB.net的版本,但現在改寫為C#,原來的版本卻找不著了,只好重新來過。 在環境部屬上,要考慮.net的應用程式集區必須調整為 32位元,不然會不能執行。 程式上,首先要引入 using System.Data; using System.Data.OleDb; using System.Data.SqlClient; 接著是連線字串。 因為使用單位還是用舊版excel,因此用以下的古早寫法。系統會在指定的路徑中產生空白的Excel檔。 string Xlsstr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=NO\"", path + filename); 然後建立一個 OldDB的連線,組出 Create Table 的語法,將TableSchema塞進去。 using (OleDbConnection XlsConn = new OleDbConnection(Xlsstr)) { .... //組合出 strCreate字串 OleDbCommand command = new OleDbCommand(strCreate, XlsConn); command.ExecuteNonQuery(); } 這當中有一些要注意的細節: (1) 如果要對欄位動手腳、客製化欄位名稱,一定要在建立Table字串的這個地方處理。很奇怪,在後面的程式碼無法再改欄位名稱。 此外,資料庫欄位一般是存英文欄位名稱,但客戶要求的卻是顯示中文表頭。 當然也可以用Select sid as [學號]的方式處裡,但是程式碼不容易維護。 這裡嘗試的方法,是另外去抓資料表欄位內預先定義好的擴充屬性。範例程式碼中是用迴圈一筆筆去找,日後應該可以整個抓回來放在DT或陣列裡,用更節省資源的方法處理。 @"SELECT value ...