【springboot+easypoi】一行代码搞定简单的word导出

之前写过一篇《一行代码搞定Excel导入导出》,有需要的童鞋可以回头看一下,今天简单说一下怎么一行代码实现简单的word导出。有的童鞋不太同意了,扯淡呢一行代码。你说的对,不是一行,但是封装后每次调用的时候再看是什么情况。^^_^^

1、像之前一样的引入easypoi的pom

       <dependency>
            <groupId>cn.afterturngroupId>
            <artifactId>easypoi-baseartifactId>
            <version>3.0.3version>
        dependency>
        <dependency>
            <groupId>cn.afterturngroupId>
            <artifactId>easypoi-webartifactId>
            <version>3.0.3version>
        dependency>
        <dependency>
            <groupId>cn.afterturngroupId>
            <artifactId>easypoi-annotationartifactId>
            <version>3.0.3version>
        dependency>

2、工具类封装

 /**
     * 导出word
     * 

第一步生成替换后的word文件,只支持docx

*

第二步下载生成的文件

*

第三步删除生成的临时文件

* 模版变量中变量格式:{{foo}} * @param templatePath word模板地址 * @param temDir 生成临时文件存放地址 * @param fileName 文件名 * @param params 替换的参数 * @param request HttpServletRequest * @param response HttpServletResponse */
public static void exportWord(String templatePath, String temDir, String fileName, Map params, HttpServletRequest request, HttpServletResponse response) { Assert.notNull(templatePath,"模板路径不能为空"); Assert.notNull(temDir,"临时文件路径不能为空"); Assert.notNull(fileName,"导出文件名不能为空"); Assert.isTrue(fileName.endsWith(".docx"),"word导出请使用docx格式"); if (!temDir.endsWith("/")){ temDir = temDir + File.separator; } File dir = new File(temDir); if (!dir.exists()) { dir.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"); } XWPFDocument doc = WordExportUtil.exportWord07(templatePath, params); String tmpPath = temDir + fileName; FileOutputStream fos = new FileOutputStream(tmpPath); doc.write(fos); // 设置强制下载不打开 response.setContentType("application/force-download"); // 设置文件名 response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); OutputStream out = response.getOutputStream(); doc.write(out); out.close(); } catch (Exception e) { e.printStackTrace(); } finally { delAllFile(temDir);//这一步看具体需求,要不要删 } }

3、调用测试

1.在项目下找个地方放模板文件
【springboot+easypoi】一行代码搞定简单的word导出_第1张图片
2.确定临时生成文件的存放路径
3.controller调用(这里有我说的一行代码)

import com.df.commons.utils.FileUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping("demo")
public class TestController {

    @RequestMapping("export")
    public void export(HttpServletRequest request, HttpServletResponse response){
        Map params = new HashMap<>();
        params.put("title","这是标题");
        params.put("name","李四");
        //这里是我说的一行代码
        FileUtil.exportWord("word/export.docx","F:/test","aaa.docx",params,request,response);
    }
}

4、模版格式

我只是这里写成了表格,你可以用任意格式,只需要替换变量即可。
【springboot+easypoi】一行代码搞定简单的word导出_第2张图片
【springboot+easypoi】一行代码搞定简单的word导出_第3张图片

你可能感兴趣的:(eboot,springboot)