java freemarker .ftl模板导出word文档(含文字,List, 图片)

此处只介绍word模板部分,java代码等请自行百度,都一样。


辅助工具:notepad++,百度在线xml格式化


A.不含遍历的简单处理

不含遍历的简单处理
简单的一个key一个值使用比较简单,主要包括几个步骤:
1.	新建word文档,将需要动态赋值的地方用${xxx}替换(注意替换时最好先在txt写好,再粘贴到word中)。
2.	另存为word2003xml(便于兼容)文档。
3.	打开生成的xml文档,检查${xxx}是否有格式错位(有则删除中间多余部分),不然会报错。
4.	将xml文档后缀改为.ftl,应用到项目中
具体不知道的可以百度,也挺简单的。

B.含有list遍历的处理(含图片)

1.xml文档body部分用包围(名称自定义)

<#list tabList as pg>

(ps: tabList是代码中list的key,pg 在下面${pg.xx}会用到)

如下图

java freemarker .ftl模板导出word文档(含文字,List, 图片)_第1张图片

 

 


2.动态值填写${pg.xx}

可以在word文档中将需要替换的字段事先修改为${pg.xx}

java freemarker .ftl模板导出word文档(含文字,List, 图片)_第2张图片


3.动态图片处理:

1.首先将图片插入word文档中,然后在XML文件中用${pg.XX}替换base64字符串

如下图

java freemarker .ftl模板导出word文档(含文字,List, 图片)_第3张图片

注意:如果是多个图片需要动态传入,一定要在word中插入不同不同不同的图片,不要复制粘贴图片。


注意下图:

2,3 处:如果是多张图片循环,这两处必须用动态值,如pg_index(以自定义为准),不要用word默认的值,不然导出的图片都是重复的(同一个图片2,3处值是相等的)。

4处建议:如果是多张图片,最好检查下图片有没有错位,如果错误,可以调整position的left,top等属性

修改后图片:

java freemarker .ftl模板导出word文档(含文字,List, 图片)_第4张图片

你可能感兴趣的:(java)