使用ftl模板生成word

博客介绍了前端使用Vue1.0、后端结合Java接口实现功能。包含js下载方法,还讲述了创建word文档,将其另存为xml文件并格式化、修改内容。依据ftl赋值规则填写属性,介绍了FTL常用标签及语法,以及根据不同值展示样式等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不多解释直接上代码

前端:vue1.0

//导出检查单
      exportCheckSheet(record) {
        const hide = this.$message.loading("检查单生成中,请稍候。", 0);
        downloadFile("http://127.0.0.1:8081/demo" + "/url", record.projectName + '检查单.docx', record).finally(() => {
          hide();
        })
      },

js下载方法

/**
 * 下载文件
 * @param url 文件路径
 * @param fileName 文件名
 * @param parameter
 * @returns {*}
 */
export function downloadFile(url, fileName, parameter) {
  return downFile(url, parameter).then((data) => {
    if (!data || data.size === 0) {
      Vue.prototype['$message'].warning('文件下载失败')
      return
    }
    if (typeof window.navigator.msSaveBlob !== 'undefined') {
      window.navigator.msSaveBlob(new Blob([data]), fileName)
    } else {
      let url = window.URL.createObjectURL(new Blob([data]))
      let link = document.createElement('a')
      link.style.display = 'none'
      link.href = url
      link.setAttribute('download', fileName)
      document.body.appendChild(link)
      link.click()
      document.body.removeChild(link) //下载完成移除元素
      window.URL.revokeObjectURL(url) //释放掉blob对象
    }
  })
}

/**
 * 下载文件 用于导出
 * @param url
 * @param parameter
 * @returns {*}
 */
export function downFile(url,parameter){
  return axios({
    url: url,
    params: parameter,
    method:'get' ,
    responseType: 'blob'
  })
}

后端接口

/**
	 * @Title exportCheckSheet
	 * @Description 整改通知单考核检查表
	 * @author guo
	 * @date 2023/11/8 11:09
	 * @param request
	 * @param instanceItem
	 * @return
	 */
    @RequestMapping(value = "/exportCheckSheet")
    public void exportCheckSheet(HttpServletRequest request, HttpServletResponse response, AssessAdviceInstanceItem instanceItem) {
		// 查询项目详情
		instanceItem = instanceItemService.getById(instanceItem.getId());
		if(instanceItem==null) {
			throw new JeecgBootException("未找到对应数据!");
		}
		SimpleDateFormat nian = new SimpleDateFormat("yyyy年MM月dd日");
		// 查询考核信息
		AssessAdviceInstance instance = instanceService.getById(instanceItem.getInstanceId());
		// 声明打分关联数据
		AssessAdviceSheetScoreRel rel = new AssessAdviceSheetScoreRel();
		// 表单id
		rel.setSheetId(instance.getSheetId());
		// 查询所有打分明细
		List<AssessAdviceSheetItem> list = assessAdviceSheetItemService.queryListProject(rel);
		// 设置排序
		for(int i=0; i< list.size();i++){
			list.get(i).setId(String.valueOf(i+1));
			// 设置前一条第一节点标题
			if(i > 0){
				item.setPreFirstTitle(list.get(i-1).getFirstTitle());
			}else{
				item.setPreFirstTitle("");
			}
			// 设置后一条第一节点标题
			if(i < list.size()-1){
				item.setNextFirstTitle(list.get(i+1).getFirstTitle());
			}else{
				item.setPreFirstTitle("");
			}
		}
		Map<String, Object> data = new HashMap<>();
		data.put("maplist", list);
		data.put("projectName", instanceItem.getProjectName());
		data.put("finalScore", instanceItem.getFinalScore());
		data.put("createTime", nian.format(instanceItem.getCreateTime()));
		try {
			String wordPath = "E\\demo";
			createWord(data, "check_sheet_ftl", wordPath, response);
		} catch (Exception e) {
			throw new JeecgBootException("导出失败!");
		}
    }
	/**
	 * @Title createWord
	 * @Description 下载文件
	 * @author guo
	 * @date 2023/11/9 10:54
	 * @param dataMap
	 * @param templateName
	 * @param filePath
	 * @param response
	 * @return
	 */
	public void downLoadFile(Map<String, Object> dataMap,String templateName,String filePath, HttpServletResponse response) {
		InputStream inputStream = createShowWord(dataMap, templateName, filePath);
		OutputStream out = null;
		try {
			response.setContentType("application/msword");
			response.setHeader("Content-Disposition", "attachment;filename=\"" + new String(templateName.getBytes("GBK"), "iso8859-1") + "\"");
			response.setCharacterEncoding("utf-8");//此句非常关键,不然word文档全是乱码
			out = response.getOutputStream();
			response.setHeader("Content-Disposition", "attachment; filename="+"schoolReport"+".doc");
			int b = 0;
			byte[] buffer = new byte[1000000];
			while (b != -1) {
				b = inputStream.read(buffer);
				if(b!=-1) {
					out.write(buffer, 0, b);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				inputStream.close();
				out.close();
				out.flush();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * @Title createShowWord
	 * @Description 生成word
	 * @author guo
	 * @date 2023/11/9 10:56 
	 * @param map
	 * @param templateName
	 * @param filePath
	 * @return 
	 * @return: java.io.InputStream
	 */
	public static InputStream createShowWord ( Map <?, ?> map,String templateName,String filePath ) {
		InputStream inputStream = null;
		try {
			Configuration configuration = new Configuration ();
			configuration.setDefaultEncoding ( "UTF-8" );
			// ftl模板文件
			configuration.setDirectoryForTemplateLoading(new File(filePath)); // 模版文件前缀路径
			// 获取模板
			Template template = configuration.getTemplate(templateName + ".ftl", "utf-8"); // 模版名称
			File outfile = File.createTempFile ( "schoolReport", ".doc" );
			outfile.deleteOnExit ();
			// 将模板和数据模型合并生成文件
			Writer out = new BufferedWriter (new OutputStreamWriter ( new FileOutputStream ( outfile ), "UTF-8" ));
			// 生成文件
			template.process ( map, out );
			out.flush ();
			out.close ();
			inputStream = new FileInputStream ( outfile );
		} catch ( Exception e ) { e.printStackTrace (); }
		return inputStream;
	}

tfl模板

创建word文档
根据ftl赋值规则填写需要赋值的属性
在这里插入图片描述
将word另存为xml文件
在这里插入图片描述
然后将生成的xml文件重命名
在这里插入图片描述
然后编辑文件,将文件格式化一下
链接: https://c.runoob.com/front-end/710/

格式化之后,修改需要展示的内容
在这里插入图片描述
maplist:为后台代码方法(exportCheckSheet)中map集合(data)中的list集合(maplist);
在这里插入图片描述
把表格中原先的属性改为${item.id!“”},“??” :判空,“!‘’”:如果为null则展示’'.
根据不同的值展示不同的样式:
在这里插入图片描述

合并内容相同行
在这里插入图片描述
firstTitle:为后台代码方法(exportCheckSheet)中map集合(data)中的list集合(maplist)中属性的内容;

FTL常用标签及语法:

判断对象是否存在 。如: obj可以是任何类型的对象,像集合,实体类,属性等等
<#if obj??>…</#if>
<#if obj??> …<#else>…</#if>
或者
<#if obj?exists>…</#if>
<#ifobj?exists> …<#else>…</#if>
判断是否和某一个值相等
<#if obj?exists && obj.id==1>…</#if>
<#if obj?exists && obj.id == 1>…<#else>…</#if>
注: 必须先判断是否存在,才可比较相等,如果该指定的参数不存在还比较相等的话就回出错;
获取对象值
获取普通属性值:${(obj.属性名称)!} 或者 ${属性名称}
获取日期类值:${obj.属性名称?string(“yyyy-MM-dd HH:mm:ss”)}
获取金额类值(以数字20为例):
<#setting number_format=“percent”/> // 设置数字默认输出方式(‘percent’,百分比)
<#assign answer=20/>        // 声明变量 answer 20
${answer?string}          // 转换字符串输出 4,200%
${answer?string.number}     // 转换数字输出 42
${answer?string.currency}      // 转换货币输出 ¥42.00
${answer?string.percent}     // 转换百分比输出 4,200%
集合
遍历集合:
<#list empList! as emp>
${emp.name!}
</#list>
.
可以这样遍历集合:
<#list 0…(empList!?size-1) as i>
${empList[i].name!}
</#list>
.
与jstl循环类似,也可以访问循环的状态。
empList?size    // 取集合的长度
emp_index:     // int类型,当前对象的索引值
emp_has_next:    // boolean类型,是否存在下一个对象
.
使用<#break>跳出循环
<#if emp_index = 0><#break></#if>
.
集合长度判断
<#if empList?size != 0></#if> // 判断=的时候,注意只要一个=符号,而不是==

下边贴上ftl代码

<w:tr>
                                <w:tblPrEx>
                                    <w:tblBorders>
                                        <w:top w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        <w:insideH w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                        <w:insideV w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                    </w:tblBorders>
                                    <w:tblCellMar>
                                        <w:top w:w="0" w:type="dxa"/>
                                        <w:left w:w="108" w:type="dxa"/>
                                        <w:bottom w:w="0" w:type="dxa"/>
                                        <w:right w:w="108" w:type="dxa"/>
                                    </w:tblCellMar>
                                </w:tblPrEx>
                                <w:trPr>
                                    <w:cantSplit/>
                                    <w:trHeight w:val="509" w:hRule="atLeast"/>
                                    <w:jc w:val="center"/>
                                </w:trPr>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="200" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="eastAsia" w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                            <w:t>序号</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="458" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="eastAsia" w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                            <w:t>考核内容</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="3513" w:type="pct"/>
                                        <w:gridSpan w:val="4"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="eastAsia" w:ascii="仿宋" w:hAnsi="Calibri" w:eastAsia="仿宋" w:cs="Times New Roman"/>
                                                <w:color w:val="auto"/>
                                                <w:kern w:val="2"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="eastAsia" w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                            <w:t>考核指标</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="264" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="eastAsia" w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                            <w:t>标准分值</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="260" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="eastAsia" w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                            <w:t>实得分值</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="302" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="eastAsia" w:ascii="仿宋" w:eastAsia="仿宋"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="24"/>
                                                <w:szCs w:val="24"/>
                                                <w:highlight w:val="none"/>
                                            </w:rPr>
                                            <w:t>附注</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                            </w:tr>
                            <#list maplist as item>
							<w:tr>
                                <w:tblPrEx>
                                    <w:tblBorders>
                                        <w:top w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        <w:insideH w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                        <w:insideV w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                    </w:tblBorders>
                                    <w:tblCellMar>
                                        <w:top w:w="0" w:type="dxa"/>
                                        <w:left w:w="108" w:type="dxa"/>
                                        <w:bottom w:w="0" w:type="dxa"/>
                                        <w:right w:w="108" w:type="dxa"/>
                                    </w:tblCellMar>
                                </w:tblPrEx>
                                <w:trPr>
                                    <w:cantSplit/>
                                    <w:trHeight w:val="567" w:hRule="atLeast"/>
                                    <w:jc w:val="center"/>
                                </w:trPr>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="200" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="eastAsia" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${item.id!""}</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="458" w:type="pct"/>
										<#--合并第一标题-->
                                        <#if item.firstTitle == item.preFirstTitle>
											<w:vMerge/>
                                        <#else>
											<w:vMerge w:val="restart"/>
                                        </#if>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${item.firstTitle!""}</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
								<#if item.title??>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="911" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:keepNext w:val="0"/>
                                            <w:keepLines w:val="0"/>
                                            <w:widowControl w:val="0"/>
                                            <w:numPr>
                                                <w:ilvl w:val="0"/>
                                                <w:numId w:val="0"/>
                                            </w:numPr>
                                            <w:suppressLineNumbers w:val="0"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:before="0" w:beforeAutospacing="0" w:after="0" w:afterAutospacing="0" w:line="240" w:lineRule="auto"/>
                                            <w:ind w:leftChars="0" w:right="0" w:rightChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${item.title!""}</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="2602" w:type="pct"/>
                                        <w:gridSpan w:val="3"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
									<#if item.scoreDescList??>
									<#list item.scoreDescList as scoreDescItem>
                                    <w:p>
                                        <w:pPr>
                                            <w:keepNext w:val="0"/>
                                            <w:keepLines w:val="0"/>
                                            <w:widowControl w:val="0"/>
                                            <w:numPr>
                                                <w:ilvl w:val="0"/>
                                                <w:numId w:val="0"/>
                                            </w:numPr>
                                            <w:suppressLineNumbers w:val="0"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:before="0" w:beforeAutospacing="0" w:after="0" w:afterAutospacing="0" w:line="240" w:lineRule="auto"/>
                                            <w:ind w:leftChars="0" w:right="0" w:rightChars="0"/>
                                            <w:jc w:val="left"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:kern w:val="2"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${scoreDescItem!""}</w:t>
                                        </w:r>
                                        <w:bookmarkStart w:id="0" w:name="_GoBack"/>
                                        <w:bookmarkEnd w:id="0"/>
                                    </w:p>
									</#list>
									<#else>
									<w:p>
                                        <w:pPr>
                                            <w:keepNext w:val="0"/>
                                            <w:keepLines w:val="0"/>
                                            <w:widowControl w:val="0"/>
                                            <w:numPr>
                                                <w:ilvl w:val="0"/>
                                                <w:numId w:val="0"/>
                                            </w:numPr>
                                            <w:suppressLineNumbers w:val="0"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:before="0" w:beforeAutospacing="0" w:after="0" w:afterAutospacing="0" w:line="240" w:lineRule="auto"/>
                                            <w:ind w:leftChars="0" w:right="0" w:rightChars="0"/>
                                            <w:jc w:val="left"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:kern w:val="2"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${scoreDescs!""}</w:t>
                                        </w:r>
                                        <w:bookmarkStart w:id="0" w:name="_GoBack"/>
                                        <w:bookmarkEnd w:id="0"/>
                                    </w:p>
									</#if>
                                </w:tc>
                                <#else>
								<w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="3513" w:type="pct"/>
                                        <w:gridSpan w:val="4"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <#if item.scoreDescList??>
									<#list item.scoreDescList as scoreDescItem>
                                    <w:p>
                                        <w:pPr>
                                            <w:keepNext w:val="0"/>
                                            <w:keepLines w:val="0"/>
                                            <w:widowControl w:val="0"/>
                                            <w:numPr>
                                                <w:ilvl w:val="0"/>
                                                <w:numId w:val="0"/>
                                            </w:numPr>
                                            <w:suppressLineNumbers w:val="0"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:before="0" w:beforeAutospacing="0" w:after="0" w:afterAutospacing="0" w:line="240" w:lineRule="auto"/>
                                            <w:ind w:leftChars="0" w:right="0" w:rightChars="0"/>
                                            <w:jc w:val="left"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:kern w:val="2"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${scoreDescItem!""}</w:t>
                                        </w:r>
                                        <w:bookmarkStart w:id="0" w:name="_GoBack"/>
                                        <w:bookmarkEnd w:id="0"/>
                                    </w:p>
									</#list>
									<#else>
									<w:p>
                                        <w:pPr>
                                            <w:keepNext w:val="0"/>
                                            <w:keepLines w:val="0"/>
                                            <w:widowControl w:val="0"/>
                                            <w:numPr>
                                                <w:ilvl w:val="0"/>
                                                <w:numId w:val="0"/>
                                            </w:numPr>
                                            <w:suppressLineNumbers w:val="0"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:before="0" w:beforeAutospacing="0" w:after="0" w:afterAutospacing="0" w:line="240" w:lineRule="auto"/>
                                            <w:ind w:leftChars="0" w:right="0" w:rightChars="0"/>
                                            <w:jc w:val="left"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:kern w:val="2"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${scoreDescs!""}</w:t>
                                        </w:r>
                                        <w:bookmarkStart w:id="0" w:name="_GoBack"/>
                                        <w:bookmarkEnd w:id="0"/>
                                    </w:p>
									</#if>
                                </w:tc>
								</#if>
								<w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="264" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${item.standardScore!""}</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="260" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US"/>
                                            </w:rPr>
                                            <w:t>${item.score!""}</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                                <w:tc>
                                    <w:tcPr>
                                        <w:tcW w:w="302" w:type="pct"/>
                                        <w:tcBorders>
                                            <w:top w:val="single" w:color="auto" w:sz="6" w:space="0"/>
                                            <w:left w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                            <w:right w:val="single" w:color="auto" w:sz="12" w:space="0"/>
                                        </w:tcBorders>
                                        <w:vAlign w:val="center"/>
                                    </w:tcPr>
                                    <w:p>
                                        <w:pPr>
                                            <w:pStyle w:val="10"/>
                                            <w:autoSpaceDE w:val="0"/>
                                            <w:autoSpaceDN w:val="0"/>
                                            <w:adjustRightInd w:val="0"/>
                                            <w:spacing w:line="240" w:lineRule="auto"/>
                                            <w:ind w:firstLine="0" w:firstLineChars="0"/>
                                            <w:jc w:val="center"/>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋" w:hAnsi="仿宋" w:eastAsia="仿宋" w:cs="仿宋"/>
                                                <w:b w:val="0"/>
                                                <w:bCs w:val="0"/>
                                                <w:color w:val="auto"/>
                                                <w:sz w:val="21"/>
                                                <w:szCs w:val="21"/>
                                                <w:highlight w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
                                            </w:rPr>
                                        </w:pPr>
                                        <w:r>
                                            <w:rPr>
                                                <w:rFonts w:hint="default" w:ascii="仿宋_GB2312" w:hAnsi="宋体" w:eastAsia="仿宋_GB2312" w:cs="仿宋_GB2312"/>
                                                <w:i w:val="0"/>
                                                <w:iCs w:val="0"/>
                                                <w:color w:val="000000"/>
                                                <w:kern w:val="0"/>
                                                <w:sz w:val="22"/>
                                                <w:szCs w:val="22"/>
                                                <w:u w:val="none"/>
                                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                                            </w:rPr>
                                            <w:t>${item.remark!""}</w:t>
                                        </w:r>
                                    </w:p>
                                </w:tc>
                            </w:tr>
                            </#list>
### 使用FTL模板创建Word文档的页眉和页脚 为了使用FreeMarker (FTL) 模板来创建带有页眉和页脚的Word文档,通常会涉及到将XML结构嵌入到模板中并利用Apache POI或其他库来进行最终渲染。然而,这种方法较为复杂,因为需要先定义好格式化的XML再化为FTL文件[^1]。 下面是一个简化版的例子,展示如何设置一个基本的Word文档模板,并在其中加入简单的页眉和页脚: #### FTL模板中的页眉和页脚配置 ```xml <?xml version="1.0" encoding="UTF-8"?> <w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> <!-- 文档主体 --> <w:body> <!-- 正文内容 --> <!-- 定义页眉 --> <w:hdr w:type="default"> <w:p> <w:r> <w:t>这是页眉</w:t> </w:r> </w:p> </w:hdr> <!-- 定义页脚 --> <w:ftr w:type="default"> <w:p> <w:r> <w:t>这是页脚</w:t> </w:r> </w:p> </w:ftr> </w:body> </w:document> ``` 此代码片段展示了如何在一个WordML XML字符串内指定`<w:hdr>` 和 `<w:ftr>`标签用于表示页眉和页脚的内容。需要注意的是这只是一个非常基础的例子;实际应用可能更复杂,取决于具体需求以及所使用的工具链。 #### Java代码示例:加载并填充模板 当有了上述模板之后,则可以通过Java程序读取该模板并将数据注入进去: ```java import freemarker.template.Configuration; import freemarker.template.Template; // 创建 FreeMarker 配置实例 Configuration cfg = new Configuration(Configuration.VERSION_2_3_31); cfg.setClassForTemplateLoading(YourClassName.class, "/templates"); // 加载模板 Template template = cfg.getTemplate("your-template.ftl", "UTF-8"); // 准备模型数据 Map<String, Object> modelData = Maps.newHashMap(); modelData.put("headerText", "自动生成的报告"); modelData.put("footerText", "第 ${page} 页 / 总共 ${totalPages}"); // 输出处理后的结果至目标流 Writer fileWriter = new FileWriter(new File("/path/to/output.doc")); template.process(modelData, fileWriter); fileWriter.close(); ``` 这段代码说明了怎样通过FreeMarker API加载预先准备好的`.ftl` 文件作为模板,并向其传递必要的参数以生成最终的Word文档。请注意这里的路径应当替换为具体的项目环境下的有效位置。 尽管如此,考虑到直接操作WordML XML存在一定的难度,建议考虑采用更加直观的方法如POI结合现有的Word模板进行开发[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值