java
复制代码
/**
* 导出技术成果校审单Word文档
*/
/**
* 导出技术成果校审单Word文档 - 简化版
*/
public void exportWord(ReviewFormDTO formData, HttpServletResponse response) throws Exception {
// 1. 获取模板文档
File rootFile = new File(ResourceUtils.getURL("classpath:").getPath());
File templateFile = new File(rootFile, "/static/review_template.docx");
Map<String, Object> contentMap = new HashMap<>();
List<Map<String , Object>> tableDataList = new ArrayList<>();
for (int i = 0; i <10; i++) {
Map<String , Object> rowMap = new HashMap<>();
rowMap.put("id", i+1);
rowMap.put("comment","评论ddddd" + i);
rowMap.put("corrector" ,"改正" +i);
rowMap.put("passed ","通过");
tableDataList.add(rowMap);
}
contentMap.put("reviewList", tableDataList);
//
// 5. 使用模板导出Word
XWPFDocument word = WordExportUtil.exportWord07(templateFile.getPath(),contentMap );
// 6. 设置文件名和响应头
String fileName = "技术成果校审单_" +
(formData.getProjectName() != null && !formData.getProjectName().isEmpty() ?
formData.getProjectName() : "未命名") + ".docx";
// 两种编码方式,选择一种
// 方式1:使用URLEncoder(推荐)
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("content-disposition", "attachment;filename=" + fileName);
// 方式2:使用ISO8859-1编码(兼容性更好)
// response.setHeader("content-disposition", "attachment;filename=" +
// new String(fileName.getBytes("UTF-8"), "ISO8859-1"));
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.sheet");
// 7. 输出到响应流
OutputStream out = response.getOutputStream();
word.write(out);
out.flush();
out.close();
}