Office 2007的推出,全面启用了 OPENXML 概念。Word、Excel、PowerPoint 文档将默认保存为 XML 格式。那么这个 XML 格式和二进制相比,能够为我们带来什么样的便利呢?
二进制格式与OPENXML简述
Office中的二进制文件格式一直是一种保密的专署文件格式。想读取其中的数据或是对其进行开发定制,就必须使用微软提供的API(应用程序编程接口)。尽管通过VSPO等工具也可以实现,但不仅会加大工作复杂度,也会带来兼容性等一系列的问题。
而OPENXML格式,则是开放的。标准和技术制定(如ZIP和XML等)可以免费提供给独立软件开发商和开发人员使用。(OPENXML已经正式提交给ECMA(欧洲电脑制造联合协会),并被正式被批准为新的标准。)
OPENXML带来的改变
对于大多数Office 2007的普通用户而言,OPENXML设置将完全不会改变用户的操作习惯。而在保留用户操作习惯的基础上,OPENXML却能为技术人员带来如下好处:
1.在一定程度屏蔽宏病毒等恶意代码
稍微熟悉Office软件的朋友都知道,在Office文档里我们可以通过写入VBA代码的手段来建立宏,而宏同时也成了一把“双刃剑”。良性的宏可以为我们完成很多繁琐的工作,而含有恶意代码的宏(也就是令很多人闻之色变的宏病毒)却可能给我们造成很大的损失。
使用OPENXML格式保存的Office文件,从后缀名上就对该文件是否包含宏进行了区分,比如docx就表示不包含宏的word文档。这样,用户不仅可以直观的看到文件是否包含宏,更可以通过修改文件后缀的方式在打开文件之前就屏蔽掉文件中可能存在的恶意代码。例如:如果我们收到一个后缀为docm的包含宏的可疑文件,那我们可以直接将其文件后缀更改为docx,这样打开文档以后,里面的可疑宏代码将被全部禁用,不会给我们带来任何的威胁。同样,如果有人故意将带有恶意代码的Office文档(比如word)的后缀名更改为不带有宏的文件后缀——例如将docm更改为docx——那么原本文件里的恶意代码也会被直接禁用。
2.减少磁盘占用量,且利于定制开发
以后缀为docx的word2007文档为例。使用OPENXML格式保存的docx文件本身就是一个模块化的文件包。如果将其文件后缀更改为zip或者是rar,然后双击打开,就可以看到在这个包里包含了:
[content type].Xml文件(包含文件中所有的内容类型,比如word中的页眉页脚——至关重要,如果被删除则文件无法正常打开。)
Document parts(文档部件,比如PPT的一章幻灯片,excel的一页工作表或一张数据透视图等等)
Document properties(文档属性,包括:作者,标题,主体,上次保存日期,创建日期等等)
_rels文件(rels=relationgships,记录了文档部件之间的关系)
由于篇幅所限,对于以上4部分的具体构成会在以后内容中进行详细讲解。
既然OPENXML保存的文件本身是一个压缩包,那么它的好处就是显而易见的:
首先,就是文件大小的改变。由于OPENXML文件是一个压缩包,那么这个文件比起以前二进制的保存格式,在尺寸上将会有大幅度的缩小。例如:将同样内容的文档(如word)分别另存为word2007文档(docx后缀)和Word97~2003格式文档(doc后缀)——我们可以很直观的看到,docx后缀的文档比doc文档小很多。根据微软官方的数据,最大的压缩度将有可能达到75%!而OPENXML的压缩是一个透明的压缩过程,不需要用户的干预而自动完成。
其次,由于文件中的操作对象是以Document part存在的,所以我们不需要通过微软的API就可以进行文档对象的编辑。大大提高了业务数据集成性、互操作性和可移植性。
而且,由于每个Document part都是一个独立的对象,所以受损文件就更加易于恢复,即使其中一个对象完全损坏了,其他的部分依然可以打开。不会再像以前版本的Office文件,一旦在传送中出现几字节的损坏就将导致整个文档无法打开的问题。