天天看点

Java 动态生成复杂 Word

项目中需要用 java 程序生成doc 文件,百度一番,发现FreeMarker 的评价比较高。

    FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,至于想详细了解 FreeMarker 的请自行百度。

    这篇博文主要是总结自己在用网上例子时遇到的坑。吃水不忘挖井人,还是要感谢分享技术的前辈。

    参照过的博客链接:

Java 动态生成复杂 Word
Java 动态生成复杂 Word

用 Firstobject free XML edito 打开,将你需要动态生成的字段打上标记,${} 这样就可以

Java 动态生成复杂 Word

    FreeMarker 还支持需要丰富的标记,如果你想展示更复杂和丰富的内容,都可以实现,具体遇到需求时问度娘即可。

    将 xml 文件更改后缀名 为 .ftl, 然后引用到你的项目中

    需要注意的问题:

    a. word 版本不能低于 2003 ,因为 2003 才开始支持 xml;

    b.用 Firstobject free XML edito 打开 要编辑的 xml 文件时,xml 不要放在含有中文路径的目录中【编辑器会无响应,然后你知道的.....】。

实现的代码如下:

Java 动态生成复杂 Word
Java 动态生成复杂 Word

    a. 代码数据库为 mysql ,将查询到的数据,动态填入到wod 中;

    b.template.process(),接受一个 Map 和 输入流做为入参,Map 既是你需要动态生成到 doc 里面的数据,字段名必须与你在 .ftl 里面定义的一致;

    c. 我觉得数据的来源可以很多,程序计算的结果,数据库存储的数据,页面点击的数据.........

    d. 如果你想利用这段代码,需要有一个 .ftl 文件,并且在你的项目 src 目录下面新建 template 目录;

本文转自Orson博客园博客,原文链接:http://www.cnblogs.com/java-class/p/4686325.html,如需转载请自行联系原作者