VSTO開發概述

VSTO開發概述

劉永富


本文向讀者介紹使用Visual Studio編程工具開發Office插件的基礎入門知識.

VSTO是Visual Studio Tools for Office的簡稱,Visual Studio是微軟開發的最爲成熟的編程套件,包含C#,VB.Net等多種語言,由於VS功能的強大和方便,而且微軟不斷對其進行版本更新,所以使用VS開發Office是必然的趨勢.

第一部分:VSTO開發環境配置

這部分談談要進行VSTO開發,需要具備哪些條件.從大的方面講,需要 開發人員 + 操作系統 + Office + Visual Studio,這四個方面.

也就是說,需要會編程的人,需要在合適的操作系統安裝Office以及Visual Studio.

1.1 對開發人員的要求

進行VSTO開發,要具有編程的基礎,對Office操作比較熟練,最好是有VBA編程的基礎.

1.2 操作系統的選擇

Windows XP或者Win7(32bit)都可以進行VSTO開發.

1.3 Office的安裝

Office常用版本有2003 2007 2010 2013等,具體安裝哪一個版本,根據開發人員或者用戶需求而定,這裏強調一點,2003版和以後的高級版本,最大的不同是:高級版本的界面是功能區形式的,而不是傳統的工具欄形式,因此對於VSTO開發也要注意這一點區別.

1.4 Visual Studio的安裝

Visual Studio常用版本有VS2005 2008 2010 2013 2015等,如果要進行VSTO開發,在安裝VS的過程中,注意勾選"安裝VSTO"這一項,即可.如果不勾選,那麼你只能使用VS進行常規的窗體開發或者類庫開發,這和Office就沒關係了.

那麼具體Visual Studio安裝哪一個版本比較恰當呢,這點和操作系統以及Office版本有很大關係,如果你的操作系統是XP,那麼VS只能安裝2010及其以下版本,而VS2012及其以上需要安裝在Win7上面.

另外一點,你還要明確地知道,你要爲哪一個版本的Office進行開發,一般來說,Office版本越高,要求的VS版本也越高,大家看看下面的圖示就明白了.


wKiom1biUzmhigPLAAYBd_ntB28831.jpg



從上圖可以看出,如果你要爲Office2003開發,使用VS2005/2008比較恰當,如果爲Office2010開發,使用VS2010/2012比較恰當.

在這裏,我給出兩套最優的開發組合方案:

(一) XP或win7 + Office 2003 +VS 2008,這個方案面向傳統用戶.

(二) XP + Office 2010 + VS 2010,這個方案面向習慣於Office高級版本的用戶.

或者 Win7 + Office 2010 + VS 2012.

1.5 開發語言設置

VSTO的開發有兩種語言可選 Visual C# 或 Visual Basic,在VS安裝的過程中,可以選擇安裝.同時在創建VSTO項目的時候,也可以針對語言進行選擇.


wKioL1biU_OjMZoiAALCyR1a_AU800.jpg


如上面圖示,採用了VS2008創建新的VSTO項目,使用的語言是Visual C#,Office版本是2003

第二部分:VSTO開發類型

大體上分,VSTO可以開發Office外接程序(加載項),以及文檔級開發.

2.1 Office外接程序

顧名思義,外接程序是面向Office應用程序級別的一個COM加載項,他的作用範圍是應用程序,而不是某個文檔.我們知道任何程序都有一個入口點,比如我們進行Windows窗體開發,一般程序是從Form的Load事件進去,從而裝載其他部分,如果沒有窗體,一般是從Main函數開始運行.

而對於VSTO外接程序,他的入口函數是 ThisAddin_Startup,這個函數是一個事件過程,也就是說,當在Office中加載這個COM的時候,首先運行這個函數.當編譯成功後,會在項目文件夾的Debug文件夾生成相應的dll文件,和一些其他相關文件,這些文件就是VSTO的最終作品了.

2.2 Office文檔級開發

接下來說說文檔級的開發,這種開發是面向單一文檔的,比如我們創建項目的時候,選擇的是Excel workbook,那麼你所做的一切,都是圍繞這個工作簿進行的,和其他文檔沒任何關係.最後生成的作品,是這個工作簿以及和他相關的dll文件.

至於說在VSTO中要對Office進行哪些操作,這就和具體需求有關了,具體說用Visual C#或VB.Net如何書寫這些代碼,這就需要大家學習C#語法知識,以及學習如何使用C#操作和控制Office組件這方面的知識了.如果有VBA的經驗,學習這方面也不太難.

另外,VSTO項目和常規的C#窗體應用程序或控制檯程序,最大的區別是,項目創建的時候,自動添加VSTO所需的外部引用.

第三部分:VSTO界面開發介紹

其實,最簡單的VSTO程序,就是手工創建一個Excel外接程序項目之後,在自動生成的ThisAddin_Startup事件過程中寫入:

private void ThisAddIn_Startup(object sender, System.EventArgs e)

        {

            MessageBox.Show("VSTO,我來了");

         }


其他事情什麼都別做了.直接按下F5測試,這就是一個完整的VSTO程序.

實際上,VSTO還可以爲Office進行界面的設計,從大的類別看有以下幾種:

3.1 修改Office的工具欄

這一點設計是面向Office2003版的,一般在VSTO的啓動事件過程中,對Commandbars對象進行操作即可,這和VBA非常類似.


wKioL1biVCeTnXZlAAN01100aPc756.jpg


3.2 功能區定製

這一設計是面向Office2007以上版本的,可以在VSTO中自定義功能區的XML,當用戶點擊功能區中的按鈕後,會響應VSTO中的相關過程函數.這一部分的開發,需要掌握CustomUI的知識.

3.3 爲Office增加任務窗格

VSTO開發很重要的一個理念就是把C#的窗體和控件能夠用在Office中,當然,大家有了上面所講的知識,就很輕鬆地做到當VSTO加載項加載的時候,在Office中呈現出一個C#的Form,方法很簡單,就是在項目中添加一個窗體,然後在在加載項的啓動事件中Show一下這個窗體即可.遺憾的是這種窗體和Excel看上去不是一體的,用起來不美觀也不方便.爲此,我們可以往Office中引入任務窗格(Custom Task Pane,即CTP)這一對象.開發人員可以加入一些用戶控件(UserControl),使其呈現在Office界面中.


wKioL1biVfbT867BAAjassNz-RM021.jpg


3.4 文檔操作窗格

如果要爲某一文檔自定義窗格,必須創建文檔類型的VSTO項目,而不是加載項.但是這種窗格不叫做任務窗格,而叫文檔操作窗格(ActionsPane).這種對象的Parent是ThisWorkbook或ThisDocument,而不是ThisAddin.


wKioL1biVnDzsQMpAASAkRkQX9g798.jpg


第四部分:其他相關主題


4.1 使用C#開發Excel自定義函數(UDF)


4.2 VSTO中如何處理應用程序或文檔的事件


4.3 C#窗體與控件的使用技巧


4.4 C#項目引用的管理,外部對象的使用


......更多內容請大家關注我的課程,我們的VSTO開發羣是ryueifu_VBA:61840693.


wKiom1biV2rgoj-xAATBvRyHtT4725.jpg




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章