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 則留言:

Linquize 提到...

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

Linquize 提到...

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

Linquize 提到...

OpenXML SDK
現在有 SDK 2.0 for 2010版本
Strong typed, 結合 LinQ,強大了不少

Linquize 提到...

CrystalReportViewer
有32-bit COM object,令Program無法以64-bit 模式執行,又不能在 Linux 執行

Linquize 提到...

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

Share with Facebook