我的工作主要是開發專案,分析及設計軟體,以asp.net 為主要實作平台。 在公司內,除了專案的開發外,也負責軟體技術的研發及教育訓練。因此,也常常對內開技術課程,及技術支援。
在開發 asp.net 的專案時,常常被客戶要求將資料匯出成 Excel 檔案。 因此,Study 了許多 Excel 的產生方法。 陳述如下:
關於各個方法的優缺點,可見投影片
投影片見 這裡,範例程式見這裡
OleDb:Excel 97-2003 格式 (xls) 在 32-bit 模式沒問題,現時的 Windows 都有內建 OleDb DriverExcel 97-2003 格式 (xls) 在 64-bit 模式要安裝Office Microsoft Access Database Engine 2010 Redistributable (x64),現時連 Win7 都沒內建 64-bit OleDb DriverExcel 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
VSTO / Excel Interop缺點:1.非常慢,有測試比顯示慢幾百倍2.同時間又只能產生一份文件3.32/64-bit 問題, Excel 32/64-bit 與 Program 32/64-bit 不符合, Program 無法Call Excel4.Excel 版本號,有些客仍用 Office 20005.不能在 Mac / Linux 下運作,因沒有 Excel
OpenXML SDK現在有 SDK 2.0 for 2010版本Strong typed, 結合 LinQ,強大了不少
CrystalReportViewer有32-bit COM object,令Program無法以64-bit 模式執行,又不能在 Linux 執行
NPOI (.NET)1. 可產生 xls (暫時未 support xlsx)2. 32/64-bit OK3. Windows, Mac, Linux OKPOI (Java)1. 可產生 xls, xlsx2. 32/64-bit OK3. Windows, Mac, Linux OK
張貼留言
5 則留言:
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
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
OpenXML SDK
現在有 SDK 2.0 for 2010版本
Strong typed, 結合 LinQ,強大了不少
CrystalReportViewer
有32-bit COM object,令Program無法以64-bit 模式執行,又不能在 Linux 執行
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
張貼留言