您的当前位置:首页正文

整理关于Java进行word文档的数据动态数据填充

来源:画鸵萌宠网
整理关于Java进⾏word⽂档的数据动态数据填充

⾸先我们看下,别⼈整理的关于Java⽣成doc 的 资料。

java⽣成word的⼏种⽅案

1、 Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建⼀座桥梁。使⽤Jacob⾃带的DLL动态链接库,并通过JNI的⽅式实现了在Java平台上对COM程序的调⽤。DLL动态链接库的⽣成需要windows平台的⽀持。

2、 Apache POI包括⼀系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式⽂件,可以通过这些API在Java中读写Excel、Word等⽂件。他的excel处理很强⼤,对于word还局限于读取,⽬前只能实现⼀些简单⽂件的操作,不能设置样式。

3、 Java2word是⼀个在java程序中调⽤ MS Office Word ⽂档的组件(类库)。该组件提供了⼀组简单的接⼝,以便java程序调⽤他的服务操作Word ⽂档。

这些服务包括: 打开⽂档、新建⽂档、查找⽂字、替换⽂字,插⼊⽂字、插⼊图⽚、插⼊表格,在书签处插⼊⽂字、插⼊图⽚、插⼊表格等。填充数据到表格中读取表格数据 ,1.1版增强的功能: 指定⽂本样式,指定表格样式。如此,则可动态排版word⽂档。

4、 iText操作Excel还⾏。对于复杂的⼤量的word也是噩梦。⽤法很简单, 但是功能很少, 不能设置打印⽅向等问题。

5、 JSP输出样式基本不达标,⽽且要打印出来就更是惨不忍睹。

6、 ⽤XML做就很简单了。Word从2003开始⽀持XML格式,⼤致的思路是先⽤office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后⽤java来解析FreeMarker模板并输出Doc。经测试这样⽅式⽣成的word⽂档完全符合office标准,样式、内容控制⾮常便利,打印也不会变形,⽣成的⽂档和office中编辑⽂档完全⼀样。java⽣成pdf⽅案总结

1. Jasper Report⽣成pdf:设计思路是先⽣成模板,然后得到数据,最后将两者整合得到结果。但是Jasper Report的问题在于,其⽣成模板的⽅式过于复杂,即使有IDE的帮助,我们还是需要对其中的众多规则有所了解才⾏,否则就会给调试带来极⼤的⿇烦。2. openoffice⽣成pdf:openoffice是开源软件且能在windows和linux平台下运⾏。

3. itext + flying saucer⽣成pdf:itext和flying saucer都是免费开源的,且与平台⽆关,结合css和velocity技术,可以很好的实现。

⼀般使⽤第三种⽅案⽐较多,它实现的步骤是⾮常简单的。JAVA⽣成word优缺点对⽐所⽤技术JacobApachePOI

优点功能强⼤

读写excel功能强⼤、操作简单

缺点

代码量⼤,设置样式繁琐;需要windows平台⽀持,⽆法跨平台⼀般只⽤它读取word,能够创建简单的word,不能设置样式,功能太少

能满⾜⼀般要求,不⽀持07格式,国⼈开发的,参考资料较多,需

Java2word功能强⼤,操作简单

能满⾜⼀般要求,不⽀持07格式,国⼈开发的,参考资料较多,需要windows平台⽀持

不能直接⽣成或操作doc⽂档,只能⽣成rtf格式的⽂档,rtf也可以⽤word打开

能把当前页⾯导出简单的word,不能设置样式,美观性差,⽆法操作word

需要提前设计好word模板,把需要替换的地⽅⽤特殊标记标出来

iText功能全,能满⾜⼀般要求

JSP操作简单,代码量少

XML(最佳)

代码量少,样式、内容容易控制,打印不变形,完全符合office标准

JAVA⽣成pdf优缺点对⽐所⽤技术

优点

本⾝就是office软件,很容易设计⼀些⽂档模板,⽀持java调⽤实现word转换成pdf

缺点

需要先安装,设计好pdf模板样式,然后⽤程序来填充那些预留好的变量

⽆法识别很多html的tag和attribute,⽆法识别css,需要⽤其api函数来设置样式

复杂,很难完全掌握,需要先设计模板,强依赖于IDE进⾏可视化编辑

需要编写freemarker或velocity模板,打造html,勾画pdf的样式

openoffice

itext 能满⾜要求,本⾝提供了⼀些api

Jasper Report能满⾜要求,市⾯上使⽤的⽐较多,相关⽂档多

flyingsauser(最佳)

能解析html和css输出成image、pdf等格式,操作简单,api强⼤

⼆、然后我们看下使⽤freemarker 来对word进⾏的动态填充的流程

1.准备word⽂档(最好⽤office2007 如果⽤别的版本低版本的会打不开)(1)提前把你要⽤的⽂档再word上做好

(2)然后把⽂档另存为xml

(3)然后⽤打开xml⽂件,再⽹上找⼀个xml⽂件 格式化在线就可以格式化,记得转完xml⽂件之后不要⽤word再打开,切记)后⾯会得到⼀个这样的⽂件。

(4)拿到之后找到你要替换值得地⽅写上freemarker标签${}就可以了

(5) 修改完毕将模板⽂件的后缀改为 .ftl 注意:⼀定不要⽤word打开ftl模板⽂件,否则xml内容会发⽣变化,导致前⾯的⼯作⽩做了。 可以使⽤其他的编辑器打开

(6)接下来就是转化填充了

接下来就是总结了:

其实吧,我个⼈感觉这个freemarker框架没有多⼤卵⽤,说⽩了就是⼀个字符的替换,其实就是将doc转xml⽂件,然后替换可以将内部的⽂字替换,替换完,再输出保存到doc⽂件,感觉这个框架并没有任何啥特别的,⾃⼰就可以写,不过,这种轮⼦别⼈造好了,咱们确实拿来⽤就可以了。

但是,我们的⽬标并不是为了完成任务⽽去做⼀件事,我们更期望懂是什么?怎么做?为什么? 这是我们的核⼼

因篇幅问题不能全部显示,请点此查看更多更全内容

Top