这里使用freemarker来实现:
- 准备好word模板,需要动态写入的地方便于识别的长字符串替换
- 将word文档另存为xml格式
- 找到需要替换的地方,用${}替换
- 替换完成后,将xml文件后缀修改为ftl
准备模板
准备word模板
将上面的模板另存为xml格式
打开xml格式的文档,找到需要动态写入的地方,用${}替换。
替换前:
附件内容部分在pkg:binaryData标签内(注意定位到准确位置),内容是一段base64字符串,所以我们在代码中将附件文件内容转换成base64存入即可。
替换后:
修改后将xml后缀改为ftl,模板准备完成
引入pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
主要代码
package com.example.exportword.service;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.Version;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import