Office 客製化開發!VSTO 開發學習資源清單

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

LINQ - DataTable 與 List 轉換

[C#]List To DataTable

 

Grant Barrington 的文章

Using Reflection to Determine whether an Type is Nullable And Get the underlying Type

http://weblogs.asp.net/grantbarrington/archive/2009/03/17/using-reflection-to-determine-whether-an-type-is-nullable-and-get-the-underlying-type.aspx

 

 

範例網站

http://msdn.microsoft.com/en-US/vsto