一位漂亮的OL把Word當(dāng)做文字處理軟件來使用,這無可厚非;但是如果一位帥氣的Developer也僅僅把Word當(dāng)做文字處理軟件來使用,恐怕會(huì)被同行恥笑。在程序員的眼中,Office不僅僅是一套非常流行的辦公軟件,更是一個(gè)成熟的開發(fā)平臺(tái)。Office的應(yīng)用是如此廣泛,幾乎深入到企業(yè)信息化和個(gè)人文檔處理的每個(gè)角落。通過Office開發(fā),可以幫助企業(yè)或者個(gè)人完成很多重復(fù)性的工作,規(guī)律性的工作甚至創(chuàng)造性的工作,正是因?yàn)槿绱耍琌ffice開發(fā)在軟件開發(fā)中顯得越來越重要,已經(jīng)成為商業(yè)軟件開發(fā)的一個(gè)重要領(lǐng)域。
為了支持Office開發(fā),無論是從上層的二次開發(fā)語言VBA,還是底層的Office開發(fā)工具VSTO(Visual Studio Tools for Office),微軟都給予了大力的支持。我們這里按下VBA不表,單說這Visual Studio 2010 CTP中新特性對(duì)Office開發(fā)的支持。
有道是“櫻桃好吃樹難栽,Office好用開發(fā)難”。做過Office開發(fā)的程序員常常會(huì)有這樣的抱怨:“這個(gè)垃圾C#,連個(gè)可選參數(shù)都不支持!”
“COM接口太復(fù)雜繁瑣啦,我都快被折磨死了!”“告訴客戶,他的機(jī)器上必須也安裝Office 2003!Office 2007不支持!?。。?!”
這是因?yàn)镺ffice整個(gè)系統(tǒng)本身非常龐雜,Office對(duì)象模型難于全部掌握,開發(fā)語言對(duì)Office開發(fā)支持不夠等等,這些都使得Office開發(fā)就像一頭笨重的大象,雖然穩(wěn)定,但是行動(dòng)卻有些遲緩,開發(fā)效率不高。
不過這些抱怨很快就會(huì)成為歷史了。在Visual Studio 2010 CTP中,它提供了很多新的特性,來解決上述的這些Office開發(fā)中的主要問題,以更好地支持Office開發(fā)。當(dāng)然,這些特性也可以應(yīng)用在其他場(chǎng)合。這些新的特性包括:
- 動(dòng)態(tài)編程
在前面的文章中我們?cè)?jīng)介紹過,C# 4.0中引入了一種新的靜態(tài)類型dynamic,這使得我們?cè)谑褂肅OM進(jìn)行Office開發(fā)的時(shí)候,無需再進(jìn)行復(fù)雜而繁瑣的對(duì)象類型轉(zhuǎn)換。 - 可選參數(shù)
Office提供的函數(shù)往往有很多參數(shù),在大多數(shù)情況下,很多參數(shù)使用默認(rèn)值就可以了,無需全部指定。但是在C# 3.0中,因?yàn)樗恢С挚蛇x參數(shù),導(dǎo)致每次調(diào)用函數(shù)都必須給定全部參數(shù),代碼繁瑣而臃腫。C# 4.0通過對(duì)可選參數(shù)的支持,很好地解決了這一問題。 - No-PIA部署
以前的Office開發(fā),都要求目標(biāo)機(jī)器(用戶機(jī)器)上同樣安裝了Office,有時(shí)甚至對(duì)Office的版本還有特殊的要求。這給Office程序的部署帶來了極大的困難:目標(biāo)機(jī)器千差萬別,有的安裝了Office,有的沒有安裝,安裝了Office的機(jī)器,Office版本又各不相同。在Visual Studio 2010中,因?yàn)橛辛薔o-PIA部署的支持,這些問題都得到了很好的解決。
有了上述特性的支持,Visual Studio 2010中Office開發(fā)開始變得簡(jiǎn)潔而自然。為了讓大家有更加深刻的體會(huì),下面我們以一個(gè)實(shí)際的例子,來看看這些新特性是如何更好地支持Office開發(fā)的。在這個(gè)例子中,我們將創(chuàng)建一個(gè)表示銀行賬號(hào)的類,然后用這個(gè)類的數(shù)據(jù)填充一個(gè)Excel表格,最后將這個(gè)表格嵌入到一個(gè)Word文檔中。(這里需要說明的是,雖然有了No-PIA部署的支持,目標(biāo)機(jī)器上無需安裝Office,但是開發(fā)機(jī)器上還是需要安裝Office的。)
1. 創(chuàng)建Office開發(fā)項(xiàng)目OfficeDev
啟動(dòng)Visual Studio 2010 CTP,我們創(chuàng)建一個(gè)基于Visual C#的控制臺(tái)應(yīng)用程序(Console Application),同時(shí)確保目標(biāo)平臺(tái)是“.NET Framework 4.0”:
圖1 創(chuàng)建Office開發(fā)項(xiàng)目
要使用托管代碼調(diào)用 Office 應(yīng)用程序功能,必須使用互操作程序集。互操作程序集使托管代碼可以與 Office 應(yīng)用程序的基于 COM 的對(duì)象模型進(jìn)行交互。所以在項(xiàng)目創(chuàng)建完成后,為了進(jìn)行Office開發(fā),我們需要在項(xiàng)目中添加Office互操作程序集的引用。在解決方案瀏覽器(Solution Explorer)中的項(xiàng)目節(jié)點(diǎn)上,我們單擊右鍵,在彈出的上下文菜單中我們選擇“添加引用(Add Reference)”。在彈出的對(duì)話框中,我們選中.NET標(biāo)簽頁中的Microsoft.Office.Interop.Excel, version 12.0和Microsoft.Office.Interop.Word, version 12.0,單擊“OK”將它們添加到剛剛創(chuàng)建的項(xiàng)目OfficeDev中。
圖2 添加互操作程序集
2. 創(chuàng)建和準(zhǔn)備銀行賬號(hào)類Account
在OfficeDev項(xiàng)目中,我們新建一個(gè)類Account,用來表示銀行賬號(hào)。我們將這個(gè)類實(shí)現(xiàn)如下:
public class Account {
public string Name { get; set; }
public double Balance { get; set; }
}4. 將Excel表格嵌入Word文檔
Excel表格填充完成后,我們將這個(gè)表格嵌入到Word文檔中。在主函數(shù)Main()的末尾添加如下代碼,它將創(chuàng)建一個(gè)空的Word文檔,然后通過調(diào)用函數(shù)PasteSpecial(),將Excel表格以鏈接的形式粘貼到Woed文檔中:
var word = new Word.Application();
word.Visible = true;
word.Documents.Add();
word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
NET技術(shù):Visual Studio 2010特性支持Office,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。