Java基于Freemarker模板导出Word

准备

  1. 下载Freemarker jar;
  2. wps/office创建.doc文件;
  3. 编辑模板内容后另存为.xml(注意wps存在两种.xml结尾的文件,请按下图选择);
    clipboard.png
  4. 修改模板后缀名为.ftl;
  5. 为了查看方便,建议先将内容格式化下(在线XML格式化即可);
  6. 将需要动态变化的值替换成,${xxx} 来占位(支持循环,所以批量数据不需要挨个替换);

土亢

  • 图片使用base64编码,放在“yyy”的位置:“<w:binData w:name="wordml://xxx.png">yyy</w:binData>”
  • 当文档存在图片时,尤其是多张图片需要动态读取时,“wordml://${xxx}.png”中的xxx需要相应动态变化,不然图片会重复哦。
  • 单元格合并时,可在ftl里写相应判断,同上行内容使用“<w:vmerge />”或者“<w:vmerge w:val="continue"/>”来表示合并,否则,使用“<w:vmerge w:val="restart"/>”来另起新行。这里注意的是“vmerge”都是小写,学习过程中在网上看到是“vMerge”,合并不起作用,排查了半天错。

    <#assign tempName=""/>
    ...
    <#if tempName!=Table.name>
      <w:vmerge w:val="restart"/>
      <#assign tempName=Table.name/>
    <#else>
      <w:vmerge />
    </#if>

源码

github传送门

更多有意思的内容,欢迎访问rebey.cn


JAVA WEB
java web开发之路

希望加入有意思的开发团队!

190 声望
34 粉丝
0 条评论
推荐阅读
jodconvert的亚子
F项目需要滚动播放视频、文档(Excel/Word...)功能,使用jodconverter将文档转成pdf,结合pdfjs实现。由于个人独立开发,只要结果,故选型自由。后端Spring boot,前端阿里飞冰。可以直接使用jodconverter的starter:

花田土著1阅读 4.3k

Java8的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft32阅读 27.4k评论 1

一文彻底搞懂加密、数字签名和数字证书!
微信搜索🔍「编程指北」,关注这个写干货的程序员,回复「资源」,即可获取后台开发学习路线和书籍来源:个人CS学习网站:[链接]前言这本是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视...

编程指北71阅读 33.5k评论 20

Java11的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft28阅读 19.3k评论 3

Java5的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft13阅读 21.7k

Java9的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft20阅读 15.3k

Java13的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft17阅读 11.2k

希望加入有意思的开发团队!

190 声望
34 粉丝
宣传栏