使用freemarker导出word文档包含多张图片

                                          使用freemarker导出word文档包含多张图片

       最近项目中有个需求就是导出word文档并且文档中需要有多张图片,我当时一脸懵逼啊,之前没有搞过这个啊,但是不要灰心,肯定会有很多人搞过的,百度一下,很多坑啊,居然没有一个完整的,我就记录一下我的导出word吧,以便后面的人不要再入坑了,不说废话了,上代码。

       需要先导入freemarker的jar包,我使用的是freemarker-2.3.8.jar,然后创建一个word模板,

     

    

 

切记有需要图片的地方要先插入图片作为占位符,文字也要和你传过来的map或者是对象的key值一致。

好的模板已经创建好了就需要将模板改为xml格式的了。


好的生成了XML文件了,将xml文件的后缀名改为ftl,使用编辑器打开ftl后你会发现图片的占位符成了一串base64编码的字符,如下图:


删除这段base64字符,因为这个是你模板上的那张图片,改为你自己需要的占位符,

例如:${pic}

可能会有人说直接使用xml不转为ftl也可以看到这段base64,没错是可以看到但是我这个是多条循环的,如果你的是一个占位符填充一个内容就不需要转了,因为我这个是多条的并且要换行所以就需要使用到<#list cause1 as cause1Item><w:br/></#list>这串代码,xml识别不了这个所以只能转成ftl了。

        我最终需要的格式是这种样式的,如下图


所以需要将ftl文件中的<w:t>${causeTime}</w:t>修改为

<#list causeTime as causeTimeItem><w:t>${causeTimeItem}</w:t><w:br/></#list>

如图:

修改为:


好了模板彻底弄好了,该上代码了:


下面是export的方法的代码:


大功告成了,效果图如下: