package com.jeecg.ldcorder.controller;import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.jeecgframework.poi.word.WordExportUtil;public class WordUtil {/*** EasyPoi 替换数据 导出 word* @param templatePath word模板地址* @param tempDir 临时文件存放地址* @param filename 文件名称* @param data 替换参数* @param request* @param response*/public static void easyPoiExport(String templatePath, String tempDir, String filename, Map<String, Object> data, HttpServletRequest request, HttpServletResponse response) {if (!tempDir.endsWith("/")) {tempDir = tempDir + File.separator;}File file = new File(tempDir);if (!file.exists()) {file.mkdirs();}try {String userAgent = request.getHeader("user-agent").toLowerCase();if (userAgent.contains("msie") || userAgent.contains("like gecko")) {filename = URLEncoder.encode(filename, "UTF-8");} else {filename = new String(filename.getBytes("utf-8"), "ISO-8859-1");}//防止文件过大,报错:java.io.IOException: Zip bomb detected! The file would exceed the maxZipSecureFile.setMinInflateRatio(-1.0d);//开始导出文件操作XWPFDocument document = WordExportUtil.exportWord07(templatePath, data);String tempPath = tempDir + filename;FileOutputStream out = new FileOutputStream(tempPath);document.write(out);// 设置响应规则response.setContentType("application/force-download");response.addHeader("Content-Disposition", "attachment;filename=" + filename);OutputStream stream = response.getOutputStream();document.write(stream);stream.close();} catch (Exception e) {e.printStackTrace();} finally {deleteTempFile(tempDir, filename);}}/*** 删除临时生成的文件*/public static void deleteTempFile(String filePath, String fileName) {File file = new File(filePath + fileName);File f = new File(filePath);file.delete();f.delete();}
}
Word模板数据: