2008年7月21日 星期一

產生 Excel 檔的方法

在開發 asp.net 的專案時,常常被客戶要求將資料匯出成 Excel 檔案。

因此,Study 了許多 Excel 的產生方法。
陳述如下:

  1. 產生 CSV格式
  2. 利用GridView Control
  3. 利用 OleDb
  4. VSTO
  5. Xml 格式的 Excel 檔
  6. OpenXmlSDK
  7. Microsoft ReportViewer 匯出 Excel
  8. Crystal ReportViewer 匯出 Excel

關於各個方法的優缺點,可見投影片

投影片見 這裡,範例程式見這裡

5 則留言:

  1. OleDb:
    Excel 97-2003 格式 (xls) 在 32-bit 模式沒問題,現時的 Windows 都有內建 OleDb Driver

    Excel 97-2003 格式 (xls) 在 64-bit 模式要安裝Office Microsoft Access Database Engine 2010 Redistributable (x64)
    ,現時連 Win7 都沒內建 64-bit OleDb Driver

    Excel 2007/2010 格式 (xlsx) 在 32/64-bit 都要安裝Office Microsoft Access Database Engine 2010 Redistributable (64-bit Windows: 因相同版本的x64跟x86不可並存,所以 裝 2010 的 x64版, 2007 的 x86版)
    (32-bit Windows: 2007或2010都可)
    要提醒 User 安裝合適的 Engine

    回覆刪除
  2. VSTO / Excel Interop
    缺點:
    1.非常慢,有測試比顯示慢幾百倍
    2.同時間又只能產生一份文件
    3.32/64-bit 問題, Excel 32/64-bit 與 Program 32/64-bit 不符合, Program 無法Call Excel
    4.Excel 版本號,有些客仍用 Office 2000
    5.不能在 Mac / Linux 下運作,因沒有 Excel

    回覆刪除
  3. OpenXML SDK
    現在有 SDK 2.0 for 2010版本
    Strong typed, 結合 LinQ,強大了不少

    回覆刪除
  4. CrystalReportViewer
    有32-bit COM object,令Program無法以64-bit 模式執行,又不能在 Linux 執行

    回覆刪除
  5. NPOI (.NET)
    1. 可產生 xls (暫時未 support xlsx)
    2. 32/64-bit OK
    3. Windows, Mac, Linux OK

    POI (Java)
    1. 可產生 xls, xlsx
    2. 32/64-bit OK
    3. Windows, Mac, Linux OK

    回覆刪除