標籤:記錄 註冊表 模式 調用 最簡 種類 user web 單擊
第二部分:.NET中的Office編程
本書前兩章介紹了Office物件模型和Office PIA。 您還看到如何使用Visual Studio使用VSTO的功能構建文檔中的控制台應用程式,附加元件和代碼。 本書的第二部分更深入地介紹了Office物件模型。 如果您只對Excel開發感興趣,請閱讀第3章至第5章。如果您只對Word開發感興趣,請閱讀第6章至第9章。如果您只對Outlook開發感興趣,請閱讀第7章至第11章。如果您只感興趣 在InfoPath開發中,閱讀第12章。
第3章 Excel編程
自訂Excel的方法
Excel是Office系列中經常被編程的應用程式。 Excel具有非常豐富的物件模型,其中196個對象組合有超過4500個屬性和方法。它支援多種用於整合代碼的模型,包括文檔中的附加元件和代碼。大多數這些型號最初設計為允許以VB 6,VBA,C或C ++編寫的COM組件的整合。然而,通過COM互操作,用C#或Visual Basic編寫的管理對象可以偽裝成COM對象並參與大多數這些模型。本章簡要介紹了您可以將代碼與Excel整合的幾種方法,並將其引用到更深入討論這些方法的其他章節。本章還探討了為Excel建立使用者定義的函數,並介紹了Excel物件模型。
自動執行
如第2章“Office解決方案簡介”中所述,與Excel整合的最簡單的方法是從控制台應用程式或Windows Forms應用程式啟動Excel,並從外部程式自動執行。第2章提供了自動執行Word的樣本。
COM附加元件
Excel可以載入一個COM附加元件,它是一個包含實現IDTExtensibility2的類的DLL。實現IDTExtensibility2的類必須在註冊表中註冊,以便它可以被發現和通話,就像擴充Excel的其他COM附加元件一樣。
COM附加元件通常用於添加可用於Excel開啟的任何活頁簿的應用程式級功能。例如,您可以編寫一個COM附加元件,它會添加一個功能表項目,以便將所選Excel工作表單元中的貨幣根據當前匯率轉換為另一種貨幣。
Excel有一個COM附加元件對話方塊,使使用者可以開啟和關閉COM附加元件。請注意,通過從“工具”菜單中選擇“附加元件”訪問的對話方塊不是COM附加元件對話方塊。該對話方塊用於開啟和關閉自動化附加元件和XLA附加元件,這將在本章後面討論。要訪問COM附加元件對話方塊,必須執行以下步驟:
1.按右鍵Excel中的菜單或工具列,然後從快顯功能表中選擇“自訂”,或者從“工具”菜單中選擇“自訂”以顯示“自訂”對話方塊。
2.單擊“自訂”對話方塊的“命令”選項卡。
3.從類別列表中選擇工具。
4.向下滾動命令列表,直到看到一個說明COM附加元件的命令。
5.拖動COM附加元件命令並將其放在工具列上。
6.關閉“自訂”對話方塊。
完成這些步驟後,單擊您添加到工具列的COM附加元件工具列按鈕。 COM附加元件對話方塊3-1所示。
圖3-1 Excel中的COM附加元件對話方塊
您可以使用“添加”按鈕添加COM附加元件,並使用“刪除”按鈕刪除它們。通常,您將無法使用此對話方塊來管理COM附加元件。相反,您將通過使用為COM附加元件建立的安裝程式操作註冊表設定來安裝和刪除COM附加元件。
Excel通過從註冊表讀取來發現已安裝的COM附加元件。您可以通過轉到“Windows開始”菜單並選擇“運行”來查看電腦上的註冊表。在“運行”對話方塊中,鍵入要啟動並執行程式的regedit,然後單擊“確定”按鈕。 Excel在HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Excel \ Addins下的登錄機碼中尋找COM附加元件。 Excel還在HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Office \ Excel \ Addins下的登錄機碼中尋找COM附加元件。 COM附加元件在HKEY_LOCAL_MACHINE下註冊的COM附加元件不會顯示在COM附加元件對話方塊中,使用者無法開啟或關閉。建議您不要在HKEY_LOCAL_MACHINE下註冊COM附加元件,因為它隱藏了使用者的COM附加元件。
COM附加元件在第23章“開發Word和Excel的COM附加元件”中有詳細的討論。
自動化附加元件
自動化附加元件是在註冊表中註冊為作為COM對象註冊的類,它們公開可在Excel公式中使用的公用函數。已經安裝的自動化附加元件顯示在附加元件對話方塊中,您可以通過從“工具”菜單中選擇“附加元件”來顯示。在討論如何建立用於Excel公式的使用者定義的Excel函數時,本章將更詳細地檢查自動化附加元件。
用於Office代碼的Visual Studio工具
Visual Studio 2005工具(VSTO)使您可以將C#或Visual Basic代碼放在Excel模板和活頁簿之後。 VSTO是從C#和Visual Basicso的基礎設計的,這個模型是用於自訂Excel的所有模型中最“.NET”的。當您想自訂特定活頁簿的行為或通用模板建立的特定活頁簿集時,將使用此模型。例如,您可以為您公司中的任何人建立費用報告時使用的費用報告活頁簿建立一個模板。該模板可以添加使用它建立的活頁簿時始終可用的命令和功能。
VSTO對活頁簿後面的代碼的支援將在本書第三部分中詳細討論。
智能文檔和XML擴充包
智能文檔是將代碼與Excel模板或活頁簿相關聯的另一種方法。智能文檔依賴於將XML模式附加到活頁簿或模板,並將代碼與該模式相關聯。模式和關聯代碼的組合稱為XML擴充包。 XML擴充包可以通過從資料菜單中的XML菜單中選擇XML擴充包與Excel活頁簿相關聯。圖3-2顯示了XML擴充包對話方塊。
圖3-2 Excel中的XML擴充包對話方塊
當XML擴充包附加到活頁簿時,Excel載入關聯的代碼並在開啟該活頁簿時運行它。 智能文檔解決方案可以在“文檔操作”工作窗格中建立自訂使用者介面。 您可以通過從視圖菜單中選擇工作窗格來查看Excel中的工作窗格。 圖3-3顯示了Excel中的自訂文檔操作工作窗格。
圖3-3 Excel中的自訂文檔操作工作窗格
可以在C#或Visual Basic中從頭開始編寫智能文檔解決方案。這本書沒有涵蓋這個方法。相反,本書著重於VSTO方法,該方法旨在使智能文檔開發更容易,並允許您使用Windows表單建立自訂文檔操作工作窗格。第15章“使用動作窗格”,更詳細地討論了這一功能。
智能標籤
智能標籤啟用彈出式菜單,其中包含與活頁簿中識別的文本相關的操作。您可以通過建立智能標記DLL或在文檔後面使用VSTO代碼來控制Excel識別的文本以及對該文本可用的操作。
智能標記DLL包含Excel使用的兩種類型的組件:辨識器和關聯操作。辨識器確定活頁簿中的哪些文本被識別為智能標記。一個動作對應於快顯功能表中顯示的功能表命令。
可以建立一個辨識器來告訴Excel識別股票代號符號(如MSFT股票代號),並顯示一組可用於該符號的動作:買入,賣出,擷取最新價格,擷取曆史等上。例如,“擷取記錄”操作可以啟動Web瀏覽器來顯示被識別的股票符號的股票曆史網頁。
辨識器識別某些文本時,Excel會在相關儲存格的右下角顯示一個小三角形。如果使用者將滑鼠移至上方在儲存格上,則儲存格旁邊會出現一個快顯功能表表徵圖,使用者可以單擊該菜單表徵圖,以下載識別的文字檔的操作菜單。圖3-4顯示了一個樣本菜單。選擇一個動作後,Excel會調用相關聯的操作來執行代碼。
圖3-4 Excel中的智能標籤
智能標籤從“自動校正”對話方塊的“智能標籤”頁面進行管理,3-5所示。 您可以通過從“工具”菜單中選擇“自動校正選項”來顯示“智能標記”頁面。 在這裡,使用者可以開啟和關閉單個辨識器,以及控制與智能標籤如何在活頁簿中顯示的其他選項。
圖3-5 “自動校正”對話方塊中的“智能標記”頁面
VSTO提供了一個簡單的模型,用於建立在活頁簿或模板層級工作的智能標記。第16章“使用VSTO中的智能標籤”,更詳細地介紹了使用智能標籤的VSTO模型。
將Smart Tag辨識器和動作類寫入可在應用程式層級工作的DLL,但它比VSTO模型複雜得多。第16章還描述了這種方法。
XLA附加元件
附加元件對話方塊(通過從工具菜單中選擇附加元件顯示)也是XLA附加元件。 XLA附加元件將生命當作一個在其背後具有VBA代碼的活頁簿。然後,開發人員可以使用[檔案] 功能表中的“另存新檔”將檔案另存新檔XLA或Excel附加元件檔案,並選擇XLA作為檔案格式。 XLA檔案作為一個不可見活頁簿的形式的應用程式級附加元件,在Excel的生命週期中保持開啟狀態。雖然可以將使用VSTO定製的活頁簿儲存為XLA檔案,但是當活頁簿轉換為XLA檔案時,VSTO的許多功能不起作用。一些不起作用的功能包括VSTO對“文檔操作”工作窗格和“智能標記”的支援。因此,Microsoft不支援或建議將使用VSTO定製的活頁簿儲存為XLA檔案。因此,這本書沒有進一步介紹。
伺服器產生的文檔
VSTO使您可以在伺服器上編寫代碼,使用資料填充Excel活頁簿,而無需在伺服器上啟動Excel。例如,您可以建立一個ASP.NET頁面,它從資料庫中讀取一些資料,然後將其放在Excel活頁簿中,並將該活頁簿返回給Web頁面的用戶端。 VSTO提供了一個名為ServerDocument的類,可以輕鬆實現。您還可以使用Office的XML檔案格式在伺服器上以XML格式產生Excel文檔,但這要複雜得多。此外,Excel XML檔案格式是有損的,這意味著您無法以Excel XML格式表示Excel試算表中的所有內容。因此,在Excel XML檔案格式的伺服器上產生文檔時,我們更喜歡使用ServerDocument方法。
第18章“伺服器資料情境”介紹了使用ServerDocument在伺服器上產生文檔。
研究服務
Excel具有稱為“研究”工作窗格的工作窗格,使您能夠輸入搜尋字詞並搜尋該搜尋字詞的各種來源。圖3-6顯示了研究工作窗格。
圖3-6 研究工作窗格
Excel使開發人員能夠編寫一個名為研究服務的特殊Web服務,實現由Excel定義的一組Web方法。 可以在Excel中註冊研究服務,並在Office的研究工作窗格中使用。 例如,您可以編寫一個在公司資料庫中搜尋搜尋字詞的研究服務。
第6章“編程詞”討論了更詳細地建立研究服務。
VSTO:使用C#開發Excel、Word【10】