劉永富
本文向讀者介紹使用Visual Studio編程工具開發(fā)Office插件的基礎(chǔ)入門知識(shí).
VSTO是Visual Studio Tools for Office的簡(jiǎn)稱,Visual Studio是微軟開發(fā)的最為成熟的編程套件,包含C#,VB.Net等多種語言,由于VS功能的強(qiáng)大和方便,而且微軟不斷對(duì)其進(jìn)行版本更新,所以使用VS開發(fā)Office是必然的趨勢(shì).
第一部分:VSTO開發(fā)環(huán)境配置
這部分談?wù)勔M(jìn)行VSTO開發(fā),需要具備哪些條件.從大的方面講,需要 開發(fā)人員 + 操作系統(tǒng) + Office + Visual Studio,這四個(gè)方面.
也就是說,需要會(huì)編程的人,需要在合適的操作系統(tǒng)安裝Office以及Visual Studio.
1.1 對(duì)開發(fā)人員的要求
進(jìn)行VSTO開發(fā),要具有編程的基礎(chǔ),對(duì)Office操作比較熟練,最好是有VBA編程的基礎(chǔ).
1.2 操作系統(tǒng)的選擇
Windows XP或者Win7(32bit)都可以進(jìn)行VSTO開發(fā).
1.3 Office的安裝
Office常用版本有2003 2007 2010 2013等,具體安裝哪一個(gè)版本,根據(jù)開發(fā)人員或者用戶需求而定,這里強(qiáng)調(diào)一點(diǎn),2003版和以后的高級(jí)版本,最大的不同是:高級(jí)版本的界面是功能區(qū)形式的,而不是傳統(tǒng)的工具欄形式,因此對(duì)于VSTO開發(fā)也要注意這一點(diǎn)區(qū)別.
1.4 Visual Studio的安裝
Visual Studio常用版本有VS2005 2008 2010 2013 2015等,如果要進(jìn)行VSTO開發(fā),在安裝VS的過程中,注意勾選"安裝VSTO"這一項(xiàng),即可.如果不勾選,那么你只能使用VS進(jìn)行常規(guī)的窗體開發(fā)或者類庫開發(fā),這和Office就沒關(guān)系了.
那么具體Visual Studio安裝哪一個(gè)版本比較恰當(dāng)呢,這點(diǎn)和操作系統(tǒng)以及Office版本有很大關(guān)系,如果你的操作系統(tǒng)是XP,那么VS只能安裝2010及其以下版本,而VS2012及其以上需要安裝在Win7上面.
另外一點(diǎn),你還要明確地知道,你要為哪一個(gè)版本的Office進(jìn)行開發(fā),一般來說,Office版本越高,要求的VS版本也越高,大家看看下面的圖示就明白了.
從上圖可以看出,如果你要為Office2003開發(fā),使用VS2005/2008比較恰當(dāng),如果為Office2010開發(fā),使用VS2010/2012比較恰當(dāng).
在這里,我給出兩套最優(yōu)的開發(fā)組合方案:
(一) XP或win7 + Office 2003 +VS 2008,這個(gè)方案面向傳統(tǒng)用戶.
(二) XP + Office 2010 + VS 2010,這個(gè)方案面向習(xí)慣于Office高級(jí)版本的用戶.
或者 Win7 + Office 2010 + VS 2012.
1.5 開發(fā)語言設(shè)置
VSTO的開發(fā)有兩種語言可選 Visual C# 或 Visual Basic,在VS安裝的過程中,可以選擇安裝.同時(shí)在創(chuàng)建VSTO項(xiàng)目的時(shí)候,也可以針對(duì)語言進(jìn)行選擇.
如上面圖示,采用了VS2008創(chuàng)建新的VSTO項(xiàng)目,使用的語言是Visual C#,Office版本是2003
第二部分:VSTO開發(fā)類型
大體上分,VSTO可以開發(fā)Office外接程序(加載項(xiàng)),以及文檔級(jí)開發(fā).
2.1 Office外接程序
顧名思義,外接程序是面向Office應(yīng)用程序級(jí)別的一個(gè)COM加載項(xiàng),他的作用范圍是應(yīng)用程序,而不是某個(gè)文檔.我們知道任何程序都有一個(gè)入口點(diǎn),比如我們進(jìn)行Windows窗體開發(fā),一般程序是從Form的Load事件進(jìn)去,從而裝載其他部分,如果沒有窗體,一般是從Main函數(shù)開始運(yùn)行.
而對(duì)于VSTO外接程序,他的入口函數(shù)是 ThisAddin_Startup,這個(gè)函數(shù)是一個(gè)事件過程,也就是說,當(dāng)在Office中加載這個(gè)COM的時(shí)候,首先運(yùn)行這個(gè)函數(shù).當(dāng)編譯成功后,會(huì)在項(xiàng)目文件夾的Debug文件夾生成相應(yīng)的dll文件,和一些其他相關(guān)文件,這些文件就是VSTO的最終作品了.
2.2 Office文檔級(jí)開發(fā)
接下來說說文檔級(jí)的開發(fā),這種開發(fā)是面向單一文檔的,比如我們創(chuàng)建項(xiàng)目的時(shí)候,選擇的是Excel workbook,那么你所做的一切,都是圍繞這個(gè)工作簿進(jìn)行的,和其他文檔沒任何關(guān)系.最后生成的作品,是這個(gè)工作簿以及和他相關(guān)的dll文件.
至于說在VSTO中要對(duì)Office進(jìn)行哪些操作,這就和具體需求有關(guān)了,具體說用Visual C#或VB.Net如何書寫這些代碼,這就需要大家學(xué)習(xí)C#語法知識(shí),以及學(xué)習(xí)如何使用C#操作和控制Office組件這方面的知識(shí)了.如果有VBA的經(jīng)驗(yàn),學(xué)習(xí)這方面也不太難.
另外,VSTO項(xiàng)目和常規(guī)的C#窗體應(yīng)用程序或控制臺(tái)程序,最大的區(qū)別是,項(xiàng)目創(chuàng)建的時(shí)候,自動(dòng)添加VSTO所需的外部引用.
第三部分:VSTO界面開發(fā)介紹
其實(shí),最簡(jiǎn)單的VSTO程序,就是手工創(chuàng)建一個(gè)Excel外接程序項(xiàng)目之后,在自動(dòng)生成的ThisAddin_Startup事件過程中寫入:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
MessageBox.Show("VSTO,我來了");
}
其他事情什么都別做了.直接按下F5測(cè)試,這就是一個(gè)完整的VSTO程序.
實(shí)際上,VSTO還可以為Office進(jìn)行界面的設(shè)計(jì),從大的類別看有以下幾種:
3.1 修改Office的工具欄
這一點(diǎn)設(shè)計(jì)是面向Office2003版的,一般在VSTO的啟動(dòng)事件過程中,對(duì)Commandbars對(duì)象進(jìn)行操作即可,這和VBA非常類似.
3.2 功能區(qū)定制
這一設(shè)計(jì)是面向Office2007以上版本的,可以在VSTO中自定義功能區(qū)的XML,當(dāng)用戶點(diǎn)擊功能區(qū)中的按鈕后,會(huì)響應(yīng)VSTO中的相關(guān)過程函數(shù).這一部分的開發(fā),需要掌握CustomUI的知識(shí).
3.3 為Office增加任務(wù)窗格
VSTO開發(fā)很重要的一個(gè)理念就是把C#的窗體和控件能夠用在Office中,當(dāng)然,大家有了上面所講的知識(shí),就很輕松地做到當(dāng)VSTO加載項(xiàng)加載的時(shí)候,在Office中呈現(xiàn)出一個(gè)C#的Form,方法很簡(jiǎn)單,就是在項(xiàng)目中添加一個(gè)窗體,然后在在加載項(xiàng)的啟動(dòng)事件中Show一下這個(gè)窗體即可.遺憾的是這種窗體和Excel看上去不是一體的,用起來不美觀也不方便.為此,我們可以往Office中引入任務(wù)窗格(Custom Task Pane,即CTP)這一對(duì)象.開發(fā)人員可以加入一些用戶控件(UserControl),使其呈現(xiàn)在Office界面中.
3.4 文檔操作窗格
如果要為某一文檔自定義窗格,必須創(chuàng)建文檔類型的VSTO項(xiàng)目,而不是加載項(xiàng).但是這種窗格不叫做任務(wù)窗格,而叫文檔操作窗格(ActionsPane).這種對(duì)象的Parent是ThisWorkbook或ThisDocument,而不是ThisAddin.
第四部分:其他相關(guān)主題
4.1 使用C#開發(fā)Excel自定義函數(shù)(UDF)
4.2 VSTO中如何處理應(yīng)用程序或文檔的事件
4.3 C#窗體與控件的使用技巧
4.4 C#項(xiàng)目引用的管理,外部對(duì)象的使用
聯(lián)系客服