freemarker自动生成复杂word

本篇只描述一些值得注意的问题:

1.做ftl模板文件时,最好用word2003版本生成xml文件,在开发的时候也要用2003的来测试,确保生成的word文件的兼容性。

2.如果有null的值,要判断空。如:

<#if project.contract.property??>
${project.contract.property}
<#else>


3.循环插入图片列表时的关键代码,样例展示了根据tyle="width:${certify.image.imageWidth}pt;height:${certify.image.imageHeight}pt平铺图片大小:

<#list project.certifyList as certify>

















<#if certify.title??>
【${certify.title}】











































${certify.image.imageData}
style="width:${certify.image.imageWidth}pt;height:${certify.image.imageHeight}pt;mso-position-horizontal-relative:page;mso-position-vertical-relative:page" o:bordertopcolor="red" o:borderleftcolor="red" o:borderbottomcolor="red" o:borderrightcolor="red">



















4.用word2003打开时提示错误,“XML文件test.doc不能打开,因为内容中包含错误。”,但用WPS打开正常。

这个问题找不到原因,但我通过删除<#list>内所有类似标签就正常了:“

5.首页不同“













6.奇偶页不同“















7.换行,需要用replace将“\n”替换成freemarker支持的换行

如:



























${bidding.leader.certificateName2?replace("证","")?replace("\n","























")}



8.数字类型需要转换成字符串类型,要用c来转

<#assign index = key_index+1>
<#assign keyStr = sort2Key[index?c]>

8.遍历HashMap,其中key只能是字符串类型

<#assign index = key_index+1>

8.数字类型需要转换成字符串类型,要用c来转

<#list mapTest?keys as key>

mapTest[key]


你可能感兴趣的:(java)