整理关于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:设计思路是先⽣成模板,然后得到数据,最后将两者整合得到结果。但是J
asper Report的问题在于,其⽣成模板的⽅式过于复杂,即使有IDE的帮助,我们还是需要对其中的众多规则有所了解才⾏,否则就会给调试带来极⼤的⿇烦。
2. openoffice⽣成pdf:openoffice是开源软件且能在windows和linux平台下运⾏。
3. itext + flying saucer⽣成pdf:itext和flying saucer都是免费开源的,且与平台⽆关,结合css和velocity技术,可以很好的实现。
⼀般使⽤第三种⽅案⽐较多,它实现的步骤是⾮常简单的。
JAVA⽣成word优缺点对⽐
所⽤技术优点缺点
Jacob功能强⼤代码量⼤,设置样式繁琐;需要windows平台⽀持,⽆法跨平台
Apache POI 读写excel功能强⼤、操作简单
⼀般只⽤它读取word,能够创建简单的word,不能设置样式,功
能太少
能满⾜⼀般要求,不⽀持07格式,国⼈开发的,参考资料较多,需
Java2word功能强⼤,操作简单能满⾜⼀般要求,不⽀持07格式,国⼈开发的,参考资料较多,需要windows平台⽀持
iText功能全,能满⾜⼀般要求不能直接⽣成或操作doc⽂档,只能⽣成rtf格式的⽂档,rtf也可以⽤word打开
JSP操作简单,代码量少能把当前页⾯导出简单的word,不能设置样式,美观性差,⽆法操作word
XML(最佳)代码量少,样式、内容容易控制,打印不变形,完
全符合office标准
需要提前设计好word模板,把需要替换的地⽅⽤特殊标记标出来
JAVA⽣成pdf优缺点对⽐
所⽤技术优点缺点
openoffice 本⾝就是office软件,很容易设计⼀些⽂档模板,⽀
持java调⽤实现word转换成pdf
需要先安装,设计好pdf模板样式,然后⽤程序来填充那
些预留好的变量
itext 能满⾜要求,本⾝提供了⼀些api ⽆法识别很多html的tag和attribute,⽆法识别css,需要⽤其api函数来设置样式
Jasper Report能满⾜要求,市⾯上使⽤的⽐较多,相关⽂档多复杂,很难完全掌握,需要先设计模板,强依赖于IDE进⾏可视化编辑
flying sauser(最佳)能解析html和css输出成image、pdf等格式,操作简
单,api强⼤
需要编写freemarker或velocity模板,打造html,勾
画pdf的样式
⼆、然后我们看下使⽤freemarker 来对word进⾏的动态填充的流程
1.准备word⽂档(最好⽤office2007 如果⽤别的版本低版本的会打不开)(1)提前把你要⽤的⽂档再word上做好
(2)然后把⽂档另存为xml
(3)然后⽤打开xml⽂件,再⽹上⼀个xml⽂件 格式化在线就可以格式化,记得转完xml⽂件之后不要⽤word再打开,切记)后⾯会得到⼀个这样的⽂件。
(4)拿到之后到你要替换值得地⽅写上freemarker标签${}就可以了
可以使⽤其他的编辑器打开
(6)接下来就是转化填充了
xml文件怎么打开
接下来就是总结了:
其实吧,我个⼈感觉这个freemarker框架没有多⼤卵⽤,说⽩了就是⼀个字符的替换,其实就是将doc转xml⽂件,然后替换可以将内部的
⽂字替换,替换完,再输出保存到doc⽂件,感觉这个框架并没有任何啥特别的,⾃⼰就可以写,不过,这种轮⼦别⼈造好了,咱们确实拿
来⽤就可以了。
但是,我们的⽬标并不是为了完成任务⽽去做⼀件事,我们更期望懂是什么?怎么做?为什么? 这是我们的核⼼