Office (2007) Open XML 文件格式簡介
Office (2007) Open XML 文件格式簡介
Frank Rice, Microsoft Corporation
學習Office Open XML格式的優(yōu)勢。用戶可以在Office應用程序和企業(yè)系統(tǒng)之間使用XML和ZIP技術來交換數據。文檔是全局可以訪問的。并且,您還可以減少文件損壞的風險。
適用于: 2007 Microsoft Office 套件,Microsoft Office Excel 2007,Microsoft Office PowerPoint 2007,Microsoft Office Word 2007

本頁內容
![]() |
Office Open XML 文件格式簡介 |
![]() |
新的文件格式應用場景 |
![]() |
新的文件格式的優(yōu)勢 |
![]() |
Office Open XML 格式的術語列表 |
![]() |
Office XML 格式的結構 |
![]() |
使用Office XML 格式開發(fā)解決方案 |
![]() |
在Office產品中使用新的文件格式 |
![]() |
修改 Office XML 文件格式來自定義用戶界面 |
![]() |
結論 |
![]() |
相關資源 |
Office Open XML 文件格式簡介
隨著20世紀90年代XML的出現,企業(yè)計算客戶開始逐漸認識到,在他們所依賴的計算機產品和應用中采用開放的格式和標準所帶來的商業(yè)價值。IT專業(yè)人員將從通用的數據格式中受益匪淺,這種格式可能是XML,因為它擁有被應用程序、平臺和Internet瀏覽器讀取的能力。
同樣,隨著在Microsoft Office 2000中對于XML格式的支持與采用,開發(fā)人員開始認識到,他們需要將以前的Microsoft Office版本中的二進制文件格式轉換為XML格式。二進制文件(.doc,.dot,.xls,以及.ppt文件)在過去幾年中一直肩負著存儲和轉換數據的重任,而現在它們無法滿足新的市場需求的挑戰(zhàn),其中包括輕松地在異構應用之間傳遞數據,以及允許用戶從這些數據中搜集商業(yè)信息。
2007 Microsoft Office system為Microsoft Office Excel 2007,Microsoft Office Word 2007,和Microsoft Office PowerPoint 2007采用了基于XML的文件格式,從而延續(xù)了這種轉移。新的文件格式,稱為Office Open XML格式,解決了上述市場需求的問題,同時改變了您基于Microsoft Office文檔建立解決方案的方式。
新的格式增強了文件與數據的管理能力,數據恢復能力,以及與業(yè)務線系統(tǒng)的互操作能力。它們是對早期版本的二進制文件的擴展。任何支持XML的應用程序都可以訪問新文件格式當中的數據,并與之協(xié)同工作。這些應用程序并不需要成為Microsoft Office system或Microsoft產品的一部分。用戶也可以使用標準的轉換來提取或重新組織數據。另外,有關安全性的擔憂也大大的降低,因為信息是存儲在XML當中的,它從本質上來講都是純文本的。因此,數據可以沒有任何障礙地通過企業(yè)防火墻進行傳遞。
注意:
不要將Office Open XML格式與Microsoft Windows XML Paper Specification格式相混淆。Office Open XML格式使用Open Packaging Conventions,XML Paper Specification (XPS)也使用它。但是,這兩種格式在許多重要的方面是不同的。XPS是一個頁面內的,固定的文檔格式,它是在Microsoft Windows Vista操作系統(tǒng)當中所引入的。而Office Open XML格式是面向Office Word 2007,Office Excel 2007,和Office PowerPoint 2007的完全可編輯的文件格式。雖然它們在XML和ZIP壓縮的使用方面有很多相似的地方,但是它們在文件格式的設計和使用目的上還是有著很大的不同。
新的文件格式應用場景
Office Open XML文件格式改變了客戶處理數據的方式。對于下面的一些場景,新的文件格式使之變?yōu)榭赡埽?/p>
• |
一個服務器端的過程可以從一個ZIP壓縮包中讀取其中一項,而無需將它們所有的內容解壓。例如,您可以只提取文檔的數據中包含的XML文件,而不需要打開包含文檔的格式、屬性和其它輔助信息的文件。 |
• |
在更多場景中,新的文件容器對于用戶來說是透明的。它看上去就像一個傳統(tǒng)的二進制文檔文件。但是,新的XML格式文檔是經過壓縮的,所以更小,從而也更便于在其它用戶之間通過電子郵件或其它方式進行發(fā)送。 |
• |
殺毒軟件和服務器應用程序都可以更加方便的提取容器里的內容,從而直接查看影響的項,而不需要破壞整個容器或者里面的內容。 |
• |
文件可以以新的文件格式保存,而不包含可執(zhí)行的宏代碼。(如果希望保存的話,可以選擇啟用宏的文件格式,相關內容會在本文的后面進行討論。)因此,它們可以被認為是十分安全的,并且可以通過防火墻進行傳輸,或者通過電子郵件進行發(fā)送,而不需要考慮安全性的問題。這種行為是由Microsoft Office應用程序所強制的。如果一個宏被添加到了一個Office Open XML格式的文件當中,那么Office將不允許這種文檔的打開。 注意: 一些ZIP應用程序允許你創(chuàng)建加密的文件。新的文件格式不能創(chuàng)建加密的文件。如果你企圖讀取一個加密的文件,那么它將會停止文件的讀取并返回一個錯誤。 |
• |
如果容器中的一項損壞了,那么其它的項還是可用的。例如,如果一個用戶嘗試打開一個損壞了的磁盤上的損壞了的文件,那么Office文件恢復機制將重新建立中心目錄,并完全恢復文件的內容。 |
• |
Office的開發(fā)人員可以使用Microsoft WinFX應用程序編程接口(API)來創(chuàng)建一個有效的XPS文件。這些API可以幫助你建立解決方案,并與新的文件格式進行交互。如果一個由其它ZIP應用程序創(chuàng)建的ZIP壓縮包沒有使用特定的ZIP功能,那么Office的開發(fā)人員也可以使用API來打開它。 注意: Microsoft Office創(chuàng)建的文件符合Open Packaging Conventions,所以WinFX API可以進行讀取,相反的,WinFX也可以創(chuàng)建一些包,允許您使用Microsoft Office 應用程序來打開它們。WinFX API可以與Microsoft Windows的以前版本協(xié)同工作,包括:Microsoft Windows Vista,Microsoft Windows Server 2003,和Microsoft Windows XP。另外,轉換器對于Microsoft Office 2000,Microsoft Office XP,和Microsoft Office 2003版本也是可用的。 |
新的文件格式也改變了Office用戶使用那些用來處理日常事務的應用程序的方式,下面的場景描述了一些新的格式所帶來的工作方式上的改變,這些任務都是通常使用2007 Office來完成的:
• |
Howard,是一個好奇心很強的用戶,他發(fā)現2007 Office版本中包含的新的文件格式是一個ZIP文件。Howard希望自己親自看一看,因此他使用一個ZIP應用程序打開了一個在Word 2007中創(chuàng)建的文檔。它看到了一些文件,好像都是XML文檔的內容,還有一些圖片正是他在原始的文檔中看到過的圖片。于是,好奇的Howard在記事本中打開了一個XML文件,想看看Word生成的XML文件的格式是什么樣的。在了解了壓縮包中的文件結構后,他關閉了記事本和ZIP應用程序,重新在Word中打開文件并繼續(xù)他的文檔處理工作。 |
• |
Jan需要改變她的Word 2007文檔的一個文檔屬性。她在一個ZIP應用程序中打開了新的格式文件,它提取了其中包含文檔屬性的XML項,做出了一些更改,然后又把這一項添加回原來的容器,然后保存并關閉容器。然后,她又在Word中打開了文檔,她發(fā)現所有的內容都沒有改變,而只有那么需要改變的屬性被她修改了。 |
• |
一個顧問公司的logo需要進行改變,從而反應他們的新目標。IT部門接到了這個改變成千上萬的文件中所有l(wèi)ogo的任務,這些文檔都被保存在一個服務器當中。在以前版本的Microsoft Office應用程序中,他們必須單獨打開每個文檔,刪除原有的logo,并且粘貼新的logo,或者創(chuàng)建并且測試一個相當復雜的應用程序,來自動的執(zhí)行這個任務。通過新的文件格式,IT部門創(chuàng)建一個批處理過程來瀏覽文件的格式,并且在meida目錄中定位圖片的位置(這對于每個文檔都是一樣的),并且替換為新的圖片。現在,當打開新的文檔后,新的logo就自動的顯示出來了。 |
• |
一個法律公司必須保護客戶的機密數據,以及他們自己的數據。基于標準的實踐,公司了解到創(chuàng)建使用Word所創(chuàng)建的一些文檔存儲了許多屬性 - 有些是可見的,而有些則是在文檔中不可見的。其中一些屬性可能會包含客戶的敏感信息或者企業(yè)的機密信息。通過不斷的嘗試和失敗。公司創(chuàng)建一個程序來刪除這些信息。但是,這個程序非常耗時,并且因為它獨立于用戶,所以經常會出現錯誤。通過使用新的文件格式,IT部門的開發(fā)人員開發(fā)了一個簡單的批處理程序,它在文檔的壓縮包中瀏覽整個目錄結構從而刪除指定的部件。公司現在可以保護所有的客戶敏感信息和機密信息,并將它們從文檔中刪除掉。 |
• |
Denise正在對她的碩士學位的畢業(yè)論文做出最后的修改。在添加完參考文獻后,它準備進行最后的保存。這時,恐怖的事情發(fā)生了,在保存文檔的時候發(fā)生了意外停止,并且她收到了文檔可能損壞的消息。在她就要崩潰的時候,她突然想到她使用的是新的文件格式。于是,她將文本導出到一個新的文檔中,重新附加圖片,并且引入格式和樣式部分,從而成功的重新構造文檔。然后,她保存了新的文檔。 |
• |
Elizabeth是一個Windows 2000用戶,它正在使用Office 2000,其中安裝了轉換器來打開2007 Office的文檔。她可以打開了一個Word XML格式的文檔。另外,她可以編輯文檔,并且重新將它保存為新的文檔格式,因為轉換器提供了打開和保存的支持。 |
新的文件格式的優(yōu)勢
新的Office Open XML格式帶來了一系列的優(yōu)勢,它不但可以幫助開發(fā)人員建立解決方案,而且可以幫助最終用戶和所以規(guī)模的企業(yè)。
下面列出了一些Office Open XML格式所帶來的總體上的優(yōu)勢:
• |
簡單將商業(yè)信息與文檔相集成。Office Open XML格式允許快速地從數據源創(chuàng)建文檔,加速文檔的裝配件,數據挖掘和內容的重用。Office應用程序和企業(yè)業(yè)務系統(tǒng)之間的數據交換得到了簡化。另外,您可以更改Office文檔中的信息,或者使用非Office應用程序通過文檔容器的方式來創(chuàng)建文檔。企業(yè)員工可以在所有支持XML讀寫的應用程序當中,通過更加快速準確地發(fā)布、搜索、和重用信息,從而提高他們的生產效率。 |
• |
開放并且是免稅的。Office Open XML格式是基于XML和ZIP技術的,因此它們可以隨便地使用。格式和架構的詳細標準說明將會發(fā)布出來,并且會處于與現在已經存在的Microsoft Office 2003引用的架構相同的免稅條約下,并且它是開放使用的,可以用于生產用途。 |
• |
互操作性。Office Open XML格式是以工業(yè)標準的XML為核心的,Microsoft Office應用程序與企業(yè)業(yè)務系統(tǒng)之間的數據交換得到了簡化。無需訪問Office應用程序,解決方案就可以更改Office文檔當中的信息,或者使用標準的處理XML的工具和技術來創(chuàng)建文檔。新的格式允許您構建文檔的存檔,而無需使用Office的代碼。 |
• |
健壯性。Office Open XML格式被設計為比二進制格式更加健壯,而且因此可以幫助降低由于文件損壞所帶來的信息丟失的風險。即使在Office外面對于文檔的修改和創(chuàng)建也不會對文檔造成過多的損壞,因此使用新的文件格式,Office應用程序被設計為使用增強的可靠性來恢復文檔。隨著越來越多的文檔穿梭與電子郵件的附加或可移動的存儲設備之間,網絡或存儲設備的損壞增加了文檔損壞的可能性。 新的文件格式通過將文檔在文件包中進行分段單獨的存儲,增強了數據恢復的能力。這將大大的節(jié)省企業(yè)用于恢復數據丟失所花費的大量資金和時間。當一個文件組件損壞時,文件中的剩余部分還可以在應用程序中打開。例如,如果一幅圖表被損壞了,這也并不能阻止客戶打開文檔中的其它部分,當然不包括圖表。另外,Office應用程序可以檢測這些問題,并且在打開文檔的時候嘗試修復它,恢復文檔正確的數據結構。 |
• |
高效性。Office Open XML格式使用ZIP和壓縮技術來存儲文檔。這種新格式的一個巨大的優(yōu)勢就在于它的文件大小非常小 - 最大的壓縮比可以達到原來二進制文件的百分之75。這是使用XML和ZIP技術結合進行文件存儲的一大優(yōu)勢。因為XML是一個基于文本的格式,所以壓縮的比率非常的好,而且ZIP容器支持內容的壓縮,所以用戶可以大大的減小文件的尺寸。文件壓縮的類型提供了潛在的成本節(jié)約,因為它減少了存儲文件所需的磁盤容量,并且減少了通過電子郵件、網絡和Web進行文件傳輸所需的帶寬。 |
• |
安全性。Office Open XML的開放性使得它更加的安全。您可以保密的共享文檔,因為您可以簡單的確認并刪除一些個人信息或者是商業(yè)機密信息,例如用戶名、注釋和文件路徑。類似的,你可以確定文件包含的內容,例如OLE對象或者Microsoft Visual Basic for Applications (VBA)代碼,從而進行特殊的處理。文件格式也可以幫助提高安全性,防止文檔中保存嵌入的代碼或宏。默認情況下,新的Word 2007,Excel 2007和PowerPoint 2007的文件格式不包含嵌入的可執(zhí)行代碼。因此,如何一個人發(fā)送了一封電子郵件,其中包含了一個Word文檔作為附件,他或她可以打開文檔并且不會執(zhí)行任何潛在的有害可執(zhí)行代碼。Office Open XML格式包含一種特殊用途的格式,它擁有一個單獨的擴展名,其中可以包括嵌入的代碼,這樣就允許IT員工快速的判斷文件中是否包含代碼。 |
• |
向后兼容性。2007 Microsoft Office system是向后兼容的,它可以兼容早期的版本:Microsoft Office 2000,Microsoft Office XP,和Microsoft Office 2003.這些版本的用戶可以采用新的格式,或者繼續(xù)使用現有的文件格式。特別地,他們可以繼續(xù)使用原有的.doc,.xls,和.ppt的二進制格式的文件,它們與2007的文件格式是完全兼容的。早期Office版本的用戶可以下載一個免費的更新,它允許您在他們早期的版本中打開和編輯這種新格式的文件。那些安裝2007 Office版本的用戶可以將默認的文件格式設定為他們需要的一種格式。這樣可以幫助確保用戶繼續(xù)與基于早期版本的第三方解決方案協(xié)同工作,并且與他們的同事、提供商、客戶和其它已經升級的用戶協(xié)同工作。 |
Office Open XML 格式的術語列表
下面的列表定義了這篇文章和相關內容中使用的術語:
• |
API 一系列的功能或方法,用來訪問軟件的功能。API是應用程序接口(Application Programming Interface)的簡寫。 |
• |
轉換器(Converters) 一些免費的工具,可以在以前的Office版本中打開以Office Open XML格式創(chuàng)建的文件。 注意: 轉換器可以讀取或編輯文檔,并且可以向文檔中應用信息權限管理(IRM)保護。它可以繼續(xù)保護IRM信息,而與接收者是使用2007 Office版本還是原有的版本無關。 |
• |
向前兼容性。早期的應用程序版本可以打開后面版本的文檔,并且可以忽略那些在早期版本中沒有實現的功能。例如,Word 2003就是與Word 2007向前兼容的,它可以使用一個轉換器成功的打開Word 2007文件。 |
• |
Office Open XML格式。一種構建塊及關系的結構,用來組織、打包、分發(fā),并展現以文檔為中心的內容。這些構建塊定義了一個文件格式與平臺獨立的框架,這允許軟件應用程序可靠并一致地生成,交換,并顯示文檔。 |
• |
包。ZIP容器,它包含了組成文件的組件(部件),在Open Packaging Conventions細則中定義。 |
• |
部件。對應于包中一個文件。例如,如果一個用戶雙擊一個Excel 2007文件,并且選擇提取它,他或她將可以看到這些文件,例如一個Workbook.xml文件和幾個sheetn.xml文件。其中每個文件都是這個包的一部分。 |
• |
關系。指定部件的集合在一個文檔中如何綁定在一起的方法。這種方法指定了一個源部件和一個目標部件之間的連接。關系也是存儲在文檔包的XML部件當中的(例如,/_rels/.rels)。 |
• |
XML。擴展標記語言(XML)是一種簡單,靈活的文本格式,用做電子發(fā)布以及Internet和其它地方進行廣泛的數據交換。 |
• |
ZIP。一種工業(yè)標準的壓縮存檔格式,用來在計算機之間,使用電子郵件或者通過Internet存儲和轉換文件。 |
Office XML 格式的結構
新的文件格式的容器是基于簡單的分部分的壓縮的ZIP文件格式。在新的Office Open XML格式的核心使用一些XML的引用架構和一個ZIP容器。每個文件都是由一些部件的集合組成的;這個集合定義了文檔。
文檔部件是存儲在容器文件當中,或者存儲在基于工業(yè)標準的ZIP格式的包中。許多部件都是用來描述應用程序數據,元數據,以及自定義數據的XML數據,它們都是存儲在容器文件當中的。其它非XML部件,也可以包含在容器包當中,其中包括在文檔中表示圖片或者嵌入的OLE對象的二進制文件。另外,還有一些關系部件,它們指定了部件之間的關系;這種設計方式為Office文件提供了結構。部件組成了文件的內容,而關系描述了這些內容如何組織在一起。
Office文檔的XML文件格式緊密的集成在一起,但是它們是模塊化的,并且具有高度的靈活性。在下面的一些章節(jié)中,詳細地描述了Office XML格式的每個組成部分。它們也使用新的文件格式描述了Office應用程序。
注意:
為了理解一個Office XML格式文件的組成,您可以希望提取一個文件。為了打開文件,您可以使用一個ZIP應用程序,例如將WinZip(來自WinZip Computing Corporation)安裝到您的計算機當中。
為了打開一個Word 2007 XML文件
1. |
創(chuàng)建一個臨時目錄來存儲文件和它的部件。 |
2. |
創(chuàng)建一個Word 2007文檔,包括文本,圖片,以及其它元素,保存為一個.docx文件。 |
3. |
在文件名的末端添加一個.zip擴展名。 |
4. |
雙擊文件。這時將會在ZIP應用程序當中打開該文件。您可以查看組成文件的每個部件。 |
5. |
將這些部件提取到剛才創(chuàng)建的臨時目錄當中。 |
ZIP 包
許多元素都用來創(chuàng)建一個Microsoft Office文檔。其中一些是共享在所有的Office應用程序當中的,例如,文檔的屬性,樣式表,圖表,鏈接,圖形,和圖片。其它的元素是特定于每個應用程序的,比較Excel當中的worksheet,PowerPoint中的slide,或者Word的頁首和頁尾。
當用戶使用Office 2003或Microsoft Office以前的版本保存文檔的時候,在磁盤上只會寫一個單一的文件,這時您可以簡單的打開。這表示了文檔是實際如何存儲,管理和共享的。通過在一個ZIP容器中包裝2007 Microsoft Office system的文件中的單獨部件,文檔也被保存為一個單一的文件實例。使用單一的包文件來表示一個單一文件的實體,使得用戶可以在保存和打開Office(2007)文檔時,擁有與以前的Office版本相同的體驗。他們可以繼續(xù)處理單一的文件。

圖 1 . 2007版本的文件格式容器
在以前的Office版本當中,開發(fā)人員如果希望管理一個Office文檔的內容,那么他們需要了解如何根據這種二進制文件定義的存儲結構,讀取和寫入數據。這種過程是非常復雜的,因為Office的二進制文件被設計為主要由Office應用程序訪問。應用程序內存內的結構反應的格式都可以運行在內存和硬盤比較低的計算機當中。另外,不使用Office應用程序而對Office二進制文件進行程序化的修改,被認為是文件損壞的主要原因。這使得許多開發(fā)人員不敢去修改Office二進制文件。
ZIP被選擇為Office Open XML格式的包格式,因為它是一種理解良好的工業(yè)標準。現在,有許多的工具都可以處理ZIP格式,而且使用ZIP提供一種靈活的,模塊化的結構,允許對于功能進行擴展。因此,您可以使用任何可以處理工業(yè)標準的ZIP文件的工具,來訪問2007 Microsoft Office system的所有內容。在您打開一個容器文件后,您可以處理文檔包中的任何部件。例如,您可以使用Office Open XML格式打開一個Word 2007文檔,定位表示Word文檔體的XML部件,使用任何可以編輯XML的工具來修改這個部件,然后將XML部件返回到容器包當中,從而創(chuàng)建一個更新的Office文檔。
部件
在一個Office XML格式的包當中,文件的許多邏輯部件都作為單獨的文件或部分存儲。這種模塊化的存儲方式是這種文件格式的主要特點之一。模塊化允許您快速的定位一個特定的部件,并且直接處理這個部件。您可以根據預期的商業(yè)需求,編輯,替換,甚至刪除文檔的部件。
所有的Office應用程序都共享相同的部件類型,例如縮略圖,元數據,多媒體,和關系部件。其它一致的內容也在所有的文件中存在于一個特定的部件當中,例如文檔屬性。但是,也有許多部件是特定于應用程序的文檔類型的。例如,一個工作表的部件只存在于Excel文檔當中,而slide master部件只存在于PowerPoint文檔當中。
需要注意的是,在Open Packaging Conventions中定義了一些例外,實際的文件的目錄結構是專有的。包中定義的文件關系,而不是文件結構,定義了哪些文件是有效的。在您更新關系屬性的時候,您可以重新排布或者重命名一個Office(2007)XML 格式定義的ZIP容器里的部件,從而使得文檔中的每個部件可以相關。如果關系是精確的,那么文件可以正確的打開。一個Office XML格式文件中初始的文件結構是在創(chuàng)建文檔的時候建立的。這種默認的結構允許您簡單的決定Office XML格式文件的組成。假設您保存當前的關系,您可以更改這種默認的文件結構。更多相關信息,請查看Walkthrough: Word 2007 Open XML File Format。
部件可以是不同的內容類型。用來描述Microsoft Office應用程序數據的部件是以XML的方式存儲的。這些部件遵循XML引用架構的定義,它定義了相關的Office功能或對象。例如,在一個Excel 2007文件當中,表示一個工作表的數據可以在一個XML部件當中找到,它將一個Office架構附加到Excel工作表當中。另外,如果在一個工作簿中包含多個工作表,那么將會對每個工作表都有相應的一個XML部件存儲在包文件當中。所有的表示默認Office文檔部件的架構都將被完全的文檔化,并且可以從Microsoft的站點上進行下載,而且是免稅使用的。然后,通過使用標準的基于XML的技術,您可以應用您在Office架構方面的知識,更加輕松的轉換和創(chuàng)建2007 Microsoft Office system的文檔。
在許多場景中,以本地內容類型存儲部件是有益的。這些部件不是以XML的格式存儲的。例如,2007版本的Office文檔中的圖片,就是在文檔包中按照二進制文件的形式來存儲的(.png,.jpg,和其它文件類型)。因此,您可以通過使用一個ZIP應用程序來打開包容器,并且立即查看,編輯或者替換這種本地格式的圖片。這種存儲方式不僅訪問起來更加容易,而且它也比將圖片存儲為XML格式需要更少的內容處理量和磁盤空間。另外一種值得關注的,以二進制方式存儲的部件是VBA項目和嵌入的OLE對象。(嵌入的OLE對象是二進制的,只要相關的OLE服務器提供的是二進制的表示形式。例如,2007 Microsoft Office system嵌入的文檔將它們的內容作為其它包嵌入。)對于開發(fā)人員來說,這種可訪問性使得許多場景更加容易實現。例如,您可以建立一個解決方案,用來枚舉2007 Microsoft Office system的所有文件,將一個現有的OLE對象更新到一個更新的版本。您可以無需使用Office應用程序或者修改文檔特定的XML內容,便可以實現這些應用程序場景。下面的章節(jié)簡要的描述了一些部件,它們對于所有支持Office XML格式的Office應用程序是通用的。這些類型和部件的數據決定于創(chuàng)建ZIP容器文件的應用程序。例如,Word 2007創(chuàng)建了與文檔相關的部件,但是PowerPoint 2007創(chuàng)建與幻燈片展示相關的部件。
_rels 目錄
這個目錄中包含一個.rels文件,它定義了包中的根關系。它是在解析整個包時首先要瀏覽的第一個文件。
.rels 文件
包含了基于起始部件(虛擬的起始部件)的關系。其中的關系是通過下面的格式來定義的:
<Relationship Id="someID" Type="relationshipType" Target="targetPart"/>
其中:
Id 可以是任何字符串,只要它在.rels文件當中是唯一的就可以。
Type 表示關系的類型,它用來區(qū)分不同的關系,并且用來提示關系的用途。它指向定義Office Open XML格式類型的架構。
Target 指向包含關系目標的目錄和文件。(其它部件)
表 1. 關系類型
內置的關系類型 |
http://schemas.microsoft.com/office/2006/relationships/officeDocument |
http://schemas.microsoft.com/office/2006/relationships/vbaProject |
http://schemas.microsoft.com/office/2006/relationships/userXmlData |
http://schemas.microsoft.com/office/2006/relationships/hyperlink |
http://schemas.microsoft.com/office/2006/relationships/styleSheet |
http://schemas.microsoft.com/office/2006/relationships/comments |
http://schemas.microsoft.com/office/2006/relationships/oleObject |
http://schemas.microsoft.com/office/2006/relationships/e2Object |
http://schemas.microsoft.com/office/2006/relationships/e1Object |
http://schemas.microsoft.com/office/2006/relationships/image |
http://schemas.microsoft.com/office/2006/relationships/sound |
http://schemas.microsoft.com/office/2006/relationships/movie |
http://schemas.microsoft.com/office/2006/relationships/slide |
http://schemas.microsoft.com/office/2006/relationships/layout |
http://schemas.microsoft.com/office/2006/relationships/notesslide |
http://schemas.microsoft.com/office/2006/relationships/slidemaster |
http://schemas.microsoft.com/office/2006/relationships/glossaryDoc |
http://schemas.microsoft.com/office/2006/relationships/cfChunk |
http://schemas.microsoft.com/office/2006/relationships/dataStoreItem |
http://schemas.microsoft.com/office/2006/relationships/embeddedFont |
http://schemas.microsoft.com/office/2006/relationships/embeddedMetroObject |
http://schemas.microsoft.com/office/2006/relationships/chart |
http://schemas.microsoft.com/office/2006/relationships/activeXControl |
http://schemas.microsoft.com/office/2005/relationships/diagram |
http://schemas.microsoft.com/office/2005/relationships/diagramData |
http://schemas.microsoft.com/office/2005/relationships/diagramStyle |
http://schemas.microsoft.com/office/2005/relationships/diagramColorTrans |
http://schemas.microsoft.com/office/2005/relationships/diagramDefinition |
http://schemas.microsoft.com/package/2005/02/md/core-properties |
http://schemas.microsoft.com/office/2006/relationships/docPropsApp |
http://schemas.microsoft.com/office/2006/relationships/docPropsCustom |
http://schemas.microsoft.com/ office/2006/relationships/documentThumbnail |
http://schemas.microsoft.com/office/2006/relationships/glossaryDoc |
主要的文檔部件
http://schemas.microsoft.com/office/2006/relationships/officeDocument 關系的目標是定義文檔的主要部件(PowerPoint的幻燈片部件,Excel的工作簿部件,或者Word的文檔部件)。所有其它的關系都是基于主要文檔部件的。
應用程序目錄 (例如Word)
包含了應用程序特定的,文檔組件文件,例如(對于Word來說):
• |
wordDocument.xml 包含了文檔當中的數據(文本),以及樣式和字體設置。 |
• |
footer.xml 包含了有關文檔頁腳的信息,例如它們位于什么頁面上以及相關的樣式信息。 |
• |
header.xml 包含了與footer.xml文件當中相類似的信息,但是它是有關頁眉的信息。 |
• |
wordDocument.doc 它是原有文檔的復本。 |
• |
styles.xml 包含了有關文檔中樣式的信息,例如字體大小,表格樣式,和列表樣式等。 |
音頻文件
包含了所有的音頻類型的文件,例如.mid,.mp3,或.wav等文件。
Content_Types.xml 文件
為包含在我中的其它部件提供了一個內容類型的列表。內容類型可以定義為部件的類型,它們可以存儲在一個包中。
表 2. 一個 ZIP 容器中的內容類型
內置的內容類型 |
application/vnd.ms.powerpoint.template.macroEnabled.12application/x-font |
application/vnd.ms-excel.12application/x-font |
application/vnd.ms-excel.addin.12application/xml |
application/vnd.ms-excel.binary.12audio/aiff |
application/vnd.ms-excel.macroEnabled.12audio/basic |
application/vnd.ms-excel.macroEnabledTemplate.12audio/midi |
application/vnd.ms-excel.template.12audio/mp3 |
application/vnd.ms-metro.core-properties+xmlaudio/mpegurl |
application/vnd.ms-metro.relationships+xmlaudio/wav |
application/vnd.ms-office.activeX+xmlaudio/x-ms-wax |
application/vnd.ms-office.chartaudio/x-ms-wma |
application/vnd.ms-office.vbaProjectimage/bmp |
application/vnd.ms-powerpoint.image/gif |
application/vnd.ms-powerpoint.macroEnabled.12image/jpeg |
application/vnd.ms-powerpoint.main.12+xmlimage/png |
application/vnd.ms-powerpoint.presentation.12image/tiff |
application/vnd.ms-powerpoint.show.12image/xbm |
application/vnd.ms-powerpoint.show.macroEnabled.12image/x-icon |
application/vnd.ms-powerpoint.template.12video/avi |
application/vnd.ms-word.document.12video/mpeg |
application/vnd.ms-word.document.macroEnabled.12video/mpg |
application/vnd.ms-word.document.macroEnabled.main+xmlvideo/x-ivf |
application/vnd.ms-word.document.main+xmlvideo/x-ms-asf |
application/vnd.ms-word.fontTable+xmlvideo/x-ms-asf-plugin |
application/vnd.ms-word.listDefs+xmlvideo/x-ms-wm |
application/vnd.ms-word.settings+xmlvideo/x-ms-wmv |
application/vnd.ms-word.styles+xmlvideo/x-ms-wmx |
application/vnd.ms-word.subDoc+xmlvideo/x-ms-wvx |
application/vnd.ms-word.template.12 |
application/vnd.ms-word.template.macroEnabled.12 |
application/vnd.ms-word.template.macroEnabled.main+xml |
application/vnd.ms-word.template.main+xml |
文檔屬性部件
包含了對所有遵循XPS格式的文件定義的核心文檔屬性,例如:
• |
作者 |
• |
標題 |
• |
主題 |
• |
注釋 |
• |
最后保存日期 |
• |
創(chuàng)建日期 |
關系
部件都是單獨的元素,它們組成了2007版本的Office文檔。使用關系,可以用來指定部件集合之間的關聯(lián),從而形成實際的文檔。關系是通過XML來定義的。關系指定了一個源部件和一個目標部件之間的連接。例如,您可以通過一個關系,在一個幻燈片和一個圖片之間定義連接。關系被存儲在文檔容器的XML部件或者“關系部件”當中。如果一個源部件擁有多個關系,所有后續(xù)的關系都將會被列出在相同的XML關系部件當中。
關系在Office XML格式中扮演著重要的角色。每個文檔部件都至少被一個關系所引用著。關系的使用,使得我們可以發(fā)現一個部件與另一個部件之間的關聯(lián),而且無需查找部件的內容。在部件當中,所有到關系的引用都使用一個Relationship ID來表示,它允許所有部件之間的連接,并且它與特定內容的架構無關。

圖 2. 一個Excel 2007工作簿中最高級別的關系圖
下面是一個Excel 2007工作簿中的關系部件的例子,這個工作簿包含兩個工作表:
<Relationships xmlns="http://schemas.microsoft.com/package/2005/06/relationships"> <Relationship ID="rId3" Type="http://schemas.microsoft.com/office/2005/8/relationships/xlStyles" Target="styles.xml"/> <Relationship ID="rId2" Type="http://schemas.microsoft.com/office/2005/8/relationships/xlWorksheet" Target="worksheets/Sheet2.xml"/> <Relationship ID="rId1" Type="http://schemas.microsoft.com/office/2005/8/relationships/xlWorksheet" Target="worksheets/Sheet1.xml"/> <Relationship ID="rId5" Type="http://schemas.microsoft.com/office/2005/8/relationships/xlMetadata" Target="metadata.xml"/> <Relationship ID="rId4" Type="http://schemas.microsoft.com/office/2005/8/relationships/xlSharedStrings" Target="strings.xml"/> </Relationships>
需要注意的是,關系不僅可以表示內部文檔的引用,而且可以表示外部資源的引用。例如,如果一個文檔中包含鏈接的圖片或者對象,那么這些也可以用關系來表示。這使得文檔當中指向外部資源的鏈接更加容易定位,查找和更改。它為您提供了修復壞的外部鏈接,驗證非熟悉資源,或者刪除潛在有害鏈接的能力。
Office XML格式中關系的使用對于開發(fā)人員來說是非常有幫助的。關系簡化了文檔中定位內容的過程,因為您不需要解析特定文檔的XML來查找部件 - 您也不需要解析特定文檔的XML來查找內部和外部文檔資源。關系使得您可以快速的找到一個文檔當中的所有內容。例如,如果您需要計算一個Excel當中工作表的數量,那么您可以在關系部件中查找一共有多少個工作表部件。您也可以使用關系來檢查一個文檔當中的內容類型。這在您需要確定一個文檔中是否包含一種特定的可能會有害(例如一個可疑的OLE對象)或有益(例如有時您希望提取文檔當中所有的JPEG圖片,并用來重用)的內容類型時非常有幫助。
關系也使得您可以在不學習特定應用程序的語法或內容標記時便可以處理文檔。例如,無需任何有關如何處理PowerPoint程序的知識,一個開發(fā)人員便可以通過編輯文檔的關系,輕松地從一個幻燈片當中刪除無關的幻燈片。
啟用宏的文件 vs. 不啟用宏的文件
默認情況下,以Office XML格式保存的Microsoft Office system的文檔是不包含宏的文件,也就是不包含任何代碼。這樣就使得那么惡意的代碼,在默認的文檔格式中,永遠不會被執(zhí)行。同時,2007 Microsoft Office system的文檔仍然可以包含并使用宏,但是用戶或者開發(fā)人員必須將這些文檔保存為一個啟用宏的文檔類型。這種保護機制不會影響您的解決方案的建立,但是它使得企業(yè)使用的文檔更加安全。
啟用宏的文件與不啟用宏的文件的格式完全相同,但是其中會包含一些不啟用宏的文件中沒有的部件。這些附加的部件取決于文檔中自動化代碼的類型。使用VBA的啟用宏的文件包含了一個二進制部件,它存儲了VBA項目。任何使用Excel 4.0樣式宏(XLM宏)的Excel工作簿或者包含命令按鈕的PowerPoint幻燈片也將會保存為啟用宏的文件類型。如果在不啟用宏的文件中包含了一個特定代碼的部件,那么這段代碼的有意或惡意放置的,Office應用程序都不會執(zhí)行該代碼 - 也沒有任何異常。
現在,在打開一個2007 Microsoft Office system的文檔前,您就可以判斷它是否包含代碼。這種“提前通知”在Office之外的應用程序當中也非常容易實現。您可以查看包文件中是否包含基于代碼的部件,而無需運行Office也不會運行潛在危害的代碼。如果一個文件看上去非常可疑,那么您可以刪除文件中所有的可執(zhí)行代碼部件,從而使得代碼不會對您的計算機造成任何危害。
文件擴展名
2007 Microsoft Office system的文檔使用Office XML格式保存文件,它擁有新的文件擴展名,這使得Office可以將這些文件與以前Office版本保存的二進制文件區(qū)分開來。新的文件擴展名是從以前的二進制文件的擴展名延伸而來的,它們只是在后面加上一些后綴。Word 2007,Excel 2007,和PowerPoint 2007使用的默認擴展名只是在原有的文件擴展名上加上一個字母“x”,也就是分別是.docx,.xlsx,和.pptx。其它使用新文件格式的Office文檔類型(包括模板,Add-In,和PowerPoint放映)也都擁有新的擴展名。
在2007 Office版本中其它新的改變還有,為啟用宏的文檔和不啟用宏的文檔使用不同的擴展名。啟用宏的文檔使用的擴展名的結尾是字母“m”,而不是“x”。例如,一個啟用宏的Word 2007文檔使用.docm的擴展名,從而使得用戶或應用程序在打開文檔前就可以判斷出這個文件中是包含代碼的。
表 3. Word 2007 文檔格式的擴展名列表
Word 2007 文件類型 | 擴展名 |
Word 2007 XML 文檔 |
.docx |
Word 2007 XML 啟用宏的文件 |
.docm |
Word 2007 XML 模板 |
.dotx |
Word 2007 XML 啟用宏的模板 |
.dotm |
表 4. Excel 2007文檔格式的擴展名列表
Excel 2007文件類型 | 擴展名 |
Excel 2007 XML 工作表 |
.xlsx |
Excel 2007 XML 啟用宏的工作表 |
.xlsm |
Excel 2007 XML 模板 |
.xltx |
Excel 2007 XML 啟用宏的模板 |
.xltm |
Excel 2007 二進制工作表 |
.xlsb |
Excel 2007 XML 啟用宏的 Add-In |
.xlam |
有 5. PowerPoint 2007文檔格式的擴展名列表
PowerPoint 2007文件類型 | 擴展名 |
PowerPoint 2007 XML 演示文稿 |
.pptx |
PowerPoint 2007 啟用宏的 XML演示文稿 |
.pptm |
PowerPoint 2007 XML模板 |
.potx |
PowerPoint 2007 啟用宏的 XML模板 |
.potm |
PowerPoint 2007 啟用宏的 XML Add-In |
.ppam |
PowerPoint 2007 XML 放映 |
.ppsx |
PowerPoint 2007 啟用宏的 XML 放映 |
.ppsm |
使用Office XML 格式開發(fā)解決方案
Office XML格式使得您可以創(chuàng)建更多的包含文檔的解決方案類型。您可以在新的文件格式中使用任何可以處理ZIP存檔的工具或技術來訪問一個Office文檔中的內容。然后,您可以使用任何標準XML的處理技術來處理文檔內容,或者使用任何適用于文檔中嵌入的二進制格式的文件(例如圖片)的工具來處理這些內容。
另外,2007 Microsoft Office 系統(tǒng)的文檔可以手動的以ZIP存檔的格式打開,為開發(fā)人員帶來了巨大的益處。例如,在建立一個基于Office的解決方案時,您可以檢查一個文檔的內容和結構,而無需編寫任何代碼。這種能力對于解決方案的設計和原型的創(chuàng)建是什么有幫助的。
在一個2007 Microsoft Office system的文檔中,它的結構非常簡單,您可以很方便的瀏覽文檔的部件和它們之間的關系,無論您是定位信息,更改內容,還是想從一個文檔中刪除元素。通過使用XML,以及剛剛發(fā)布的Office引用架構,您可以輕松的創(chuàng)建文檔,將數據添加到現有文檔,或者在文檔中搜索特定內容。
本文剩下的部分提出了一些基于Office XML格式的基于文檔的解決方案場景。這些只是可能創(chuàng)建的解決方案中的一小部分:
• |
數據的互操作性 |
• |
內容處理 |
• |
內容共享和重用 |
• |
文檔裝配件 |
• |
文檔安全性 |
• |
管理敏感信息 |
• |
文檔樣式 |
• |
文檔跟蹤 |
數據的互操作性
XML成為了數據變換較為流行的標準,這使得新的Office XML格式在異類的系統(tǒng)中進行基于文檔的數據訪問更加變?yōu)榭梢浴o論是用戶希望一個部門中共享文檔數據,還是兩個企業(yè)希望交換業(yè)務數據,XML作為Microsoft Office文檔默認的文件格式,都使得Office應用程序實際地參與到業(yè)務處理過程當中,而不會再有以前二進制格式所帶來的限制。
新的文件格式的開放,解除了數據的束縛,并且?guī)砹烁訌V闊的新層次的集成。例如,您可以參考新文件格式發(fā)布的標準,來創(chuàng)建包含豐富數據的文檔,并且無需使用Office應用程序。服務器端的應用程序可以使用大規(guī)模的解決方案批量處理文檔,從而將企業(yè)數據與人們熟悉的,靈活的Office應用程序混合在一起。您可以使用標準的XML協(xié)議,例如XPath(一種通常的XML查詢語言),以及擴展樣式表語言轉換(XSLT)從文檔中獲取數據,或使用外部數據更新一個文檔中的內容。
這種場景可以在對分發(fā)到客戶的大量文檔進行個性化時使用。您可以使用XML的服務器端應用程序,從一個企業(yè)數據庫或客戶關系管理(CRM)應用程序當中提取數據,并將提取出來的信息程序化的插入到一個標準的文檔模板當中。創(chuàng)建這些文檔是非常高效的,因為您根本不需要運行Office應用程序;這種功能也可以用來生成高質量、豐富的Office文檔。
通過使用Office中的自定義架構,您可以使用文檔來共享數據。鎖定在一個二進制格式文件中的信息是非常對于訪問的,因此,文檔應當提供為一種開放的,可交換的數據源。自定義架構不僅可以插入或提取數據,它們也可以向文檔中添加結構,從而強制數據的有效性。
內容處理
編輯現有Office文檔的內容是另外一種有效的示例,其中Office XML格式提高了這種處理過程。這種編輯可能包括更新少量的數據,替換整個部件,刪除部件,或者添加新的部件。通過使用關系和部件,新的文件格式使得文檔的內容更容易查找和處理。XML和XML架構的使用,使得您可以使用通用的XML技術,使用XPath和XSLT,來編輯文檔部件當中的數據。
一種典型的場景就是編輯一個Word文檔中頁眉的文字。當然,這并不是只為一個文檔自動化任務。但是,可以想象另外一個場景,如果一個公司發(fā)生了合并,而他們需要將新公司的名稱更新到成百上千個不同文檔的頁眉,那該怎么辦?開發(fā)人員可以寫一些代碼,來遍歷所有的文檔,在Word文件結構中定位頁眉部件,然后執(zhí)行一個XPath查詢來查找原有的文字。然后,就可以插入新的文字,替換頁眉部件,并且重復這個過程直到每個文檔都被更新。自動化的過程可以節(jié)省大量的時間,這種過程可以避免在人工操作過程中可能出現的錯誤。
另外一個場景是通過更改整個部件來更新現有的Office文檔。在一個Excel 2007工作簿中,您可以通過覆蓋一個工作表的部件,來替換整個工作表中包含的陳舊數據以及過期的計算模型。這種類型的更新也可以應用到二進制的部件當中。如果需要的話,您可以替換一個現有的圖片,或者一個OLE對象。例如,您可以通過覆蓋一個Microsoft Office Visio圖形的部件,來更新嵌入在Office文檔當中的這種類型的OLE對象。您可以將超鏈接的URL更新為指向新的地址。
下面是一些特定應用程序的場景。
Word 2007中的內容處理
通常,在業(yè)務處理中都會將“樣板文件(boilerplate)”文字合并在Word文檔當中。例如,企業(yè)當中創(chuàng)建的每個公開分布的文檔,都需要一個正式的法律聲明或者公布一些條款。另外,很常見的一個樣板文件就是“公司概覽”小節(jié),它可能用于銷售目的,或者發(fā)布企業(yè)的聲明。Word提供的功能,例如AutoText,可以完成格式化文字的插入,但是這種功能在規(guī)模上非常有限,因為它需要Word的自動化任務,或者需要直接的用戶交互。
Word 2007為您向一個文檔中插入內容提供了一種非常靈活的選擇。Word XML格式允許您添加一種叫做文檔構建塊的文檔部件,它在文檔被Word打開時由整個文檔引用。這就意味著,您可以建立一個文檔構建塊的庫,您可以從中得到Word可以展現的文檔格式,并且可以程序化的將它們重用在Word文檔解決方案當中。
在處理Word文檔內容方面強大的能力,也帶來了一些有趣的應用場景,例如服務器端的文檔裝配件。回到前面給出的例子,您可以自動向服務器上創(chuàng)建的一個文檔插入一段法律聲明。那么,可以想象一個跨國公司,它需要在不同語言的文件中包含本地語言版本的法律聲明。這個公司可以創(chuàng)建適當的特定語言的聲明,并保存成.html文件放置在服務器上。重建文檔的應用程序可以將所需的語言相應的文檔片斷插入到文檔的容器當中,并保存為一個部件。然后,這個片斷將展現為Word文檔的一部分。
Excel 2007中的內容處理
為了優(yōu)化加載和保存的性能以及文件大小,Excel 2007為重復的文本在Excel文件中只存儲一份拷貝。為了實現這種功能,Excel在一個文檔部件中實現了一個共享的字符串表,這個部件是由下面的目標來指定的http://schemas.microsoft.com/office/2005/8/relationships/xlSharedStrings。在一個工作簿中,每個不同的文字值在這個部件中只會列出一次。單個工作表的單元格將引用這個字符串表,從而獲取它們的值。
這種處理過程優(yōu)化了Excel XML格式,同時也帶來了一些有趣的內容處理解決方案。在跨國公司工作的開發(fā)人員,可以使用共享的字符串表來提供多語言的支持。他們不再需要為不同的語言建立不同的工作簿,而可以使用一個包含字符串表的工作簿,而這個字符串表可以對應于不同的語言。另外,也可以使用字符串表在工作簿集合中查找關鍵字。處理一個簡單的,基于字符串文本的XML文檔,要比處理有關許多工作簿和工作表的Excel對象模型更為快速和簡單。
PowerPoint 2007中的內容處理
因為PowerPoint 2007的演示文稿是使用PowerPoint XML格式來存儲的,所以它的內容具有高度的可訪問性。因為這是第一版支持XML格式的PowerPoint,所以它較以前的版本相比,可以提供更多的應用場景。您現在對幻燈片和幻燈片的注釋文本擁有完全的訪問能力。您可以據此建立有關查找,索引,和創(chuàng)建演示文稿內容的解決方案。您可以使用XML簡單的生成數據驅動的演示文稿。并且,您也可以訪問幻燈片的母版和幻燈片布局,并通過XML部件程序化的格式現有或新的PowerPoint演示文稿。
您可以通過不同的方式來組裝或重用PowerPoint演示文稿當中的內容。您可以建立一個應用程序,查找現有演示文稿當中存儲的幻燈片目錄。每張幻燈片都被表示為單獨的XML部件,因此,可以建立解決方案來對企業(yè)存儲和管理PowerPoint 2007幻燈片數據進行優(yōu)化。您還可以編寫一個幻燈片“查看器“,它允許用戶查看并選擇他們所需要的幻燈片,并在PowerPoint外輕松的組成一個新的演示文稿。這種應用程序甚至可以是基于Web的應用程序,以方便集中的管理。
內容共享和重用
Office XML格式的模塊化使得我們可以一次生成內容,然后將它重用到多個文檔當中。作為一個開發(fā)人員,您可以想象去創(chuàng)建一些核心的模板,然后在創(chuàng)建其它文檔的時候將這些部分作為構建塊來重用。例如,您可以在一個Word文檔中使用在另外一個Word文檔當中建立的表格。您可以一次性建立圖表(圖表在所有2007 Microsoft Office system應用程序當中擁有通用的架構定義),然后在其它不同類型的文檔中重用這些圖表。對于格式的可訪問性,使得內容共享真正變?yōu)榭赡堋?/p>
在有些場景中,需要在文檔中建立一個圖片的存貯。您可以創(chuàng)建一個解決方案來提取Office文檔集合中的所有圖片,并允許用戶重用這些圖片。因為2007版本中的Office文檔以二進制的部件來存儲圖片,所以您可以簡單的創(chuàng)建一個解決方案來管理圖片庫。然后,那些希望使用以前用過的圖片的用戶,不再需要瀏覽整個文檔集合,也不用單獨打開和關閉每個文檔來查找圖片。他們可以使用自定義的應用程序來查找黑乎乎,并輕松地將它們插入到正在處理的文檔當中。
您可以建立一個類似的應用程序,它重用文檔中提取出來的“縮略圖”圖片,然后將它顯示在文檔管理的過程當中。
文檔裝配件
對于開發(fā)人員來說,一個非常常見的需求就是在不調用Microsoft Office應用程序的情況下,在服務器上創(chuàng)建Microsoft Office文檔。有些企業(yè)需要生成復雜、包含豐富數據的文檔,或者需要大量的組裝文檔,它們需要更加高效的處理,從而實現這些目標。通過,Office應用程序無法被編寫或運行在服務器上。
在Microsoft Office 2003版本中,XML文檔格式的引入可以根據Office 2003 XML Reference Schemas來生成,它幫助我們克服了這種限制。通過對XML的組裝,我們可以建立一個Word或Excel文檔,只要它符合Office架構就可以。在那個時候,這確實是一種巨大的優(yōu)勢,但是不幸的是,它只能應用于Excel和Word,而且只有Word才真正完全的實現了XML文件的支持。2007 Office版本在這些問題上都做出了巨大的努力,它添加了PowerPoint XML文件類型,并且保證PowerPoint XML文件和Excel XML文件都真正得以實現。
2007 Office版本的這種技術上的優(yōu)勢,使得您可以建立Office解決方案,在無需打開Office的情況下就可以生成Excel,Word和PowerPoint文檔。這種解決方案必須根據2007版本的架構來創(chuàng)建XML,并且通過Office XML格式來創(chuàng)建包的內容。雖然Office架構是非常豐富的,但是要完全描述Microsoft Office應用程序中提供的豐富功能,在生成文檔時并不需要所有由格式定義的結構。每個Office應用程序都可以通過一些定義的項打開文件,因而可以這樣去創(chuàng)建許多文件。
注意,文檔裝配件不只適合于新建的文檔。當然,通過遵循Office XML格式的規(guī)則,您無需使用Office便可以通過編程的方式來建立文檔。但是,通常文檔裝配件意味著使用現有的文檔,數據和其它內容建立文檔。新的Office XML格式非常適用于這種應用場景,因為它們本身就是模塊化的結構,而且它們的內容是基于XML的。
文檔裝配件的例子也適用于PowerPoint演示文稿。許多企業(yè)有大量的PowerPoint文件,這些文件擁有巨大的可重用價值。通常,用戶從許多先前的演示文稿中借鑒一些幻燈片,從而創(chuàng)建相關的演示文稿。查找、定位、集成(拷貝和粘貼)幻燈片是非常耗費時間的,冗余的過程,許多企業(yè)都希望自動化這種演示文稿的組成過程。使用2007 Office版本,PowerPoint演示文稿文件中單個的幻燈片可以訪問,因為它們每個都是單獨以XML部件的形式存儲于演示文稿容器包中。可以創(chuàng)建一個解決方案,利用這種結構來完全自動化演示文稿的裝配過程。您可以使用自定義的XML來管理指向單個幻燈片的元數據,因此允許用戶使用預定義的關鍵字輕松的查找它們。在用戶選擇一個幻燈片之后,解決方案將幻燈片的XML部件插入到演示文稿當中,并且創(chuàng)建引用關系。
文檔安全性
在當今的信息技術中,安全性是至關重要的。OS格式幫助您更加安全的處理Office文檔,并且交付考慮文檔安全性的解決方案。通過新的文件格式,您可以建立解決方案,并在引起問題前查找并刪除所有潛在的機密信息。
例如,如果一個公司需要一個解決方案,用來將文檔存儲到一個存檔庫當中,其中不需要運行自定義代碼,或者向一個客戶發(fā)送不包含宏的文檔。您可以編寫一個應用程序,通過查找所有的Office文檔,并且刪除其中指向http://schemas.microsoft.com/office/2006/relationships/vbaProject目標的部件,從而從Office文檔中刪除所有的VBA代碼。這樣,就可以得到一系列更高質量的文件。
另外,Office XML格式為2007版本中的每個產品只提供了一種文件類型(Word的.docm,Excel的.xlsm,以及PowerPoint的.pptm)可以執(zhí)行宏代碼。任何不包含“m”結尾的文件類型都不包含宏代碼,也不能執(zhí)行任何代碼。這樣,就可以保證用戶的安全,而不會受到惡意軟件的影響。
不幸的是,宏代碼不是對于Office用戶唯一的潛在安全性威脅。最近,安全性的問題在.jpg二進制文件當中也發(fā)現了。您可以從這些二進制文件中檢查的風險,例如OLE對象和圖片,并且詢問Office文檔并刪除所有引發(fā)的問題。例如,如果一個特定的OLE對象被認為是一種已知的安全威脅,那么您可以創(chuàng)建一個應用程序,在所有包含這種對象的文檔中進行定位和清除。類似的,您也可以通過檢查文檔中的關系部件,快速的確定2007 Microsoft Office system文檔的所有外部引用。這種確定使得解決方案的開發(fā)人員可以決定,文檔中引用的外部資源是否正確可信。
您可以根據內容類型和關系來阻止部件。例如,如果一個IT管理員發(fā)現.gif圖片當中存在著安全隱患,那么就可以使用一種組策略來拒絕2007 Microsoft Office system文檔當中所有gif圖片內容的加載。在部署正確的安全補丁后,IT管理員可以確定所有的用戶都可以更加安全的使用文檔。
您也可以通過格式策略來阻止部件。例如,如果IT管理員發(fā)現一段不完整的注釋可能會引起PowerPoint引發(fā)緩沖區(qū)溢出問題,那么可以通過部署一個Office文件格式策略來保護用戶和他們的計算機。這時,不會阻止內容類型(因為在這種情況下,它只是一個包含文本的XML),而是特別的通過阻止schemas.microsoft.com/office/2006/relationships/comments類型來阻止注釋。管理員可以使用Microsoft Office策略模板(.adm文件)來設置這些選項。有關使用Office策略模板的更多信息,可以查閱Microsoft知識庫里面的文章Administrators Can Use Office Policy Templates with the Group Policy Settings of Windows。
管理敏感信息
在保護用戶阻止他們運行有害內容的同時,您也可以幫助用戶在共享數據的同時保護他們的機密信息。這種數據可能包含一些個性化信息,或者跟蹤的更改,注釋和標注,他們可能不希望共享這些信息。您可以用程序來刪除這些信息,而不需要改動整個文件。例如,要刪除文檔的注釋,您可以檢查注釋部件關系是否存在,如果存在,那么將關聯(lián)的注釋部件刪除。
除了保護PII和注釋外,Office XML格式還允許對這些信息的訪問,在其它的一些情況下可能會很有用。您可以創(chuàng)建一個解決方案,使用PII數據來返回一個文檔作者的列表。通過新的文件格式,在無需打開Office或使用它的對象模型的情況下,便可以生成這個列表。類似的,應用程序可以遍歷一個目錄,查看其中的所有Office文檔,并且聚合文檔中所有注釋。您可以添加額外的條件來保證注釋的質量,從而幫助用戶更好的管理他們所創(chuàng)建的文檔。
文檔樣式
在使用Office XML格式的Office文檔方面,文檔樣式、格式和字體,也都是在容器包中單獨的XML部件中維護的。因此,需要重申的是,您可以創(chuàng)建解決方案來利用這些特點。一些企業(yè)擁有非常特殊的文檔標準,而管理這些文檔又是非常耗費時間的。那么,您就可以在不打開Office的情況下修改或替換文檔當中的字體。
另外,通常會出現一些文檔,它們擁有相同的內容,但是不同的部門、地區(qū)或目標用戶把它們進行了不同的格式化。您可以使用一個單一的文檔來維護內容,并在必要的情況下應用一個新的樣式集合。為了實現這一點,您需要使用其它的部件來替換指向http://schemas.microsoft.com/office/2006/relationships/styleSheet的部件。這種簡單的替換,使得您無需管理許多的文檔內容,而只是控制一個文檔的展現方式。
文檔跟蹤
在信息技術當中,如何有效的管理文檔是一個十分棘手的問題。在Microsoft Office 2003中,您可以使用OLE來訪問Office文件的原有屬性,例如作者、標題、主題和其它屬性。在新的Office XML格式當中,文檔屬性也非常容易訪問,因為這些屬性都存儲在文檔的一個部件當中。下面是一個Word .doc文件的文檔屬性部件的救命。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <CoreProperties xmlns="http://schemas.microsoft.com/package/2005/06/md/core-properties"> <Title>Word Document Sample</Title> <Subject>Microsoft Office Word 2007</Subject> <Creator>2007 Microsoft Office System User</Creator> <Keywords/> <Description>2007 Microsoft Office system .docx file</Description> <LastModifiedBy>2007 Microsoft Office System User</LastModifiedBy> <Revision>2</Revision> <DateCreated>2005-05-05T20:01:00Z</DateCreated> <DateModified>2005-05-05T20:02:00Z</DateModified> </CoreProperties>
但是,使用新文件格式的Office文檔,允許您添加您自己的數據和內容,而不僅僅局限于Office所提供的屬性。例如,對于高級的文檔跟蹤,您可以創(chuàng)建您自定義的XML,并將它放置在文件當中作為另外一個部件。您可以使用任何可以訪問Office XML格式的工具或應用程序來使用這個XML部件。
在Office產品中使用新的文件格式
在Office產品中,新的文件格式的實現有很多通用的部件,也有很多組件是特定于每個產品的。
Excel 2007中的文件格式結構
除了擁有每個Office產品通用的部件(例如XML數據部件,關系部件,和多媒體部件)以外,Excel還為工作簿、工作表,以及像圖表、數據透視圖、數據透視表等實體提供了單獨的部件。
PowerPoint 2007中的文件格式結構
在PowerPoint的文件格式中,使用了許多與其它產品相同的部件,同時還使用了一些特定于幻燈片演示文稿的對象,例如幻燈片部件,母版部件,演示文稿部件等。
Word 2007中的文件格式結構
同樣,Word也使用了關于文檔屬性、樣式和格式、頁腳、頁眉、注釋等額外的部件。
修改 Office XML 文件格式來自定義用戶界面
下面的步驟展示了如何在Excel 2007中創(chuàng)建一個自定義的用戶界面(UI),它通過修改一個啟用宏的工作簿文件,包含了調用一個自定義宏的組件。在這個例子中,您將實現:
• |
使用宏創(chuàng)建一個Excel工作簿,并將工作簿保存為Office XML格式的啟用宏文件(.xlsm)。 |
• |
創(chuàng)建一個簡單的界面,其中包含一個tab,一個group,和一個button。 |
• |
為button指定一個回調事件,讓它來調用您在文檔中創(chuàng)建的宏。 |
• |
修改啟用宏的文檔的容器文件的內容,將它指向您擴展的自定義文件。 |
• |
將啟用宏的文件保存,并在Excel中打開。 |
在Excel中創(chuàng)建一個啟用宏的Office XML格式的文件
1. |
打開Excel 2007. |
2. |
點擊開發(fā)工具選項卡,然后點擊Visual Basic。 注意: 如果您無法看到開發(fā)工具選項卡,那么您需要確認您自己是一名開發(fā)人員。在Excel中,點擊Microsoft Office按鈕,點擊Excel選項,選擇常用,然后選擇在功能區(qū)顯示“開發(fā)工具”選項卡。這是一個全局的文墨,這樣會在所有其它的Office應用程序當中將您確認為一名開發(fā)人員。 |
3. |
在Visual Basic 編輯器中,雙擊ThisWorkbook 來打開代碼窗口。 |
4. |
鍵入下列VBA代碼,然后關閉Visual Basic編輯器: Visual Basic Sub MyButtonMacro(ByVal ControlID As IRibbonControl) Msgbox("Hello world") End Sub |
5. |
將工作簿保存為Office XML 格式的啟用宏的文件(.xlsm)。 |
創(chuàng)建包含標記的XML文件來修改UI
1. |
在您的桌面上創(chuàng)建一個叫做customUI的目錄。 |
2. |
在文本編輯器中打開一個新文件,然后將它保存為customUI.xml 并放置到customUI目錄。 |
3. |
向文件中添加下列代碼: <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon startFromScratch="true"> <tabs> <tab id=":CustomTab" label="My Tab"> <group id="SimpleControls" label="Sample Group"> <button id="Button1" size="large" label="Large Button" onAction="ThisWorkbook.MyButtonMacro" /> </group> </tab> </tabs> </ribbon> </customUI> |
接下來,您需要修改之前創(chuàng)建的啟用宏的文件容器中包含的文件:
1. |
為工作簿文件添加一個.zip擴展名,然后雙擊打開它。 |
2. |
將customUI目錄從桌面拖拽到ZIP文件當中,從而將自定義的文件添加到容器當中。 |
3. |
將.rels文件提取到您的桌面上。其中一個叫做_rels的目錄中包含了一個.rels文件,將它復制到您的桌面上。 |
4. |
打開.rels文件,并在最后一個Relationship標記和Relationships標記之間添加下列行。它在工作簿文件和自定義的文件之間創(chuàng)建一個關系。 <Relationship Id="someID" Type="http://schemas.microsoft.com/office/2006/relationships/ui /extensibility" Target="customUI/customUI.xml" /> |
5. |
關閉并保存文件。 |
6. |
將_rels目錄從桌面拖拽回容器文件,并選擇覆蓋現有的文件。 |
7. |
刪除工作簿文件的.zip擴展名,使它恢復到原來的文件名。 |
8. |
打開工作簿,這時將會看到在功能區(qū)中會顯示一個My Tab選項卡。 |
9. |
點擊按鍵,然后會顯示一個消息框。 |
結論
用戶、企業(yè)、和開發(fā)人員都將從2007版本的Microsoft Office system的Office XML格式中受益匪淺。作為一種開放的,基于XML的默認文件格式,新的文件格式為您提供了創(chuàng)建更多解決方案和應用場景的機會。您可以將文檔作為數據源訪問,在Office應用程序以外處理它們,并且在企業(yè)解決方案中進行處理。企業(yè)可以將現有的業(yè)務系統(tǒng)與Microsoft Office system平臺集成,其中2007 Office版本和新的基于XML的文件格式都將對您有著巨大的幫助。
相關資源
更多相關信息,請查閱下列資源:
• | |
• | |
• |
posted on 2008-05-17 09:42 風 閱讀(1497) 評論(0) 編輯 收藏 所屬分類: 收藏 、Open XML