本教程详细讲解了如何使用Spring Boot和FreeMarker技术生成包含复杂结构(如多表格及嵌套循环)的Word文档,适合后端开发者深入学习。
使用SpringBoot与Freemarker生成含有多个表格的Word文档,并进行两层嵌套循环的具体步骤如下:
1. 使用Microsoft Office Word打开原始Word文件;将需要动态填充的内容替换为属性名,如${name}。
2. 另存该文件时选择“保存类型”中的“Word 2003 XML 文档(*.xml)”格式。
3. 利用Firstobject Free XML Editor软件打开生成的XML文档,并使用工具栏上的Indent功能或快捷键F8来格式化内容。此时,界面左边显示文档结构,右边展示具体内容。
4. 在完成上述步骤后,有时需要手动修正文件中的属性名。例如,在第一步中设置为${name}的情况下可能会出现类似${n.....<..>ame<..>}这样的情况,这时应删除中间的标签并恢复成原始形式:${name}。
5. 若Word模板内包含表格,并且需要循环填充的位置,则使用Freemarker语法如:<#list userList as user>#list>将第二对标签(即除表头之外的一对)包裹起来。同时,对于表格内的属性例如${name},应更改为${user.name}(这里假设userList是集合在dataMap中的键名, 而user代表集合中每个元素)。
6. 对于文档其他部分的嵌套循环处理也遵循相似原则:使用<#list>#list>标签将需要动态生成的内容包裹起来。注意不要让这些标签与其他标签交叉,例如不能出现<#list>#list>这样的情况。
完成以上步骤后,在标识替换完成后保存文件为.ftl格式的Freemarker模板文件即可进行后续操作。
在代码实现方面,会涉及到相对复杂的两层嵌套循环结构。具体示例如下:
- 总(dataMap): deptName 部门名
- list(Table)表集合 <#list table as map>#list>
- 表格1(map)
- 表格名称:${map.table}
- 中文名: ${map.tableName}
- 字段数: ${map.columnCount}
- 记录数量: ${map.recordCount}
* listA-List<特性1Model>
<#list map.listA as model>#list> (字段属性、中文名等)
- 表格2(map)、表格3(map): 类似结构
通过以上步骤和示例,可以有效地利用SpringBoot与Freemarker技术生成复杂的Word文档内容。