java通过模板生成 word

最近项目要导出world的报告, 在网上查阅了下相关资料。发现使用模板方式比较适合我们的项目。为自己记录下.

 1. 创建word文档,并另存为xml格式.

 2. 修改xml文档,使用模板引擎支持的语法,变量替换其中的相关内容。

 3. 使用模板生成 word文档.

这里简单说下另存为后的xml模板(我使用的是word2007.)

如果存在图片,模板中会有类似这样语法

<Relationship Id="xEcV272" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/xEcV272"/>

 这里要注意的是,Id不能以数字开头。(不知道为什么)。而Id和Target不一定必须使用它自动生成的值,可以改为其它值(它只是为了和下面的值对应而已,没有特别的意义),但要注意Id不能和其他Id重复。

而存放图片的位置可能会像下面这样显示

<w:pict>
  <v:shape id="xEcV272" type="#_x0000_t75" style="width:570px;height:281px;">
    <v:imagedata r:id="xEcV272" o:title=""/>
  </v:shape>
</w:pict>

 其中的id就是上面定义的id了.

那么它的图片真正存在于何处呢?其实在文档中我们可以发现有些使用了Base64加密的内容. 存在于类似下面的元素中

<pkg:part pkg:name="/word/media/xEcV272" pkg:contentType="image/png" pkg:compression="store">
  <pkg:binaryData>/9j/4AAQSkZJRgABAgEAYABgAAD/</pkg:binaryData>
</pkg:part>

 这里我只粘贴了部分Base64内容,实际上会很长。这不是重点,然后我们会注意到pkg:name这个属性。是的,它的值就是上面定义的Target属性前加了一个固定的值/word/.

 其实我们只要注意看,会发现它每部分都是由

<pkg:part>

 元素开始的,我们基本上可以根据它的pck:name属性来决定我们要修改的部分。

第一次写,写的感觉不是很明白,希望看到的朋友们多指教。

最后说下,我使用的是velocity-1.7和word2007,然后附上一个小示例。也可以去我的百度网盘下载

http://pan.baidu.com/s/1kThu6Cv

猜你喜欢

转载自huohu2005.iteye.com/blog/2040139
今日推荐