利用freemaker导出Word总结

本文详细介绍如何使用Freemarker生成Word文档,包括制作模板、数据填充、图片处理及常见问题解决,对比Apache POI,提供操作建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.制作模板  将word文档中需要动态生成数据替换成${key},然后把Word文件另存为xml,然后最好格式化一下,然后另存为ftl文件。

2.修改模板内容 如果模板有一些table、单元格合并、图片显示、计算等需要根据freemaker标签进行修改,基本语法可以百度

3.后台数据值和模板中的key值对应即可,图片需要转为BASE64,然后将模板和数据模型合并成文件输出,还有别忘记设置好编码

 

问题:1.利用wps和Word生成的xml文件不一样。

           2.目前公司使用的模板为wps生成,图片显示需要三处对应。

 但是Word生成的xml模板图片处有一个<w:pict>标签下面有<w:binData w:name="wordml://03000001.png" xml:space="preserve">${key}</w:binData> 

将图片的base64编码放在此处即可。 

3.目前公司使用的wps生成的模板导出doc文件后,一般wps可以打开,有一款企业级wps打不开。Word打不开,需要另存为一下,文件类型选择microsoft word docx或者doc。直接使用Word生成模板能不能全部兼容目前没有测试。

4.一定要注意数据类型的问题,最好前后类型要一致。不然使用freemaker标签会频繁报错而且调试麻烦。

之前遇到一个问题,后台返回List<object>,object其实是一个map用于模板中的table显示,但当其中值有null时,后台转map遍历时不能直接!=null判断,null值转化字符串不报错变成了"null",但是freemaker中直接返回list<object>后null值Word单元格中直接显示为null,想在null时做一些操作时所有freemaker判断方法判断不出null值,想转化为字符串判断判断"null",freemaker报转化错误,类型不一致。最后在后台把返回改为list<map>变为正常,可以使用?? !等判断。

总结:1.感觉freemaker并不好用,还没开始的可以考虑Apache POI,感觉操作更简单些,调试也方便些。

2.<w:tbl>表示table <w:tr>表示table中的一行 <w:tc>代表每行的一个单元格 <w:p>每个可以表示一个单元格中的一列。

合并单元格使用<w:vMerge w:val="continue" />表示合并 <w:vMerge w:val="restart"/>表示另起新行。定义变量使用<#assign raning_flag = "">

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值