Office 客製化開發!VSTO 開發學習資源清單
3 月的時候去 A 公司有被問到 VSTO 的開發相關資源實在太少了
而 5 月的時候在 K 公司又被問到一模一樣的問題
的確 Office 客製化開發在國內的討論比較少
不然就是認為
Office 客製化就只有 VBA ( 很囧 )
或是
Web 版的 Excel ActiveX 元件 ( 本機 )
--------- 名詞 --------------------------------
VBA = Visual Basic for Application
內嵌在 Word、 Excel 文件中的 一種 直譯式Script ( 可想像成 JavaScript )
VSTO = Visual Studio Tool for Office
OBA = Office Business Application
這兩種名稱都是指 Office 2007 / 2010 用 .NET 進行開發
簡單來講一個是從工具的角度、一個是從 應用面的角度
為了統一,之後都會用 VSTO
-----------------------------------------------------
上面已經有提到 VSTO 可以用 .NET
這也代表 VSTO 可以用 「物件」的方式進行 資料操作、Ribbon 工具列、外掛
都是原本 VBA 沒辦法做到的事 ( 資料可以單一寫入卻沒辦法 Binding )
像是要將 遠端 Web AP 裡的資料直接顯示到 Excel 的話
========= Before ==============
以前要先在 Server 端開啟 Excel 後
一個一個把資料寫入到 Cell
產生 Excel 檔後再做下載的動作
若是下載的資料條件不符的話!
以上的動作就要再重新再來一次
========= After ==============
現在就可以直接在 本機開啟 Excel 後
透過 Web Service 直接取得指定的資料
並將 Data Table Binding 到 Excel 的清單中
對使用者來說非常的直覺
而且不只下載!連 新增、修改都可以在 Excel 編輯完後
按一個鈕後,直接更新回 Server 上
可以想想看,這樣子使用者節省了多少操作動作 和 時間
而且資料整合上會更在的實用,使用者也可以隨心所欲地做 排序、樞紐
參考資源
======== Office VSTO 相關 ==================
依 Office 應用程式和專案類型提供的功能
http://msdn.microsoft.com/zh-tw/library/aa942839.aspx
全域存取 Office 專案中的物件
http://msdn.microsoft.com/zh-tw/library/bhczd18c.aspx
Office 方案在 Visual Studio 中的架構
http://msdn.microsoft.com/zh-tw/library/zkhw8h59.aspx
Visual Studio Tools for Office Runtime 概觀
http://msdn.microsoft.com/zh-tw/library/bb608603.aspx
在應用程式層級增益集中呼叫其他 Office 方案的程式碼
http://msdn.microsoft.com/zh-tw/library/bb608621.aspx
=========== Action Pane ======================
執行窗格概觀
http://msdn.microsoft.com/zh-tw/library/7we49he1.aspx
How Do I: Use WPF Controls Inside an Excel Actions Pane?
http://msdn.microsoft.com/zh-tw/vbasic/cc337991.aspx
HOW TO:將執行窗格加入至 Excel 活頁簿
http://msdn.microsoft.com/zh-tw/library/e3zbk0hz.aspx
HOW TO:將執行窗格加入至 Word 文件
http://msdn.microsoft.com/zh-tw/library/kfzd656e.aspx
ActionsPane 介面 ( API )
http://msdn.microsoft.com/zh-tw/library/microsoft.office.tools.actionspane.aspx
=========== Task Pane ======================
自訂工作窗格概觀
http://msdn.microsoft.com/zh-tw/library/aa942864.aspx
Office 文件上的 Windows Form 控制項概觀
http://msdn.microsoft.com/zh-tw/library/0x6hstz2.aspx
=== 快取資料 ( 未安裝 Office 時可直接修改 ) ====
快取資料
http://msdn.microsoft.com/zh-tw/library/75akte27.aspx
存取伺服器文件中的資料
http://msdn.microsoft.com/zh-tw/library/427e3fw2.aspx
文件層級自訂中的快取資料
http://msdn.microsoft.com/zh-tw/library/xst4e83b.aspx
HOW TO:從伺服器的活頁簿中擷取快取資料
http://msdn.microsoft.com/zh-tw/library/8haz2xht.aspx
HOW TO:將資料插入伺服器上的活頁簿中
http://msdn.microsoft.com/zh-tw/library/kf4y44xw.aspx
========== Ribbon =================================
功能區概觀
http://msdn.microsoft.com/zh-tw/library/bb386097.aspx
=========== 資料寫入 ( XML ) ====================
HOW TO:將自訂 XML 組件加入至文件層級自訂
http://msdn.microsoft.com/zh-tw/library/bb608627.aspx
HOW TO:將自訂 XML 組件加入至文件而不啟動 Microsoft Office
http://msdn.microsoft.com/zh-tw/library/bb608597.aspx
======== 開發 ========================
Office 方案開發概觀
http://msdn.microsoft.com/zh-tw/library/hy7c6z9k.aspx
撰寫 Office 方案中的程式碼
http://msdn.microsoft.com/zh-tw/library/bb608596.aspx
在 Office 方案中使用 Visual Basic 或 Visual C# 進行程式設計
http://msdn.microsoft.com/zh-tw/library/522xhsa3.aspx
使用 Excel 的逐步解說
http://msdn.microsoft.com/zh-tw/library/d7f63219.aspx
逐步解說:建立 Excel 的第一個應用程式層級增益集
http://msdn.microsoft.com/zh-tw/library/cc668205.aspx
Office 程式開發範例和逐步解說
http://msdn.microsoft.com/zh-tw/library/z63ctsh2.aspx
在 Office 文件中保存動態控制項
http://msdn.microsoft.com/zh-tw/library/cc442765.aspx
HOW TO:將新資料列加入 ListObject 控制項時驗證資料
http://msdn.microsoft.com/zh-tw/library/ms178773.aspx
ListObject.Change 事件
http://msdn.microsoft.com/zh-tw/library/microsoft.office.tools.excel.listobject.change.aspx
逐步解說:文件層級專案中的複雜資料繫結
http://msdn.microsoft.com/zh-tw/library/ms178806.aspx
HOW TO:以 Office 多語系使用者介面為目標
======== 應用程式層級 =====================
應用程式層級增益集程式設計入門
http://msdn.microsoft.com/zh-tw/library/ms268878.aspx
應用程式層級增益集程式設計
http://msdn.microsoft.com/zh-tw/library/bb157876.aspx
逐步解說:建立 Excel 的第一個應用程式層級增益集
http://msdn.microsoft.com/zh-tw/library/cc668205.aspx
應用程式層級增益集的登錄項目
http://msdn.microsoft.com/zh-tw/library/bb386106.aspx
========== 佈署 ==================================
部署 Office 方案
http://msdn.microsoft.com/zh-tw/library/bb386179.aspx
Office 方案的部署必要條件
http://msdn.microsoft.com/zh-tw/library/bb608617.aspx
HOW TO:在使用者電腦上安裝必要條件來執行 Office 方案
http://msdn.microsoft.com/zh-tw/library/bb608608.aspx
Office 方案中的應用程式和部署資訊清單
http://msdn.microsoft.com/zh-tw/library/a3swb498.aspx
逐步解說:在 ClickOnce 安裝後將文件複製到使用者電腦
http://msdn.microsoft.com/zh-tw/library/dd465291.aspx
===================================================
Office 方案疑難排解
http://msdn.microsoft.com/zh-tw/library/8w9k6s00.aspx
升級和移轉 Office 方案 (.NET 4)
http://msdn.microsoft.com/zh-tw/library/k2xkefex.aspx
========== 其他 ==================================
DataTable 資料列狀態和資料列版本
http://msdn.microsoft.com/zh-tw/library/ww3k31w0(v=VS.100).aspx
DataTableExtensions Class
http://msdn.microsoft.com/en-us/library/bb155261.aspx
Linq:轉換成 DataTable
Grant Barrington 的文章
Using Reflection to Determine whether an Type is Nullable And Get the underlying Type
範例網站