Java Web项目中使用Freemarker生成Word文档遇到的问题

这段时间项目中使用了freemarker生成word文档。在项目中遇到了几个问题,在这里记录一下。首先就是关于遍历遇到的坑。整行整行的遍历是很简单的,只须要在整行的<w:tr></w:tr>的标签钱加上遍历的<#list  list as list> </#list>就好了。我在这里要说的是前面还有合并单元格的时候的状况。以下图,水泥路面和沥青路面这几行属于申请占用面积的子行。在这里遍历的时候就须要注意。按照html的格式的话,确定会将这整个刚作一个tr。而后再里面作colspan=‘n’来区分的。html

      在生成的flt的文件中能够看到,word生成出来的xml是将申请占用面积和水泥路面这个看成一个tr,算做一整行的,而其余三个每一个是一个tr。看成一行。只是在前面了加上了<w:vmerge/>这个标签,表示跟前面的申请占用面积是合并的。最开始的时候,我将水泥路面和下面的人行道这几个看做是遍历体,直接将这四块遍历,生成出来的word老是会出来样式错乱的状况,在仔细分析生成的ftl文档后,才发现第一行和其余几行是又区别的。而后在后台代码里把第一个list单独取出来,其余的几个看成list遍历,就解决了问题。spa

      另外一个是关于图片的问题。最开始的时候,我是将图片的数据放到对象中看成一个属性的,而后经过${xxx.picData},将图片的base64放到图片标签中,这样不管如何就是不能将图片加载出来,还会致使文件加载不出来。可是直接将base64直接在标签里写死又是能够加载的。在试过好几种方法后,将图片的picData看成一个单值放到结果中就成功了,即${picData}.xml

相关文章
相关标签/搜索