freemarker导出Word,文本,可循环表格,合并单元格,可循环图片,目录更新(二) 您所在的位置:网站首页 合并单元格位置在哪里 freemarker导出Word,文本,可循环表格,合并单元格,可循环图片,目录更新(二)

freemarker导出Word,文本,可循环表格,合并单元格,可循环图片,目录更新(二)

2024-07-05 10:48| 来源: 网络整理| 查看: 265

上篇文章大概说了前期的ftl配置,这次说一下表格部分的操作。大概会有:

表格的数据循环单元格的合并。 先来说一下普通的表格,效果图如下: 先上效果图 这是一个通过一个预先设计好的模板,通过后台返回的数据来生成的表格。这个很简单,不涉及到合并的操作,字体单元格大小预先在模板设置好就可以。 模板如下: 模板 这个需要注意的是,只有${courseType}这一行是需要循环的,其余的位置不需要循环,所以在制作模板的时候,就把其他地方写死就可以,导出来的时候表格的结构也不会被破坏。 如果是一直都要循环的表格,那么模板制作只要有个表头和数据行就可以了,例如: 最简单的表格

上一篇文章已经介绍了如何导出xml,和导出之后的结构。打开xml找到表格,根据提示找到模板表格的部分。是表格的开始。 表格 为了方便我把表格部分提到了IDE里面,结构如下:从上到下依次为 表格结构 第一行肯定是表头,第二行才是我要循环的地方,循环的时候需要用到一个ftl标签,。 这是我写完的结构,因为我导出的时候结构嵌套了很多,标签用了很多,我只截取了一部分。 这个可不是起别名的意思。as后面的就是as前面中的每一个元素,后面的list就是t1.list中的每一个元素,只不过名字我写成了list,你可以写成任意名字,as t, as a等等 因为数据结构的问题外面还写了一个list,这个里面包含了我不是循环行地方的数据。 结构 把原来占位的地方改成list.xxx就可以了,这是循环位置的。不循环的位置,数据包含在哪里,就用谁去点,我的是在t1里面。 取数据 t1 注意:最终传入模板时的结构,我试了map或者对象都可以,list好像会报错,虽然process方法参数为obj,但是在ftl文件中会报错提醒。

当你传入的是map的时候 比如我上篇文章中传入的是,dataMap(“dataList”,list);list中装的都是map 那在模板中需要先在模板中写 这样data就代表的是list中的每一个map,之后就可以用data.xxx去取数据了。如果是对象 那么就不需要先写循环的标签,可以直接用对象去点对象中的属性取值。

接下来说一下带合并的表格,还是先上效果图。 一张课程表,每一行的第一个单元格时需要合并的。 合并 模板制作,包含表头,循环数据行,最后的合计行。 合并模板 IDE里加完循环标签,和上面的普通表格是一样的步骤。只是需要合并的位置处理一下 循环标签 现在表格的最外面定义一个变量,设置为空串。 定义变量 打开循环的数据行,每一个tr里面会包含对应的tc(单元格),找到对应的需要合并的单元格,我的是第一个,在下面添加逻辑判断,一定是在下面。 合并行 重点是这两个标签 这是合并开始的标签。 这是被合并的标签。 当一个单元格被添加了第一个标签时,此单元格开始向下合并。前提是下一个单元格必须有`这个标签。

如果每一个单元格都有 标签,那么操作Word时这些单元格不可被选中编辑,里面会有内容,但是打印时内容出不来。

当一个单元格添加了标签时,无论它上面的单元格是否有` ,它都会被上个单元格吞并。

那么效果图中的第一学年这两行,第一行第一个单元格里面有 ,第二行的第一个单元格有 。所以才会展现出合并的效果。

重新定义变量时,会进行覆盖操作。

重点强调一下,这个/不能少!!!!有一次我不小心就把这个/少写了,结果Word文档打不开,我用xml打开找了半天的错误,最后居然是因为/少写了,这样就会导致,从这个标签以下的所有数据和结构都被这个行合并,Word编辑器不识别这种结构,所以就打不开。

还有就是,目前我只能导出doc的Word,导出数据多的时候Word就会提示,点击确定,点击是,就能打开了。数据是没问题的,这可能是doc和docx的存储方式不太一样导致,具体原因我也不是很清楚,但是里面的数据是没问题。 问题

点击是

待续…



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有