從 VBA 巨集到現代 Office App,Excel 開發經歷了多次技術演進。本文系統梳理六大主流開發模式——VBA、Shared Add-in、VSTO、Office App、XLL、OpenXML SDK——的架構特點、優缺點與適用場景,並提供企業級專案的技術選型決策框架。
定位:最早的內建巨集語言,1994 年 Excel 5.0 引入。
優點:門檻極低、非程式設計師也能上手、可呼叫 COM 元件、廣泛用於辦公自動化腳本。
缺點:
典型場景:簡易試算表自動化、UDF/RTD 函數原型、快速原型驗證。
定位:使用 VB6/C++ 開發的 COM 元件,註冊至系統登錄供所有 Office 應用程式共用。
優點:
缺點:開發門檻高、需手動實作 IRibbonExtensibility 等介面、部署需註冊 COM、缺乏現代 IDE 支援。
經典案例:GeodesiX(Excel 地理資訊外掛,整合 Google Maps)。
定位:.NET 平台上的 Office 開發主流,對 Office 物件模型進行 Managed Wrapper。
版本對照表
| VSTO 版本 | .NET Framework | 支援 Office 版本 |
|---|---|---|
| VSTO 1.0 | .NET 1.0 | Office 2003+ |
| VSTO 2.0 | .NET 2.0 | Office 2003/2007 |
| VSTO 3.0 | .NET 3.5 | Office 2007/2010 |
| VSTO 4.0 | .NET 4.0 | Office 2010/2013 |
兩種專案類型:
VSTO vs Shared Add-in 關鍵差異
| 維度 | Shared Add-in | VSTO Add-in |
|---|---|---|
| 跨應用程式 | 單一 DLL 可同時服務 Excel/Word/Outlook | 專屬單一宿主(Excel 或 Word) |
| UI 開發 | 手動實作三大介面,代碼量大 | 設計師拖拉元件,支援設計時預覽 |
| 安全模型 | 無 CAS 需求 | .NET CAS / ClickOnce / Authenticode |
| AppDomain 隔離 | 無 | 每個 Add-in 獨立 AppDomain,互不干擾 |
| 預設部署位置 | HKLM (Machine-wide) | HKCU (Current User) |
企業級 VSTO 經典案例:SQL Server Data Mining、PowerPivot、Team Foundation、Oracle BI、Acrobat Reader、萬得資訊財經外掛。
定位:Office 2013/365 引入的 Web 技術外掛,基於 JavaScript/HTML/CSS,運行於沙箱環境。
核心優勢:
限制:權限受沙箱限制、無法存取本地檔案系統、需網路連線。
定位:C/C++ 開發的原生 DLL,直接呼叫 Excel C API,效能最高。
代表專案:Excel-DNA(開源,讓 .NET 開發者輕鬆編寫高效能 UDF/RTD/XLL)。
優勢:
案例:finansu(整合 Bloomberg/Google/Yahoo 財經資料,大量使用 Excel-DNA 的 RTD 與非同步 UDF)。
定位:無需安裝 Office,直接操作 *.xlsx (OOXML) 檔案的純 .NET/Java 程式庫。
適用場景**:伺服器端批量產生報表、資料匯出、檔案合併分割、雲端服務後端。
效能優勢**:比自動化 COM 物件快數十倍,且無需 Office 授權。
根據專案需求回答以下三個關鍵問題:
後續將深入講解:Shared Add-in / VSTO 實戰、Ribbon/Task Pane 開發、Excel 物件模型、同步/非同步 UDF、RTD 即時刷新、部署與效能調優、多版本相容 Hack 技巧等。
作者:yangecnu (博客園) | 出處:https://www.cnblogs.com/yangecnu/