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