上一次主要學(xué)習(xí)了VSTO的發(fā)展歷史及其歷代版本的新特性,概述了VSTO對(duì)開發(fā)人員的幫助和效率提升。從這次開始,將從VSTO 4.0開始,逐一探討VSTO開發(fā)中方方面面,本人接觸VSTO時(shí)間不長(zhǎng),也是一次嘗試。鑒于Excel在整個(gè)Office家族中的重要地位,故先從Excel開始介紹,后續(xù)內(nèi)容會(huì)陸續(xù)介紹Word、PowerPoint、Outlook、InfoPath等。由于VSTO 4.0建立在Office 2010基礎(chǔ)之上,先介紹一下Office 2010的新特性,注意現(xiàn)在只是Beta版,正式版可能還會(huì)有功能上的調(diào)整。 本系列所有示例代碼均在 Visual Studio 2010 Beta 2 + Office 2010 Beta 下測(cè)試通過(guò)
一、Office 2010新特性 微軟將于2010年6月份正式推出Office 2010。Office 2010帶來(lái)了諸多程序改進(jìn),保持了Office 2007的XML文件格式,改進(jìn)了Ribbon界面,并帶來(lái)了基于瀏覽器的Excel、Word、OneNote、PowerPoint作為Office網(wǎng)絡(luò)應(yīng)用服務(wù),并首次提供64位的Office。 Office 2010打破了微軟的傳統(tǒng),成為全球最知名的在線Office工具,Office 2010中的基于Web的功能是全新的,因此可能會(huì)出現(xiàn)問題。由于對(duì)微軟全新的Office在線體驗(yàn)持有懷疑的態(tài)度,雖然有些公司計(jì)劃購(gòu)買Office 2010,但是同時(shí)也會(huì)使用免費(fèi)的Google Docs和Zoho。 Office Word 2010 Office Word 2010 增強(qiáng)了 Navigation Pane 特性,用戶可在 Navigation Pane 中快速切換至任何一章節(jié)的開頭(根據(jù)標(biāo)題樣式判斷),同時(shí)也可在輸入框中進(jìn)行即時(shí)搜索,包含關(guān)鍵詞的章節(jié)標(biāo)題會(huì)高亮顯示。例如下圖中的搜索 LiveSino.net: Office Word 2010 也增加了在線實(shí)時(shí)協(xié)作功能,用戶可以從 Office Word Web App 中啟動(dòng) Word 2010 進(jìn)行在線文檔的編輯,并可在左下角看到同時(shí)編輯的其他用戶(包括其他聯(lián)系方式、IM 等信息,需要 Office Communicator)。而當(dāng)其他用戶修改了某處后,Word 2010 會(huì)提醒當(dāng)前用戶進(jìn)行同步。(注:此功能也存在于部分其他 Office 2010 程序中) 另外,用戶可在 Office Word 2010, Office PowerPoint 2010 以及 Office OneNote 2010 等 Office 2010 程序中直接插入其他正在運(yùn)行的軟件的截圖。 Office Excel 2010 Office Excel 2010 新增了 Sparklines 特性,可根據(jù)用戶選擇的數(shù)據(jù)直接在單元格內(nèi)畫出折線圖、柱狀圖等,并配有 Sparklines 設(shè)計(jì)面板供自定義樣式。 Office PowerPoint 2010 Office PowerPoint 2010 除了新增更多幻燈片切換特效、圖片處理特效之外,還增加了更多視頻功能,用戶可直接在 PowerPoint 2010 中設(shè)定(調(diào)節(jié))開始和終止時(shí)間剪輯視頻(見下圖),也可將視頻嵌入之 PowerPoint 文件中。 PowerPoint 2010 左側(cè)的幻燈片面板也新增了分區(qū)特性,用戶可將幻燈片分區(qū)歸類,也可對(duì)整個(gè)區(qū)內(nèi)的所有幻燈片進(jìn)行操作。見下圖中的 Default Section 和 LiveSino Section。 PowerPoint 2010 也增加了類似格式刷的工具 – Animation Painter,可將動(dòng)畫效果應(yīng)用至其他對(duì)象,用法同格式刷。另外就是上次我提到的 Broadcast Slide Show 在線幻燈片播放功能。 Office 2010 其他組件包括 OneNote 2010, Access 2010, InfoPath 2010, Publisher 2010 都包含了不少新特性,并且都已采用 Ribbon UI 但我不打算詳細(xì)介紹。 Office Web Applications 2010 Office Web Applications 2010 包含 Word Web App, Excel Web App, PowerPoint Web App 以及 OneNote Web App,支持簡(jiǎn)單的編輯及實(shí)時(shí)協(xié)作功能,支持 IE, Firefox, 和 Safari。具體內(nèi)容后文中介紹,另附清晰截圖如下: Office Mobile 2010 Office Mobile 2010 包含新版 Word Mobile, Excel Mobile, PowerPoint Mobile, OneNote Mobile 以及支持對(duì)話模式的 Outlook Mobile(見下圖,來(lái)源:SuperSite)。 企業(yè)服務(wù)器端也可渲染 Office 文檔供企業(yè)移動(dòng)用戶通過(guò)手機(jī)端查看 Office 文檔,也支持黑莓和 iPhone。 WZor.net 泄漏了 Microsoft Office 2010 Professional Plus 技術(shù)預(yù)覽版(x86, x64),而 Ars Technica 在第一時(shí)間發(fā)布了全套 Office 2010 截圖。盡管對(duì)比 1 個(gè)月前泄漏的 Outlook 2010 截圖,界面并沒有太大改動(dòng),但最近的 TechED 09 以及該泄漏版 Office 2010 中暗示了些 Office 2010 的新特性。 Windows 7 Jump Lists 在 TechEd 2009 上,微軟演示了支持 Windows 7 Jump Lists 新特性的 Outlook 2010。當(dāng)有未讀郵件時(shí)。Outlook 任務(wù)欄圖標(biāo)右下角還包括新郵件的圖標(biāo)提示(如下圖)。(via Techradar) Microsoft PowerPoint Live(Broadcast Slide Show) PowerPoint 2010 支持將演示文檔發(fā)布至 PowerPoint Live 或其他在線服務(wù),以便其他用戶可通過(guò)瀏覽器觀看該演示文檔,類似 Apple iWork.com。而 PowerPoint Live 很可能就是 Office Web Applications 中的一員。
JCXP 還給出了一些 PowerPoint 2010 以及 Word 2010 新特性的截圖和簡(jiǎn)介,比如:PowerPoint 截圖功能、新的 PowerPoint 過(guò)渡效果、PowerPoint 內(nèi)錄制幻燈演示。 另外,Office 2010 官方團(tuán)隊(duì)也已確認(rèn):Groove 已改名為 SharePoint Workspace,并且 OneNote 和 SharePoint Workspace 都將包括于 Pro Plus 版本中。 我已經(jīng)安裝了Office 2010 Professional Plus Beta X64:
如上文介紹的,InfoPath和Groove的命名發(fā)生了變化,其他不變。個(gè)人感覺Office 2010中最大的變化是對(duì)在線辦公的支持,這是未來(lái)發(fā)展的趨勢(shì),個(gè)人表示看好。其他新功能我會(huì)陸續(xù)嘗試,會(huì)發(fā)布在后續(xù)篇章,以VSTO 4.0來(lái)體驗(yàn)新特性。
二、Excel對(duì)象模型
對(duì)象模型是一組由Office應(yīng)用程序提供的對(duì)象,用來(lái)控制Office應(yīng)用程序,是VSTO開發(fā)的核心內(nèi)容。其中Application是最頂層的對(duì)象,負(fù)責(zé)對(duì)Office進(jìn)行整體的控制,類似于.Net WinForm和WPF中的Application對(duì)象,是根對(duì)象。Workbook(s)指工作簿,Worksheet(s)指工作表,Chart(s)指各種圖表。Sheets對(duì)象比較特別,它包含Worksheet或Chart類型的對(duì)象,而Range表示希望操作的單元格范圍。
三、主互調(diào)程序集(PIA) 用于與Office交互的托管程序集叫做Office主互調(diào)程序集(PIA)。 PIA = Primary Interop Assemblies 通常應(yīng)用一種被稱為COM Interop的.Net技術(shù)與Office對(duì)象模型進(jìn)行交互,所有的Office對(duì)象都是用非托管代碼(C、C++)編寫的,并提供COM接口。為了在托管代碼中與這些接口進(jìn)行通信,必須使用封裝器,通過(guò)封裝器來(lái)實(shí)現(xiàn)托管代碼與Office非托管COM接口之間的協(xié)同工作。該封裝器是一系列的.Net類,他們被編譯為PIA程序集。之所以PIA稱之為"主",是因?yàn)殚_發(fā)人員可以開發(fā)自己的封裝器IA(Interop Assemblies),除非有非常特殊的需求,否則不建議使用自己的IA,因?yàn)檫@不能夠與其他的Office解決方案進(jìn)行交互,而且有可能包含Office已經(jīng)修復(fù)的bug。 安裝相應(yīng)的Office版本后就會(huì)安裝PIA了,如果要開發(fā)VSTO 4.0,建議安裝Office 2010 Professional Plus Beta。Office PIA被安裝到GAC(GAC = Global Assembly Cache)中。 大部分VSTO項(xiàng)目會(huì)自動(dòng)添加PIA,如果創(chuàng)建的是其他類型的項(xiàng)目(控制臺(tái)、類庫(kù)、WinForm、WPF等),則需要手動(dòng)添加PIA。
當(dāng)PIA之間有依賴關(guān)系時(shí),VS2010會(huì)自動(dòng)添加必須的PIA。
四、Office解決方案 1、Office自動(dòng)化程序(Office Automation Executable) Office自動(dòng)化程序是獨(dú)立于Office的程序,用于控制和自動(dòng)化處理某個(gè)Office應(yīng)用程序。如控制臺(tái)、類庫(kù)、WinForm、WPF等。 2、Office加載項(xiàng)(Add-In) Office加載項(xiàng)是某個(gè)程序集(dll)中的類,Office在需要時(shí)可加載和創(chuàng)建它,加載項(xiàng)可以直接在Office應(yīng)用程序的進(jìn)程中運(yùn)行,而不需要在獨(dú)立于Office應(yīng)用程序的進(jìn)程中運(yùn)行,加載項(xiàng)在Office應(yīng)用程序的整個(gè)生命周期中均保持加載狀態(tài)。 3、Office文檔代碼(Code Behind on Office Document) Office文檔代碼早在VBA時(shí)代就已經(jīng)得到了廣泛的應(yīng)用,在VSTO中得到了進(jìn)一步的增強(qiáng)。Office文檔代碼可以用某種方式對(duì)Office應(yīng)用程序進(jìn)行定制,如增加只在當(dāng)前文檔中才出現(xiàn)的菜單項(xiàng),或者在文檔打開時(shí)觸發(fā)事件。 4、Office 模板(Office Template) 使用托管代碼創(chuàng)建相應(yīng)的Office模板。 5、服務(wù)器文檔模式(Server Document) VSTO可以在不打開Office應(yīng)用程序的情況下,在服務(wù)器端運(yùn)行程序并對(duì)存放在Office文檔中的數(shù)據(jù)進(jìn)行操作,如VSTO的緩存數(shù)據(jù)功能,SharePoint 2007/ 2010的Excel Services等。 6、OpenXML模式 以O(shè)penXML的API操作Office文檔中的數(shù)據(jù),結(jié)合XSLT等轉(zhuǎn)換為需要的文檔格式。關(guān)于OpenXML的介紹請(qǐng)參閱我博客的另外一個(gè)系列:OpenXML學(xué)習(xí)筆記。
五、Office文檔代碼示例 由于本次主要學(xué)習(xí)Excel對(duì)象模型,顧采用Office文檔代碼模式做幾個(gè)簡(jiǎn)單的練習(xí),其余模式后續(xù)篇章會(huì)陸續(xù)介紹。 1、新建一個(gè)Excel 2010 Workbook項(xiàng)目:
默認(rèn)添加的引用和項(xiàng)目文件:
2、在Sheet1中添加兩個(gè)Button和一個(gè)Label控件:
3、添加事件處理代碼:
private void btnPIA_Click(object sender, EventArgs e) { Excel.Workbook book = this.Application.Workbooks[1]; Excel.Worksheet sheet = book.Worksheets[1];//C# 4.0新特性,PIA動(dòng)態(tài)導(dǎo)入。 this.labMsg.Text = "這是PIA調(diào)用結(jié)果,當(dāng)前工作表名為: " + sheet.Name; } private void btn獲取工作表_Click(object sender, EventArgs e) { this.labMsg.Text = string.Empty; Excel.Workbook book = this.Application.Workbooks[1]; for (int i = 1; i <= book.Worksheets.Count; i++) { //C# 4.0新特性,PIA動(dòng)態(tài)編譯。 this.labMsg.Text += book.Worksheets[i].Name + " "; } } 受益于C# 4.0的新特性,可以不用進(jìn)行顯示類型轉(zhuǎn)換了,同時(shí)PIA將在運(yùn)行時(shí)進(jìn)行導(dǎo)入、編譯,注意:VSTO中的索引大多數(shù)是從1開始,而不是從0.
4、F5運(yùn)行,將會(huì)打開生成的Excel:
5、運(yùn)行結(jié)果:
六、小結(jié) 本次首先敘述了Office 2010的新特性,學(xué)習(xí)了VSTO開發(fā)的基礎(chǔ)知識(shí),對(duì)PIA有了深刻的認(rèn)識(shí),介紹了不同的Office解決方案的區(qū)別。最后用 Excel文檔代碼做了一個(gè)簡(jiǎn)單的示例,利用C# 4.0的新特性,使得VSTO 4.0的開發(fā)更加便捷、高效。如果你還不熟悉C# 4.0,不妨先看看園子里的相關(guān)文章,若要調(diào)試本示例代碼,需要安裝VS2010 Beta2 + Office 2010 Beta。下一次將繼續(xù)學(xué)習(xí)Excel的相關(guān)知識(shí),我們將使用VSTO來(lái)編寫一個(gè)Excel自定義公式,比較其與VBA的不同。 |
|
來(lái)自: 偷心無(wú)痕 > 《Excel-C#》