本專題概要
引言
Word對象模型
建立Word外接程式
小結
一、引言
在上一個專題中主要為大家介紹如何自定義我們的Excel 界面的,然而在這個專題中,我将為大家介紹如何用VSTO來建立Word項目,對于Word的VSTO開發和Excel的開發很類似,你同樣也可以為Word自定義界面的,他們的差別主要在于對象模型的不同,隻要熟悉了Word的對象模型,操作Word也就很簡單了。下面首先就開始介紹Word的對象模型的。
二、Word對象模型
建立Word解決方案和建立Excel解決方案之前都需要對他們的對象模型進行了解,因為隻有了解了他們中各對象的關系,才能更好處理Word和Excel的文檔,下面先給出一張Word對象模型層次結構圖:
看上面朋友們肯定對個對象的關系是有所了解了,但是對于每個對象到底代表什麼意思還是不怎麼明白,下面就具體為大家介紹下每個對象所代表的意思.
Application對象代表Word應用程式,我們打開Word文檔就是開啟了一個Word應用程式,這裡需要注意的是——無論你打開幾個Word文檔,都是在一個Word程序裡進行管理的。它是所有對象的父級(從圖中也可以看出,每個對象都是它的子節點)。
在應用程式外接程式項目中(這個在Excel解決方案裡都有介紹,對于Word也存在應用程式外接程式項目和文檔級項目),我們可以通過下面的方式來獲得Application對象: Globals.ThisAddIn.Application
在文檔級别項目中,我們可以通過ThisDocument類的Application屬性來獲得Application對象,即代碼為: Word.Application app = Globals.ThisDocument.Application;
Document對象代表着一個Word文檔,即使你打開的是一個空文檔,也是有一個Document對象,在我們對Word文檔的内内容進行編輯,修改,删除,添加操作之前,我們都需要提前獲得該對象,獲得焦點的文檔我們稱為活動文檔,我們可以通過Application對象的ActiveDocument屬性來獲得目前活動的文檔,代碼為:
Selection對象代表目前選擇的區域。我們在對Word中内容進行某些操作的時候,例如,改變文本字型大小,此時我們就需要選中該文本,然後設定選中文本的字型大小,這樣選擇的文本就代表一個Selection對象,這裡需要注意的是——Selection對象是一直存在于文檔中的,因為有些朋友會問,如果我們沒有選中任何文本時,是否還有Selection對象呢?答案是肯定的,當我們沒有選擇任何文本時,插入點(即操作文本時都會有一個這個符号“|”,該符号就是代表一個插入點)即是一個Selection對象,并且所選的内容可以包含多個不連續的文本塊。
Range對象代表一個連續的區域,由一個開始字元位置和一個結束字元位置來确定。我們在文檔中定義多個Range對象,看到Range對象,朋友們就會聯想到Selection對象,他們都是代表區域,到底他們有什麼差別呢?對于他們的差別——Range對象在文檔中是不可見的,并且是連續的,而Selection對象是在文檔中可見的,且可以包含多個不連續的文本塊。通俗的說就是,例如,我們想對某些文本改變字型大小的操作,此時我們可以有兩種方式來實作:第一種,就是使用Selection對象來選中該文本再改變其樣式(此時選中的文本我們可以在Word文檔中可以看見,我們可以清楚的明白那些文本需要改變字型),第二種就是使用Range對象來指定一個開始字元(就是一個文字)位置和一個結束字元的位置,這樣在開始字元和結束字元之間就是一個Range對象,然後對該Range對象來設定它的字型樣式,但是這整個過程中我們是看不到那些文本被選中了,是以在應用樣式之前,我們是不知道那些文本會改變字型的,而是用Selection對象卻不同,即使在應用字型樣式之前,我們可以肉眼看出那些文本将會改變字型的。
Bookmark對象即書簽,在現實生活中,我們使用書簽是用來做标記的。同樣Word文檔中也有書簽這個功能,我們可以對Word做一個标記,讓你可以知道上次閱讀到哪裡了,Bookmark就是這樣的一個對象。書簽可以隐藏也可以變得可見,我們可以通過 View對象的ShowBookmarks屬性設定為true或false。
為了幫助更進一步了解這些對象,下面通過一張圖來表示各個對象在一個Word文檔中的對應關系:
三、建立Word外接程式
建立完Word 2010外接程式之後,右鍵項目——>添加——>建立項,選擇功能區(可視化設計器),在名稱部分輸入:“ExportPDFRibbon.cs“;
點選工具箱,在”Office功能區控件"中拖入Menu控件,然後在Menu控件中插入兩個Button按鈕,分别命名為"PDF"和”XPS“
設計RibbonTab,因為上一專題中設計的Ribbon是一個獨立的頁籤,是以在本項目中,我不想建立獨立的Ribbon,想把Ribbon下的控件放在Home頁籤下,為了實作這個目的,必須把下圖中的幾個屬性設定下,具體屬性見下圖:
4. 在ExportPDFRibbon.cs檔案的背景代碼(可以按F7來檢視後天代碼)中插入下面的實作代碼:
通過上面的步驟就可以完成開始提出的需求:把Word文檔儲存為PDF或XPS檔案,具體運作結果為:
點選PDF按鈕之後,會彈出另存為視窗,在彈出的視窗中輸入你想儲存的名稱,點選儲存按鈕之後,此時你可以在儲存的位置中看到儲存的檔案名。
四、小結
到這裡,本專題的内容就介紹完成了,本專題主要介紹了Word對象模型,通過對對象模型中各對象的使用來對Word文檔進行操作,關于對Word文檔更多的操作内容我會放在實作Office自動化專題中向大家介紹,最後實作了一個簡單的需求——把Word檔案轉換為PDF或xps檔案。希望通過本專題大家可以用VSTO技術來進行Word操作,然後在下一個專題中将為大家介紹下OutLook相關的内容。