word文档的导出
word文档的导出
@RequestMapping("/export")
public void exports(HttpServletResponse response,/*参数*/) {
//获取模板需要的数据
Map<String, Object> parametersMap =exports(/*参数*/);/*返回的值是{name:"张三",age:"18",sex:"男",phone:"12345678912"}*/
//如果数据为空进行初始化
if (parametersMap == null) parametersMap = new HashMap<>();
// 存储报表全部数据
Map<String, Object> wordDataMap = new HashMap<String, Object>();
wordDataMap.put("parametersMap", parametersMap);
// 读取word模板---这里我是将文件的模板放在了resources/templates/fileTemplate的目录下面
InputStream fileInputStream = null;
try {
Object file1 =null;
try {
//先查找物理文件,物理文件优先 BoardCard指的是模板的名称这里是根据路径进行查找
File file = ResourceUtils.getFile("file:./templates/fileTemplate/" + "模板名称"+ ".docx");
if (file.exists()){
file1 =file;
}else {
ClassPathResource resFile = new ClassPathResource("templates/fileTemplate/" + "模板名称"+ ".docx");
if (resFile.isFile() && resFile.exists() && resFile.isReadable()){file1 =resFile.getFile();}
else {file1 =resFile.getInputStream();}
}
} catch (Exception e) {
}
// 设置浏览器以下载的方式处理该文件名
String fileName = "下载后的文件名";
//判断流类型
if (file instanceof String)
fileInputStream = new FileInputStream(new File(file.toString()));
else if (file instanceof File) {
fileInputStream = new FileInputStream((File) file);
} else if (file instanceof InputStream) {
fileInputStream = (InputStream) file;
}
//初始化模板名称
WordTemplate template = new WordTemplate(fileInputStream);
// 替换数据
template.replaceDocument(wordDataMap);
OutputStream os = response.getOutputStream();
//设置响应头
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
response.setContentType("application/msword");
template.getDocument().write(os);
} catch (Exception e) {
}
}
模板如下:
结果如下: