用java实现word导出,如果不实现批量导出,可以只使用 word 替换工具,如果要实现批量导出,这里的解决办法是将所有的导出文件放入服务器临时文件,压缩后导出
1.依赖包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.0.3</version>
</dependency>
2. word模板替换工具
package com.**.**.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
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.commons.lang3.StringUtils;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.util.Assert;
// 这是俩个常量包 BIAS = "/" , MSIE = "MSIE",TRIDENT = "Trident",MOZILLA = "Mozilla"
import com.***.***.core.constants.CoreConstant;
import com.***.***.web.constants.EquipmentComputeConstants;
import cn.afterturn.easypoi.word.WordExportUtil;
public class ExportUtil {
/**
* 导出word
* <p>
* 第一步生成替换后的word文件,只支持docx
* </p>
* <p>
* 第二步下载生成的文件
* </p>
* <p>
* 第三步删除生成的临时文件
* </p>
* 模版变量中变量格式:{
{foo}}
*
* @param templatePath
* word模板地址
* @param temDir
* 生成临时文件存放地址
* @param fileName
* 文件名
* @param params
* 替换的参数
* @param request
* HttpServletRequest
* @param response
* HttpServletResponse
* @throws IOException
*/
public static void exportWord(String templatePath, String temDir, String fileName, Map<String, Object> params,
HttpServletRequest request, HttpServletResponse response) throws IOException {
Assert.notNull(templatePath, "模板路径不能为空");
Assert.notNull(temDir, "临时文件路径不能为空");
Assert.notNull(fileName, "导出文件名不能为空");
Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式");
if (!temDir.endsWith(CoreConstant.BIAS)) {
temDir = temDir + File.separator;
}
File dir = new File(temDir);
if (!dir.exists()) {
dir.mkdirs();
}
FileInputStream in = null;
// OutputStr