FreeMarker一些常见错误的总结

最近在做一个人物管理系统,需要做一个导出word的功能。经过一番查找,最终决定使用FreeMarker来做这个东西,做了两天,终于成型了。部分效果如下(表内数据纯属虚构).

具体步骤就不一一赘述了,一搜一大堆。

在具体使用的过程中,出现过一下问题。

1.FreeMarker 多行数据的换行问题,在FreeMarker 中会把“\n”处理厂空格,所以需要换行的时候需要把“\n”替换掉。

	string = string.replaceAll("\n", "<w:br />");
2.FreeMarker 在刚开始使用时,经常莫名其妙地报标签匹配错。如下

	Was expecting one of:
  	  <STRING_LITERAL> ...
  	  <RAW_STRING> ...
  	  "false" ...
 	   "true" ...
 	   <INTEGER> ...
 	   <DECIMAL> ...
 	   "." ...
 	   "+" ...
 	   "-" ...
  	  "!" ...
  	  "[" ...
  	  "(" ...
  	  "{" ...
  	  <ID> ...
这种错误一般都是因为自定义标签的问题,而且当标签多的时候,查找起来就很困难了。所以在写的的时候,一定要仔细,不要漏掉一些括号之类的符号。

但有的时候,已经确保标签已经没有任何问题,但还是报上面的错误。郁闷了很长时间,最后找到了问题所在,在编辑word的时候使用了WPS,解决方案:就是只用Office Word编辑,不要使用WPS.

3.图片插入问题,在word插入一张头像后,只显示其中的一行,这也很令人郁闷,虽然只是一个word的问题,也有研究了半个小时。最后是因为行高问题,调节行高,即可显示整张图片。

4.在插入图片的时候,一定要注意>${image}<这尖括号中间不能加任何其他的诸如空格,tab,换行等符号!在这上面这两天可吃了不少苦。

    5.对于flt中所有定义的标签,必须在map中放入其键值对。不然又会报错。

    最后做完后发现,导出的doc,使用word可以正常打开,但是在wps中的换行的显示效果却差强人意,目前还没有比较好的解决办法。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

补充:2014 02 12

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解决一FreeMarker中图片无法显示的错误:

起因:如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码: 
<w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0…(base64码)…CC</w:binData> 
只要将base64的代码替换成例如:${image},测试OK,没有问题。但是,在编辑其他标签后,负责图片的<w:binData/>标签不负责任的消失了,楼主是在word2003下进行编辑的。

解决方案:使用FreeMarker生产word时,当其他标签部分都做好时,再做图片部分。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值