Office (2007) Open XML 文件格式简介
Office (2007) Open XML 文件格式简介
Frank Rice, Microsoft Corporation
学习Office Open XML格式的优势。用户可以在Office应用程序和企业系统之间使用XML和ZIP技术来交换数据。文档是全局可以访问的。并且,您还可以减少文件损坏的风险。
适用于: 2007 Microsoft Office 套件,Microsoft Office Excel 2007,Microsoft Office PowerPoint 2007,Microsoft Office Word 2007
本页内容
Office Open XML 文件格式简介 | |
新的文件格式应用场景 | |
新的文件格式的优势 | |
Office Open XML 格式的术语列表 | |
Office XML 格式的结构 | |
使用Office XML 格式开发解决方案 | |
在Office产品中使用新的文件格式 | |
修改 Office XML 文件格式来自定义用户界面 | |
结论 | |
相关资源 |
Office Open XML 文件格式简介
随着20世纪90年代XML的出现,企业计算客户开始逐渐认识到,在他们所依赖的计算机产品和应用中采用开放的格式和标准所带来的商业价值。IT专业人员将从通用的数据格式中受益匪浅,这种格式可能是XML,因为它拥有被应用程序、平台和Internet浏览器读取的能力。
同样,随着在Microsoft Office 2000中对于XML格式的支持与采用,开发人员开始认识到,他们需要将以前的Microsoft Office版本中的二进制文件格式转换为XML格式。二进制文件(.doc,.dot,.xls,以及.ppt文件)在过去几年中一直肩负着存储和转换数据的重任,而现在它们无法满足新的市场需求的挑战,其中包括轻松地在异构应用之间传递数据,以及允许用户从这些数据中搜集商业信息。
2007 Microsoft Office system为Microsoft Office Excel 2007,Microsoft Office Word 2007,和Microsoft Office PowerPoint 2007采用了基于XML的文件格式,从而延续了这种转移。新的文件格式,称为Office Open XML格式,解决了上述市场需求的问题,同时改变了您基于Microsoft Office文档建立解决方案的方式。
新的格式增强了文件与数据的管理能力,数据恢复能力,以及与业务线系统的互操作能力。它们是对早期版本的二进制文件的扩展。任何支持XML的应用程序都可以访问新文件格式当中的数据,并与之协同工作。这些应用程序并不需要成为Microsoft Office system或Microsoft产品的一部分。用户也可以使用标准的转换来提取或重新组织数据。另外,有关安全性的担忧也大大的降低,因为信息是存储在XML当中的,它从本质上来讲都是纯文本的。因此,数据可以没有任何障碍地通过企业防火墙进行传递。
注意:
不要将Office Open XML格式与Microsoft Windows XML Paper Specification格式相混淆。Office Open XML格式使用Open Packaging Conventions,XML Paper Specification (XPS)也使用它。但是,这两种格式在许多重要的方面是不同的。XPS是一个页面内的,固定的文档格式,它是在Microsoft Windows Vista操作系统当中所引入的。而Office Open XML格式是面向Office Word 2007,Office Excel 2007,和Office PowerPoint 2007的完全可编辑的文件格式。虽然它们在XML和ZIP压缩的使用方面有很多相似的地方,但是它们在文件格式的设计和使用目的上还是有着很大的不同。
新的文件格式应用场景
Office Open XML文件格式改变了客户处理数据的方式。对于下面的一些场景,新的文件格式使之变为可能:
• | 一个服务器端的过程可以从一个ZIP压缩包中读取其中一项,而无需将它们所有的内容解压。例如,您可以只提取文档的数据中包含的XML文件,而不需要打开包含文档的格式、属性和其它辅助信息的文件。 |
• | 在更多场景中,新的文件容器对于用户来说是透明的。它看上去就像一个传统的二进制文档文件。但是,新的XML格式文档是经过压缩的,所以更小,从而也更便于在其它用户之间通过电子邮件或其它方式进行发送。 |
• | 杀毒软件和服务器应用程序都可以更加方便的提取容器里的内容,从而直接查看影响的项,而不需要破坏整个容器或者里面的内容。 |
• | 文件可以以新的文件格式保存,而不包含可执行的宏代码。(如果希望保存的话,可以选择启用宏的文件格式,相关内容会在本文的后面进行讨论。)因此,它们可以被认为是十分安全的,并且可以通过防火墙进行传输,或者通过电子邮件进行发送,而不需要考虑安全性的问题。这种行为是由Microsoft Office应用程序所强制的。如果一个宏被添加到了一个Office Open XML格式的文件当中,那么Office将不允许这种文档的打开。 注意: 一些ZIP应用程序允许你创建加密的文件。新的文件格式不能创建加密的文件。如果你企图读取一个加密的文件,那么它将会停止文件的读取并返回一个错误。 |
• | 如果容器中的一项损坏了,那么其它的项还是可用的。例如,如果一个用户尝试打开一个损坏了的磁盘上的损坏了的文件,那么Office文件恢复机制将重新建立中心目录,并完全恢复文件的内容。 |
• | Office的开发人员可以使用Microsoft WinFX应用程序编程接口(API)来创建一个有效的XPS文件。这些API可以帮助你建立解决方案,并与新的文件格式进行交互。如果一个由其它ZIP应用程序创建的ZIP压缩包没有使用特定的ZIP功能,那么Office的开发人员也可以使用API来打开它。 注意: Microsoft Office创建的文件符合Open Packaging Conventions,所以WinFX API可以进行读取,相反的,WinFX也可以创建一些包,允许您使用Microsoft Office 应用程序来打开它们。WinFX API可以与Microsoft Windows的以前版本协同工作,包括:Microsoft Windows Vista,Microsoft Windows Server 2003,和Microsoft Windows XP。另外,转换器对于Microsoft Office 2000,Microsoft Office XP,和Microsoft Office 2003版本也是可用的。 |
新的文件格式也改变了Office用户使用那些用来处理日常事务的应用程序的方式,下面的场景描述了一些新的格式所带来的工作方式上的改变,这些任务都是通常使用2007 Office来完成的:
• | Howard,是一个好奇心很强的用户,他发现2007 Office版本中包含的新的文件格式是一个ZIP文件。Howard希望自己亲自看一看,因此他使用一个ZIP应用程序打开了一个在Word 2007中创建的文档。它看到了一些文件,好像都是XML文档的内容,还有一些图片正是他在原始的文档中看到过的图片。于是,好奇的Howard在记事本中打开了一个XML文件,想看看Word生成的XML文件的格式是什么样的。在了解了压缩包中的文件结构后,他关闭了记事本和ZIP应用程序,重新在Word中打开文件并继续他的文档处理工作。 |
• | Jan需要改变她的Word 2007文档的一个文档属性。她在一个ZIP应用程序中打开了新的格式文件,它提取了其中包含文档属性的XML项,做出了一些更改,然后又把这一项添加回原来的容器,然后保存并关闭容器。然后,她又在Word中打开了文档,她发现所有的内容都没有改变,而只有那么需要改变的属性被她修改了。 |
• | 一个顾问公司的logo需要进行改变,从而反应他们的新目标。IT部门接到了这个改变成千上万的文件中所有logo的任务,这些文档都被保存在一个服务器当中。在以前版本的Microsoft Office应用程序中,他们必须单独打开每个文档,删除原有的logo,并且粘贴新的logo,或者创建并且测试一个相当复杂的应用程序,来自动的执行这个任务。通过新的文件格式,IT部门创建一个批处理过程来浏览文件的格式,并且在meida目录中定位图片的位置(这对于每个文档都是一样的),并且替换为新的图片。现在,当打开新的文档后,新的logo就自动的显示出来了。 |
• | 一个法律公司必须保护客户的机密数据,以及他们自己的数据。基于标准的实践,公司了解到创建使用Word所创建的一些文档存储了许多属性 - 有些是可见的,而有些则是在文档中不可见的。其中一些属性可能会包含客户的敏感信息或者企业的机密信息。通过不断的尝试和失败。公司创建一个程序来删除这些信息。但是,这个程序非常耗时,并且因为它独立于用户,所以经常会出现错误。通过使用新的文件格式,IT部门的开发人员开发了一个简单的批处理程序,它在文档的压缩包中浏览整个目录结构从而删除指定的部件。公司现在可以保护所有的客户敏感信息和机密信息,并将它们从文档中删除掉。 |
• | Denise正在对她的硕士学位的毕业论文做出最后的修改。在添加完参考文献后,它准备进行最后的保存。这时,恐怖的事情发生了,在保存文档的时候发生了意外停止,并且她收到了文档可能损坏的消息。在她就要崩溃的时候,她突然想到她使用的是新的文件格式。于是,她将文本导出到一个新的文档中,重新附加图片,并且引入格式和样式部分,从而成功的重新构造文档。然后,她保存了新的文档。 |
• | Elizabeth是一个Windows 2000用户,它正在使用Office 2000,其中安装了转换器来打开2007 Office的文档。她可以打开了一个Word XML格式的文档。另外,她可以编辑文档,并且重新将它保存为新的文档格式,因为转换器提供了打开和保存的支持。 |
新的文件格式的优势
新的Office Open XML格式带来了一系列的优势,它不但可以帮助开发人员建立解决方案,而且可以帮助最终用户和所以规模的企业。
下面列出了一些Office Open XML格式所带来的总体上的优势:
• | 简单将商业信息与文档相集成。Office Open XML格式允许快速地从数据源创建文档,加速文档的装配件,数据挖掘和内容的重用。Office应用程序和企业业务系统之间的数据交换得到了简化。另外,您可以更改Office文档中的信息,或者使用非Office应用程序通过文档容器的方式来创建文档。企业员工可以在所有支持XML读写的应用程序当中,通过更加快速准确地发布、搜索、和重用信息,从而提高他们的生产效率。 |
• | 开放并且是免税的。Office Open XML格式是基于XML和ZIP技术的,因此它们可以随便地使用。格式和架构的详细标准说明将会发布出来,并且会处于与现在已经存在的Microsoft Office 2003引用的架构相同的免税条约下,并且它是开放使用的,可以用于生产用途。 |
• | 互操作性。Office Open XML格式是以工业标准的XML为核心的,Microsoft Office应用程序与企业业务系统之间的数据交换得到了简化。无需访问Office应用程序,解决方案就可以更改Office文档当中的信息,或者使用标准的处理XML的工具和技术来创建文档。新的格式允许您构建文档的存档,而无需使用Office的代码。 |
• | 健壮性。Office Open XML格式被设计为比二进制格式更加健壮,而且因此可以帮助降低由于文件损坏所带来的信息丢失的风险。即使在Office外面对于文档的修改和创建也不会对文档造成过多的损坏,因此使用新的文件格式,Office应用程序被设计为使用增强的可靠性来恢复文档。随着越来越多的文档穿梭与电子邮件的附加或可移动的存储设备之间,网络或存储设备的损坏增加了文档损坏的可能性。 新的文件格式通过将文档在文件包中进行分段单独的存储,增强了数据恢复的能力。这将大大的节省企业用于恢复数据丢失所花费的大量资金和时间。当一个文件组件损坏时,文件中的剩余部分还可以在应用程序中打开。例如,如果一幅图表被损坏了,这也并不能阻止客户打开文档中的其它部分,当然不包括图表。另外,Office应用程序可以检测这些问题,并且在打开文档的时候尝试修复它,恢复文档正确的数据结构。 |
• | 高效性。Office Open XML格式使用ZIP和压缩技术来存储文档。这种新格式的一个巨大的优势就在于它的文件大小非常小 - 最大的压缩比可以达到原来二进制文件的百分之75。这是使用XML和ZIP技术结合进行文件存储的一大优势。因为XML是一个基于文本的格式,所以压缩的比率非常的好,而且ZIP容器支持内容的压缩,所以用户可以大大的减小文件的尺寸。文件压缩的类型提供了潜在的成本节约,因为它减少了存储文件所需的磁盘容量,并且减少了通过电子邮件、网络和Web进行文件传输所需的带宽。 |
• | 安全性。Office Open XML的开放性使得它更加的安全。您可以保密的共享文档,因为您可以简单的确认并删除一些个人信息或者是商业机密信息,例如用户名、注释和文件路径。类似的,你可以确定文件包含的内容,例如OLE对象或者Microsoft Visual Basic for Applications (VBA)代码,从而进行特殊的处理。文件格式也可以帮助提高安全性,防止文档中保存嵌入的代码或宏。默认情况下,新的Word 2007,Excel 2007和PowerPoint 2007的文件格式不包含嵌入的可执行代码。因此,如何一个人发送了一封电子邮件,其中包含了一个Word文档作为附件,他或她可以打开文档并且不会执行任何潜在的有害可执行代码。Office Open XML格式包含一种特殊用途的格式,它拥有一个单独的扩展名,其中可以包括嵌入的代码,这样就允许IT员工快速的判断文件中是否包含代码。 |
• | 向后兼容性。2007 Microsoft Office system是向后兼容的,它可以兼容早期的版本:Microsoft Office 2000,Microsoft Office XP,和Microsoft Office 2003.这些版本的用户可以采用新的格式,或者继续使用现有的文件格式。特别地,他们可以继续使用原有的.doc,.xls,和.ppt的二进制格式的文件,它们与2007的文件格式是完全兼容的。早期Office版本的用户可以下载一个免费的更新,它允许您在他们早期的版本中打开和编辑这种新格式的文件。那些安装2007 Office版本的用户可以将默认的文件格式设定为他们需要的一种格式。这样可以帮助确保用户继续与基于早期版本的第三方解决方案协同工作,并且与他们的同事、提供商、客户和其它已经升级的用户协同工作。 |
Office Open XML 格式的术语列表
下面的列表定义了这篇文章和相关内容中使用的术语:
• | API 一系列的功能或方法,用来访问软件的功能。API是应用程序接口(Application Programming Interface)的简写。 |
• | 转换器(Converters) 一些免费的工具,可以在以前的Office版本中打开以Office Open XML格式创建的文件。 注意: 转换器可以读取或编辑文档,并且可以向文档中应用信息权限管理(IRM)保护。它可以继续保护IRM信息,而与接收者是使用2007 Office版本还是原有的版本无关。 |
• | 向前兼容性。早期的应用程序版本可以打开后面版本的文档,并且可以忽略那些在早期版本中没有实现的功能。例如,Word 2003就是与Word 2007向前兼容的,它可以使用一个转换器成功的打开Word 2007文件。 |
• | Office Open XML格式。一种构建块及关系的结构,用来组织、打包、分发,并展现以文档为中心的内容。这些构建块定义了一个文件格式与平台独立的框架,这允许软件应用程序可靠并一致地生成,交换,并显示文档。 |
• | 包。ZIP容器,它包含了组成文件的组件(部件),在Open Packaging Conventions细则中定义。 |
• | 部件。对应于包中一个文件。例如,如果一个用户双击一个Excel 2007文件,并且选择提取它,他或她将可以看到这些文件,例如一个Workbook.xml文件和几个sheetn.xml文件。其中每个文件都是这个包的一部分。 |
• | 关系。指定部件的集合在一个文档中如何绑定在一起的方法。这种方法指定了一个源部件和一个目标部件之间的连接。关系也是存储在文档包的XML部件当中的(例如,/_rels/.rels)。 |
• | XML。扩展标记语言(XML)是一种简单,灵活的文本格式,用做电子发布以及Internet和其它地方进行广泛的数据交换。 |
• | ZIP。一种工业标准的压缩存档格式,用来在计算机之间,使用电子邮件或者通过Internet存储和转换文件。 |
Office XML 格式的结构
新的文件格式的容器是基于简单的分部分的压缩的ZIP文件格式。在新的Office Open XML格式的核心使用一些XML的引用架构和一个ZIP容器。每个文件都是由一些部件的集合组成的;这个集合定义了文档。
文档部件是存储在容器文件当中,或者存储在基于工业标准的ZIP格式的包中。许多部件都是用来描述应用程序数据,元数据,以及自定义数据的XML数据,它们都是存储在容器文件当中的。其它非XML部件,也可以包含在容器包当中,其中包括在文档中表示图片或者嵌入的OLE对象的二进制文件。另外,还有一些关系部件,它们指定了部件之间的关系;这种设计方式为Office文件提供了结构。部件组成了文件的内容,而关系描述了这些内容如何组织在一起。
Office文档的XML文件格式紧密的集成在一起,但是它们是模块化的,并且具有高度的灵活性。在下面的一些章节中,详细地描述了Office XML格式的每个组成部分。它们也使用新的文件格式描述了Office应用程序。
注意:
为了理解一个Office XML格式文件的组成,您可以希望提取一个文件。为了打开文件,您可以使用一个ZIP应用程序,例如将WinZip(来自WinZip Computing Corporation)安装到您的计算机当中。
为了打开一个Word 2007 XML文件
1. |
创建一个临时目录来存储文件和它的部件。 |
2. |
创建一个Word 2007文档,包括文本,图片,以及其它元素,保存为一个.docx文件。 |
3. |
在文件名的末端添加一个.zip扩展名。 |
4. |
双击文件。这时将会在ZIP应用程序当中打开该文件。您可以查看组成文件的每个部件。 |
5. |
将这些部件提取到刚才创建的临时目录当中。 |
ZIP 包
许多元素都用来创建一个Microsoft Office文档。其中一些是共享在所有的Office应用程序当中的,例如,文档的属性,样式表,图表,链接,图形,和图片。其它的元素是特定于每个应用程序的,比较Excel当中的worksheet,PowerPoint中的slide,或者Word的页首和页尾。
当用户使用Office 2003或Microsoft Office以前的版本保存文档的时候,在磁盘上只会写一个单一的文件,这时您可以简单的打开。这表示了文档是实际如何存储,管理和共享的。通过在一个ZIP容器中包装2007 Microsoft Office system的文件中的单独部件,文档也被保存为一个单一的文件实例。使用单一的包文件来表示一个单一文件的实体,使得用户可以在保存和打开Office(2007)文档时,拥有与以前的Office版本相同的体验。他们可以继续处理单一的文件。
在以前的Office版本当中,开发人员如果希望管理一个Office文档的内容,那么他们需要了解如何根据这种二进制文件定义的存储结构,读取和写入数据。这种过程是非常复杂的,因为Office的二进制文件被设计为主要由Office应用程序访问。应用程序内存内的结构反应的格式都可以运行在内存和硬盘比较低的计算机当中。另外,不使用Office应用程序而对Office二进制文件进行程序化的修改,被认为是文件损坏的主要原因。这使得许多开发人员不敢去修改Office二进制文件。
ZIP被选择为Office Open XML格式的包格式,因为它是一种理解良好的工业标准。现在,有许多的工具都可以处理ZIP格式,而且使用ZIP提供一种灵活的,模块化的结构,允许对于功能进行扩展。因此,您可以使用任何可以处理工业标准的ZIP文件的工具,来访问2007 Microsoft Office system的所有内容。在您打开一个容器文件后,您可以处理文档包中的任何部件。例如,您可以使用Office Open XML格式打开一个Word 2007文档,定位表示Word文档体的XML部件,使用任何可以编辑XML的工具来修改这个部件,然后将XML部件返回到容器包当中,从而创建一个更新的Office文档。
部件
在一个Office XML格式的包当中,文件的许多逻辑部件都作为单独的文件或部分存储。这种模块化的存储方式是这种文件格式的主要特点之一。模块化允许您快速的定位一个特定的部件,并且直接处理这个部件。您可以根据预期的商业需求,编辑,替换,甚至删除文档的部件。
所有的Office应用程序都共享相同的部件类型,例如缩略图,元数据,多媒体,和关系部件。其它一致的内容也在所有的文件中存在于一个特定的部件当中,例如文档属性。但是,也有许多部件是特定于应用程序的文档类型的。例如,一个工作表的部件只存在于Excel文档当中,而slide master部件只存在于PowerPoint文档当中。
需要注意的是,在Open Packaging Conventions中定义了一些例外,实际的文件的目录结构是专有的。包中定义的文件关系,而不是文件结构,定义了哪些文件是有效的。在您更新关系属性的时候,您可以重新排布或者重命名一个Office(2007)XML 格式定义的ZIP容器里的部件,从而使得文档中的每个部件可以相关。如果关系是精确的,那么文件可以正确的打开。一个Office XML格式文件中初始的文件结构是在创建文档的时候建立的。这种默认的结构允许您简单的决定Office XML格式文件的组成。假设您保存当前的关系,您可以更改这种默认的文件结构。更多相关信息,请查看Walkthrough: Word 2007 Open XML File Format。
部件可以是不同的内容类型。用来描述Microsoft Office应用程序数据的部件是以XML的方式存储的。这些部件遵循XML引用架构的定义,它定义了相关的Office功能或对象。例如,在一个Excel 2007文件当中,表示一个工作表的数据可以在一个XML部件当中找到,它将一个Office架构附加到Excel工作表当中。另外,如果在一个工作簿中包含多个工作表,那么将会对每个工作表都有相应的一个XML部件存储在包文件当中。所有的表示默认Office文档部件的架构都将被完全的文档化,并且可以从Microsoft的站点上进行下载,而且是免税使用的。然后,通过使用标准的基于XML的技术,您可以应用您在Office架构方面的知识,更加轻松的转换和创建2007 Microsoft Office system的文档。
在许多场景中,以本地内容类型存储部件是有益的。这些部件不是以XML的格式存储的。例如,2007版本的Office文档中的图片,就是在文档包中按照二进制文件的形式来存储的(.png,.jpg,和其它文件类型)。因此,您可以通过使用一个ZIP应用程序来打开包容器,并且立即查看,编辑或者替换这种本地格式的图片。这种存储方式不仅访问起来更加容易,而且它也比将图片存储为XML格式需要更少的内容处理量和磁盘空间。另外一种值得关注的,以二进制方式存储的部件是VBA项目和嵌入的OLE对象。(嵌入的OLE对象是二进制的,只要相关的OLE服务器提供的是二进制的表示形式。例如,2007 Microsoft Office system嵌入的文档将它们的内容作为其它包嵌入。)对于开发人员来说,这种可访问性使得许多场景更加容易实现。例如,您可以建立一个解决方案,用来枚举2007 Microsoft Office system的所有文件,将一个现有的OLE对象更新到一个更新的版本。您可以无需使用Office应用程序或者修改文档特定的XML内容,便可以实现这些应用程序场景。下面的章节简要的描述了一些部件,它们对于所有支持Office XML格式的Office应用程序是通用的。这些类型和部件的数据决定于创建ZIP容器文件的应用程序。例如,Word 2007创建了与文档相关的部件,但是PowerPoint 2007创建与幻灯片展示相关的部件。
_rels 目录
这个目录中包含一个.rels文件,它定义了包中的根关系。它是在解析整个包时首先要浏览的第一个文件。
.rels 文件
包含了基于起始部件(虚拟的起始部件)的关系。其中的关系是通过下面的格式来定义的:
<Relationship Id="someID" Type="relationshipType" Target="targetPart"/>
其中:
Id 可以是任何字符串,只要它在.rels文件当中是唯一的就可以。
Type 表示关系的类型,它用来区分不同的关系,并且用来提示关系的用途。它指向定义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格式的文件定义的核心文档属性,例如:
• | 作者 |
• | 标题 |
• | 主题 |
• | 注释 |
• | 最后保存日期 |
• | 创建日期 |
关系
部件都是单独的元素,它们组成了2007版本的Office文档。使用关系,可以用来指定部件集合之间的关联,从而形成实际的文档。关系是通过XML来定义的。关系指定了一个源部件和一个目标部件之间的连接。例如,您可以通过一个关系,在一个幻灯片和一个图片之间定义连接。关系被存储在文档容器的XML部件或者“关系部件”当中。如果一个源部件拥有多个关系,所有后续的关系都将会被列出在相同的XML关系部件当中。
关系在Office XML格式中扮演着重要的角色。每个文档部件都至少被一个关系所引用着。关系的使用,使得我们可以发现一个部件与另一个部件之间的关联,而且无需查找部件的内容。在部件当中,所有到关系的引用都使用一个Relationship ID来表示,它允许所有部件之间的连接,并且它与特定内容的架构无关。
下面是一个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格式中关系的使用对于开发人员来说是非常有帮助的。关系简化了文档中定位内容的过程,因为您不需要解析特定文档的XML来查找部件 - 您也不需要解析特定文档的XML来查找内部和外部文档资源。关系使得您可以快速的找到一个文档当中的所有内容。例如,如果您需要计算一个Excel当中工作表的数量,那么您可以在关系部件中查找一共有多少个工作表部件。您也可以使用关系来检查一个文档当中的内容类型。这在您需要确定一个文档中是否包含一种特定的可能会有害(例如一个可疑的OLE对象)或有益(例如有时您希望提取文档当中所有的JPEG图片,并用来重用)的内容类型时非常有帮助。
关系也使得您可以在不学习特定应用程序的语法或内容标记时便可以处理文档。例如,无需任何有关如何处理PowerPoint程序的知识,一个开发人员便可以通过编辑文档的关系,轻松地从一个幻灯片当中删除无关的幻灯片。
启用宏的文件 vs. 不启用宏的文件
默认情况下,以Office XML格式保存的Microsoft Office system的文档是不包含宏的文件,也就是不包含任何代码。这样就使得那么恶意的代码,在默认的文档格式中,永远不会被执行。同时,2007 Microsoft Office system的文档仍然可以包含并使用宏,但是用户或者开发人员必须将这些文档保存为一个启用宏的文档类型。这种保护机制不会影响您的解决方案的建立,但是它使得企业使用的文档更加安全。
启用宏的文件与不启用宏的文件的格式完全相同,但是其中会包含一些不启用宏的文件中没有的部件。这些附加的部件取决于文档中自动化代码的类型。使用VBA的启用宏的文件包含了一个二进制部件,它存储了VBA项目。任何使用Excel 4.0样式宏(XLM宏)的Excel工作簿或者包含命令按钮的PowerPoint幻灯片也将会保存为启用宏的文件类型。如果在不启用宏的文件中包含了一个特定代码的部件,那么这段代码的有意或恶意放置的,Office应用程序都不会执行该代码 - 也没有任何异常。
现在,在打开一个2007 Microsoft Office system的文档前,您就可以判断它是否包含代码。这种“提前通知”在Office之外的应用程序当中也非常容易实现。您可以查看包文件中是否包含基于代码的部件,而无需运行Office也不会运行潜在危害的代码。如果一个文件看上去非常可疑,那么您可以删除文件中所有的可执行代码部件,从而使得代码不会对您的计算机造成任何危害。
文件扩展名
2007 Microsoft Office system的文档使用Office XML格式保存文件,它拥有新的文件扩展名,这使得Office可以将这些文件与以前Office版本保存的二进制文件区分开来。新的文件扩展名是从以前的二进制文件的扩展名延伸而来的,它们只是在后面加上一些后缀。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 格式开发解决方案
Office XML格式使得您可以创建更多的包含文档的解决方案类型。您可以在新的文件格式中使用任何可以处理ZIP存档的工具或技术来访问一个Office文档中的内容。然后,您可以使用任何标准XML的处理技术来处理文档内容,或者使用任何适用于文档中嵌入的二进制格式的文件(例如图片)的工具来处理这些内容。
另外,2007 Microsoft Office 系统的文档可以手动的以ZIP存档的格式打开,为开发人员带来了巨大的益处。例如,在建立一个基于Office的解决方案时,您可以检查一个文档的内容和结构,而无需编写任何代码。这种能力对于解决方案的设计和原型的创建是什么有帮助的。
在一个2007 Microsoft Office system的文档中,它的结构非常简单,您可以很方便的浏览文档的部件和它们之间的关系,无论您是定位信息,更改内容,还是想从一个文档中删除元素。通过使用XML,以及刚刚发布的Office引用架构,您可以轻松的创建文档,将数据添加到现有文档,或者在文档中搜索特定内容。
本文剩下的部分提出了一些基于Office XML格式的基于文档的解决方案场景。这些只是可能创建的解决方案中的一小部分:
• | 数据的互操作性 |
• | 内容处理 |
• | 内容共享和重用 |
• | 文档装配件 |
• | 文档安全性 |
• | 管理敏感信息 |
• | 文档样式 |
• | 文档跟踪 |
数据的互操作性
XML成为了数据变换较为流行的标准,这使得新的Office XML格式在异类的系统中进行基于文档的数据访问更加变为可以。无论是用户希望一个部门中共享文档数据,还是两个企业希望交换业务数据,XML作为Microsoft Office文档默认的文件格式,都使得Office应用程序实际地参与到业务处理过程当中,而不会再有以前二进制格式所带来的限制。
新的文件格式的开放,解除了数据的束缚,并且带来了更加广阔的新层次的集成。例如,您可以参考新文件格式发布的标准,来创建包含丰富数据的文档,并且无需使用Office应用程序。服务器端的应用程序可以使用大规模的解决方案批量处理文档,从而将企业数据与人们熟悉的,灵活的Office应用程序混合在一起。您可以使用标准的XML协议,例如XPath(一种通常的XML查询语言),以及扩展样式表语言转换(XSLT)从文档中获取数据,或使用外部数据更新一个文档中的内容。
这种场景可以在对分发到客户的大量文档进行个性化时使用。您可以使用XML的服务器端应用程序,从一个企业数据库或客户关系管理(CRM)应用程序当中提取数据,并将提取出来的信息程序化的插入到一个标准的文档模板当中。创建这些文档是非常高效的,因为您根本不需要运行Office应用程序;这种功能也可以用来生成高质量、丰富的Office文档。
通过使用Office中的自定义架构,您可以使用文档来共享数据。锁定在一个二进制格式文件中的信息是非常对于访问的,因此,文档应当提供为一种开放的,可交换的数据源。自定义架构不仅可以插入或提取数据,它们也可以向文档中添加结构,从而强制数据的有效性。
内容处理
编辑现有Office文档的内容是另外一种有效的示例,其中Office XML格式提高了这种处理过程。这种编辑可能包括更新少量的数据,替换整个部件,删除部件,或者添加新的部件。通过使用关系和部件,新的文件格式使得文档的内容更容易查找和处理。XML和XML架构的使用,使得您可以使用通用的XML技术,使用XPath和XSLT,来编辑文档部件当中的数据。
一种典型的场景就是编辑一个Word文档中页眉的文字。当然,这并不是只为一个文档自动化任务。但是,可以想象另外一个场景,如果一个公司发生了合并,而他们需要将新公司的名称更新到成百上千个不同文档的页眉,那该怎么办?开发人员可以写一些代码,来遍历所有的文档,在Word文件结构中定位页眉部件,然后执行一个XPath查询来查找原有的文字。然后,就可以插入新的文字,替换页眉部件,并且重复这个过程直到每个文档都被更新。自动化的过程可以节省大量的时间,这种过程可以避免在人工操作过程中可能出现的错误。
另外一个场景是通过更改整个部件来更新现有的Office文档。在一个Excel 2007工作簿中,您可以通过覆盖一个工作表的部件,来替换整个工作表中包含的陈旧数据以及过期的计算模型。这种类型的更新也可以应用到二进制的部件当中。如果需要的话,您可以替换一个现有的图片,或者一个OLE对象。例如,您可以通过覆盖一个Microsoft Office Visio图形的部件,来更新嵌入在Office文档当中的这种类型的OLE对象。您可以将超链接的URL更新为指向新的地址。
下面是一些特定应用程序的场景。
Word 2007中的内容处理
通常,在业务处理中都会将“样板文件(boilerplate)”文字合并在Word文档当中。例如,企业当中创建的每个公开分布的文档,都需要一个正式的法律声明或者公布一些条款。另外,很常见的一个样板文件就是“公司概览”小节,它可能用于销售目的,或者发布企业的声明。Word提供的功能,例如AutoText,可以完成格式化文字的插入,但是这种功能在规模上非常有限,因为它需要Word的自动化任务,或者需要直接的用户交互。
Word 2007为您向一个文档中插入内容提供了一种非常灵活的选择。Word XML格式允许您添加一种叫做文档构建块的文档部件,它在文档被Word打开时由整个文档引用。这就意味着,您可以建立一个文档构建块的库,您可以从中得到Word可以展现的文档格式,并且可以程序化的将它们重用在Word文档解决方案当中。
在处理Word文档内容方面强大的能力,也带来了一些有趣的应用场景,例如服务器端的文档装配件。回到前面给出的例子,您可以自动向服务器上创建的一个文档插入一段法律声明。那么,可以想象一个跨国公司,它需要在不同语言的文件中包含本地语言版本的法律声明。这个公司可以创建适当的特定语言的声明,并保存成.html文件放置在服务器上。重建文档的应用程序可以将所需的语言相应的文档片断插入到文档的容器当中,并保存为一个部件。然后,这个片断将展现为Word文档的一部分。
Excel 2007中的内容处理
为了优化加载和保存的性能以及文件大小,Excel 2007为重复的文本在Excel文件中只存储一份拷贝。为了实现这种功能,Excel在一个文档部件中实现了一个共享的字符串表,这个部件是由下面的目标来指定的http://schemas.microsoft.com/office/2005/8/relationships/xlSharedStrings。在一个工作簿中,每个不同的文字值在这个部件中只会列出一次。单个工作表的单元格将引用这个字符串表,从而获取它们的值。
这种处理过程优化了Excel XML格式,同时也带来了一些有趣的内容处理解决方案。在跨国公司工作的开发人员,可以使用共享的字符串表来提供多语言的支持。他们不再需要为不同的语言建立不同的工作簿,而可以使用一个包含字符串表的工作簿,而这个字符串表可以对应于不同的语言。另外,也可以使用字符串表在工作簿集合中查找关键字。处理一个简单的,基于字符串文本的XML文档,要比处理有关许多工作簿和工作表的Excel对象模型更为快速和简单。
PowerPoint 2007中的内容处理
因为PowerPoint 2007的演示文稿是使用PowerPoint XML格式来存储的,所以它的内容具有高度的可访问性。因为这是第一版支持XML格式的PowerPoint,所以它较以前的版本相比,可以提供更多的应用场景。您现在对幻灯片和幻灯片的注释文本拥有完全的访问能力。您可以据此建立有关查找,索引,和创建演示文稿内容的解决方案。您可以使用XML简单的生成数据驱动的演示文稿。并且,您也可以访问幻灯片的母版和幻灯片布局,并通过XML部件程序化的格式现有或新的PowerPoint演示文稿。
您可以通过不同的方式来组装或重用PowerPoint演示文稿当中的内容。您可以建立一个应用程序,查找现有演示文稿当中存储的幻灯片目录。每张幻灯片都被表示为单独的XML部件,因此,可以建立解决方案来对企业存储和管理PowerPoint 2007幻灯片数据进行优化。您还可以编写一个幻灯片“查看器“,它允许用户查看并选择他们所需要的幻灯片,并在PowerPoint外轻松的组成一个新的演示文稿。这种应用程序甚至可以是基于Web的应用程序,以方便集中的管理。
内容共享和重用
Office XML格式的模块化使得我们可以一次生成内容,然后将它重用到多个文档当中。作为一个开发人员,您可以想象去创建一些核心的模板,然后在创建其它文档的时候将这些部分作为构建块来重用。例如,您可以在一个Word文档中使用在另外一个Word文档当中建立的表格。您可以一次性建立图表(图表在所有2007 Microsoft Office system应用程序当中拥有通用的架构定义),然后在其它不同类型的文档中重用这些图表。对于格式的可访问性,使得内容共享真正变为可能。
在有些场景中,需要在文档中建立一个图片的存贮。您可以创建一个解决方案来提取Office文档集合中的所有图片,并允许用户重用这些图片。因为2007版本中的Office文档以二进制的部件来存储图片,所以您可以简单的创建一个解决方案来管理图片库。然后,那些希望使用以前用过的图片的用户,不再需要浏览整个文档集合,也不用单独打开和关闭每个文档来查找图片。他们可以使用自定义的应用程序来查找黑乎乎,并轻松地将它们插入到正在处理的文档当中。
您可以建立一个类似的应用程序,它重用文档中提取出来的“缩略图”图片,然后将它显示在文档管理的过程当中。
文档装配件
对于开发人员来说,一个非常常见的需求就是在不调用Microsoft Office应用程序的情况下,在服务器上创建Microsoft Office文档。有些企业需要生成复杂、包含丰富数据的文档,或者需要大量的组装文档,它们需要更加高效的处理,从而实现这些目标。通过,Office应用程序无法被编写或运行在服务器上。
在Microsoft Office 2003版本中,XML文档格式的引入可以根据Office 2003 XML Reference Schemas来生成,它帮助我们克服了这种限制。通过对XML的组装,我们可以建立一个Word或Excel文档,只要它符合Office架构就可以。在那个时候,这确实是一种巨大的优势,但是不幸的是,它只能应用于Excel和Word,而且只有Word才真正完全的实现了XML文件的支持。2007 Office版本在这些问题上都做出了巨大的努力,它添加了PowerPoint XML文件类型,并且保证PowerPoint XML文件和Excel XML文件都真正得以实现。
2007 Office版本的这种技术上的优势,使得您可以建立Office解决方案,在无需打开Office的情况下就可以生成Excel,Word和PowerPoint文档。这种解决方案必须根据2007版本的架构来创建XML,并且通过Office XML格式来创建包的内容。虽然Office架构是非常丰富的,但是要完全描述Microsoft Office应用程序中提供的丰富功能,在生成文档时并不需要所有由格式定义的结构。每个Office应用程序都可以通过一些定义的项打开文件,因而可以这样去创建许多文件。
注意,文档装配件不只适合于新建的文档。当然,通过遵循Office XML格式的规则,您无需使用Office便可以通过编程的方式来建立文档。但是,通常文档装配件意味着使用现有的文档,数据和其它内容建立文档。新的Office XML格式非常适用于这种应用场景,因为它们本身就是模块化的结构,而且它们的内容是基于XML的。
文档装配件的例子也适用于PowerPoint演示文稿。许多企业有大量的PowerPoint文件,这些文件拥有巨大的可重用价值。通常,用户从许多先前的演示文稿中借鉴一些幻灯片,从而创建相关的演示文稿。查找、定位、集成(拷贝和粘贴)幻灯片是非常耗费时间的,冗余的过程,许多企业都希望自动化这种演示文稿的组成过程。使用2007 Office版本,PowerPoint演示文稿文件中单个的幻灯片可以访问,因为它们每个都是单独以XML部件的形式存储于演示文稿容器包中。可以创建一个解决方案,利用这种结构来完全自动化演示文稿的装配过程。您可以使用自定义的XML来管理指向单个幻灯片的元数据,因此允许用户使用预定义的关键字轻松的查找它们。在用户选择一个幻灯片之后,解决方案将幻灯片的XML部件插入到演示文稿当中,并且创建引用关系。
文档安全性
在当今的信息技术中,安全性是至关重要的。OS格式帮助您更加安全的处理Office文档,并且交付考虑文档安全性的解决方案。通过新的文件格式,您可以建立解决方案,并在引起问题前查找并删除所有潜在的机密信息。
例如,如果一个公司需要一个解决方案,用来将文档存储到一个存档库当中,其中不需要运行自定义代码,或者向一个客户发送不包含宏的文档。您可以编写一个应用程序,通过查找所有的Office文档,并且删除其中指向http://schemas.microsoft.com/office/2006/relationships/vbaProject目标的部件,从而从Office文档中删除所有的VBA代码。这样,就可以得到一系列更高质量的文件。
另外,Office XML格式为2007版本中的每个产品只提供了一种文件类型(Word的.docm,Excel的.xlsm,以及PowerPoint的.pptm)可以执行宏代码。任何不包含“m”结尾的文件类型都不包含宏代码,也不能执行任何代码。这样,就可以保证用户的安全,而不会受到恶意软件的影响。
不幸的是,宏代码不是对于Office用户唯一的潜在安全性威胁。最近,安全性的问题在.jpg二进制文件当中也发现了。您可以从这些二进制文件中检查的风险,例如OLE对象和图片,并且询问Office文档并删除所有引发的问题。例如,如果一个特定的OLE对象被认为是一种已知的安全威胁,那么您可以创建一个应用程序,在所有包含这种对象的文档中进行定位和清除。类似的,您也可以通过检查文档中的关系部件,快速的确定2007 Microsoft Office system文档的所有外部引用。这种确定使得解决方案的开发人员可以决定,文档中引用的外部资源是否正确可信。
您可以根据内容类型和关系来阻止部件。例如,如果一个IT管理员发现.gif图片当中存在着安全隐患,那么就可以使用一种组策略来拒绝2007 Microsoft Office system文档当中所有gif图片内容的加载。在部署正确的安全补丁后,IT管理员可以确定所有的用户都可以更加安全的使用文档。
您也可以通过格式策略来阻止部件。例如,如果IT管理员发现一段不完整的注释可能会引起PowerPoint引发缓冲区溢出问题,那么可以通过部署一个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。
管理敏感信息
在保护用户阻止他们运行有害内容的同时,您也可以帮助用户在共享数据的同时保护他们的机密信息。这种数据可能包含一些个性化信息,或者跟踪的更改,注释和标注,他们可能不希望共享这些信息。您可以用程序来删除这些信息,而不需要改动整个文件。例如,要删除文档的注释,您可以检查注释部件关系是否存在,如果存在,那么将关联的注释部件删除。
除了保护PII和注释外,Office XML格式还允许对这些信息的访问,在其它的一些情况下可能会很有用。您可以创建一个解决方案,使用PII数据来返回一个文档作者的列表。通过新的文件格式,在无需打开Office或使用它的对象模型的情况下,便可以生成这个列表。类似的,应用程序可以遍历一个目录,查看其中的所有Office文档,并且聚合文档中所有注释。您可以添加额外的条件来保证注释的质量,从而帮助用户更好的管理他们所创建的文档。
文档样式
在使用Office XML格式的Office文档方面,文档样式、格式和字体,也都是在容器包中单独的XML部件中维护的。因此,需要重申的是,您可以创建解决方案来利用这些特点。一些企业拥有非常特殊的文档标准,而管理这些文档又是非常耗费时间的。那么,您就可以在不打开Office的情况下修改或替换文档当中的字体。
另外,通常会出现一些文档,它们拥有相同的内容,但是不同的部门、地区或目标用户把它们进行了不同的格式化。您可以使用一个单一的文档来维护内容,并在必要的情况下应用一个新的样式集合。为了实现这一点,您需要使用其它的部件来替换指向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所提供的属性。例如,对于高级的文档跟踪,您可以创建您自定义的XML,并将它放置在文件当中作为另外一个部件。您可以使用任何可以访问Office XML格式的工具或应用程序来使用这个XML部件。
在Office产品中使用新的文件格式
在Office产品中,新的文件格式的实现有很多通用的部件,也有很多组件是特定于每个产品的。
Excel 2007中的文件格式结构
除了拥有每个Office产品通用的部件(例如XML数据部件,关系部件,和多媒体部件)以外,Excel还为工作簿、工作表,以及像图表、数据透视图、数据透视表等实体提供了单独的部件。
PowerPoint 2007中的文件格式结构
在PowerPoint的文件格式中,使用了许多与其它产品相同的部件,同时还使用了一些特定于幻灯片演示文稿的对象,例如幻灯片部件,母版部件,演示文稿部件等。
Word 2007中的文件格式结构
同样,Word也使用了关于文档属性、样式和格式、页脚、页眉、注释等额外的部件。
修改 Office XML 文件格式来自定义用户界面
下面的步骤展示了如何在Excel 2007中创建一个自定义的用户界面(UI),它通过修改一个启用宏的工作簿文件,包含了调用一个自定义宏的组件。在这个例子中,您将实现:
• | 使用宏创建一个Excel工作簿,并将工作簿保存为Office XML格式的启用宏文件(.xlsm)。 |
• | 创建一个简单的界面,其中包含一个tab,一个group,和一个button。 |
• | 为button指定一个回调事件,让它来调用您在文档中创建的宏。 |
• | 修改启用宏的文档的容器文件的内容,将它指向您扩展的自定义文件。 |
• | 将启用宏的文件保存,并在Excel中打开。 |
在Excel中创建一个启用宏的Office XML格式的文件
1. |
打开Excel 2007. |
2. |
点击开发工具选项卡,然后点击Visual Basic。 注意: 如果您无法看到开发工具选项卡,那么您需要确认您自己是一名开发人员。在Excel中,点击Microsoft Office按钮,点击Excel选项,选择常用,然后选择在功能区显示“开发工具”选项卡。这是一个全局的文墨,这样会在所有其它的Office应用程序当中将您确认为一名开发人员。 |
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)。 |
创建包含标记的XML文件来修改UI
1. |
在您的桌面上创建一个叫做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> |
接下来,您需要修改之前创建的启用宏的文件容器中包含的文件:
1. |
为工作簿文件添加一个.zip扩展名,然后双击打开它。 |
2. |
将customUI目录从桌面拖拽到ZIP文件当中,从而将自定义的文件添加到容器当中。 |
3. |
将.rels文件提取到您的桌面上。其中一个叫做_rels的目录中包含了一个.rels文件,将它复制到您的桌面上。 |
4. |
打开.rels文件,并在最后一个Relationship标记和Relationships标记之间添加下列行。它在工作簿文件和自定义的文件之间创建一个关系。 <Relationship Id="someID" Type="http://schemas.microsoft.com/office/2006/relationships/ui /extensibility" Target="customUI/customUI.xml" /> |
5. |
关闭并保存文件。 |
6. |
将_rels目录从桌面拖拽回容器文件,并选择覆盖现有的文件。 |
7. |
删除工作簿文件的.zip扩展名,使它恢复到原来的文件名。 |
8. |
打开工作簿,这时将会看到在功能区中会显示一个My Tab选项卡。 |
9. |
点击按键,然后会显示一个消息框。 |
结论
用户、企业、和开发人员都将从2007版本的Microsoft Office system的Office XML格式中受益匪浅。作为一种开放的,基于XML的默认文件格式,新的文件格式为您提供了创建更多解决方案和应用场景的机会。您可以将文档作为数据源访问,在Office应用程序以外处理它们,并且在企业解决方案中进行处理。企业可以将现有的业务系统与Microsoft Office system平台集成,其中2007 Office版本和新的基于XML的文件格式都将对您有着巨大的帮助。
相关资源
更多相关信息,请查阅下列资源:
• | Office Open XML Formats Frequently Asked Questions |
• | Office 2003 XML Reference Schemas License Overview |
• | Microsoft Office Developer Center |