提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- Java通过模板把数据导入到word文档中
- 一、模板是什么?
- 二、使用步骤
package com.cz.service; import cn.afterturn.easypoi.cache.manager.POICacheManager; import cn.afterturn.easypoi.word.WordExportUtil; import cn.afterturn.easypoi.word.entity.MyXWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.stereotype.Service; import org.springframework.util.ResourceUtils; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import java.util.UUID; /** * @ClassName WordService * @Author lxz * @Date 2022/10/31 * @Version 1.0 **/ @Service public class WordService { public void word(HttpServletResponse response,String path1) throws Exception { // 读取static文件下的模板 String path = this.getClass().getClassLoader().getResource("static/PromptReport.docx").getPath(); // 参数写读取到的路径 File templateFile = new File(path); // 替换文件中相同的数据 HashMap map = new HashMap(); map.put("gm", "1111"); map.put("lwm", "3333"); //2.映射模板,替换数据 XWPFDocument word = WordExportUtil.exportWord07(templateFile.getPath(), map); // 设置返回参数的字符集 response.reset(); response.setHeader("Access-Control-Allow-Origin","*"); response.setContentType("application/msexcel"); response.setContentType("text/html; charset=UTF-8"); // 设置返回参数的文件名称和类型 response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("瞬量信息.docx", "utf-8")); // 生成输出流 ServletOutputStream out = response.getOutputStream(); // 写回文件 word.write(out); // 关流(可以不写,因为流是response传过来的,不是咱们自己new的) out.close(); } }
- 3.controller代码
-
package com.cz.controller; import cn.afterturn.easypoi.word.WordExportUtil; import com.cz.service.WordService; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.net.URLEncoder; import java.util.HashMap; @RestController @RequestMapping("word") public class WordController { @Autowired private WordService wordService; @GetMapping("download") public void word(HttpServletResponse response,String path1) throws Exception { wordService.word(response,path1); } }
- 总结
- word模板类型必须是docx类型