SpringBoot_Freemarker生成Word_多个表格+两层嵌套循环;
步骤说明:
1.用Microsoft Office Word打开word原件;将文档中需要动态生成的内容,替换为属性名 ${name}
2.另存为,选择保存类型Word 2003 XML 文档(*.xml)
3.用Firstobject free XML editor打开文件,选择Tools下的Indent【或者按快捷键F8】格式化文件内容。左边是文档结构,右边是文档内容;
4. 文档生成后有时需要手动修改,查找第一步中设置的属性名,可能会产生类似${n.....ame}类似的样子,我们将将名字中间的标签删掉,恢复为${name}
5. word模板中有表格,需要循环的位置,
用 标签将第二对 标签(即除表头的w:tr标签后的一对)包围起来
同时表格内的属性例如${name},在这里需要修改为${user.name}
(userList是集合在dataMap中的key, user是集合中的每个元素, 类似), 如图:
PLUS:若表格之外还有嵌套的循环,也需要用,注意这里的标签不要和某对其他标签交叉,不可以出现这种
6. 标识替换完之后,另存为.ftl后缀文件即可。
代码里是相对有一丢丢复杂的,两层嵌套循环;
总(dataMap)
deptName 部门名
list(Table)表的集合
table1(map)
table-名字 ${map.table}
tableName-中文名 ${map.tableName}
columnCount-字段数 ${map.columnCount}
recordCount-记录数 ${map.recordCount}
listA-List--表格1 map.listA
column Model属性——字段名 ${model.column}
columnName Model属性——字段中文名 ${model.column}
rate Model属性——字段占比 ${model.rate}
nullValueCount Model属性——字段空值数 ${model.nullValueCount}
listB-List--表格2 map.listB
……
listC-List--表格3 map.listC
……
table2
table-名字 ${map.table}
tableName-中文名 ${map.tableName}
columnCount-字段数 ${map.columnCount}
recordCount-记录数 ${map.recordCount}
listA-List--表格1 map.listA
column Model属性——字段名 ${model.column}
columnName Model属性——字段中文名 ${model.column}
rate Model属性——字段占比 ${model.rate}
nullValueCount Model属性——字段空值数 ${model.nullValueCount}
listB-List--表格2 map.listB
……
listC-List--表格3 map.listC
1