技术开发 频道

Office文件格式突变,促使Java和Office更完美集成



【IT168 专稿】Office是大家非常熟悉的办公软件。它的强大的文字和表格的处理能力几乎无人能敌。而其中的Excel除了被应用在传统的表格处理中,也常被广大程序员“抓”来充当报表系统的前端。如我们使用的Java Web程序,在后台生成一个带报表数据的Excel文件,然后将这个文件送到前台浏览器(必须是IE),这样这个Excel文件就可以嵌入到IE中。
 
这样处理报表既可以利用Excel强大的表格处理功能,又可以使程序员省了很多的麻烦。但这么做有一个限制。就是服务器的Java生成Excel报表时,一般不会使用COM来调用Excel组件,而是按着Excel文件的二进制格式直接生成Excel文件。但由于Office是商业软件,微软并没有将Office的文件格式完全公开(就算公开,也不是最新版本的),这样就给生成Excel文件带来了一定的困难。虽然一些比较新的Office文档可以保存成XML格式,但这种文件格式只是一种简陋的替代,再说前端的IE并不认XML格式的Excel文档。也许是微软意识到了这个问题,在新推出的Office2007中彻底解决了这个问题。
 
在以前老版本Office中,由于法律或技术原因,脱离Office来处理Office文档将会遇到非常多的问题。也许是开源给微软带来的压力,或许是其他的原因,微软对Office2007的格式做了和以前完全不同的处理。以前的Office文档是100%的二进制格式。第三方的工具操作起来非常不方便,而Office2007从整体上都是基于XML格式的,这里并不是说Office2007文档可以保存成XML格式。而是Office2007默认的文档格式就是XML的(Word的docx、Excel的xlsx等)。也许有人会感到奇怪,用文本编辑器打开docx后,显示的仍然是二进制格式,并不是什么XML。其实docx并不是普通的XML格式,当然,也不只是一个XML文件,docx本质上是一个zip文件,里面有一系列的xml、目录和其他的文件。如果我们将docx改成zip。就可以用winzip等软件将其解开(从这一点我们可以看出,docx中的x就是指XML)。如图1是一个word2007文档解开后的目录结构。



1 docx文档解开后的目录结构

   

目录中的XML都是基于OpenXML格式的,这个规范微软已经提供提交给了ECMA,因此,这已经成为公共的标准,我们可以自由地使用它们。由于Office2007文档全部使用了压缩的xml格式,因此,只有支持读取zip格式和xml格式的语言都可以操作Office2007的文档,当然,Java也不例外。而使用Java和Office联合操作报表将更加容易。在本文中将演示如何使用Java来操作Office2007的文档,这里以word2007为例。
下面是一个简单的Word文档,如图2如示:


2 一个简单的word文档

 

0
相关文章