1、pom.xml 导入对应的jar

      <dependency>

              <groupId>cn.afterturn</groupId>

              <artifactId>easypoi-spring-boot-starter</artifactId>

              <version>4.1.3</version>

         </dependency>

         <!--注意:word中要使用循环等标签必须单独导入以下依赖-->

        <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>ooxml-schemas</artifactId>

            <version>1.4</version>

        </dependency>


2、控制层导出word代码

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.xwpf.usermodel.XWPFDocument;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import cn.afterturn.easypoi.word.WordExportUtil;

@Controller

public class WordExportController {


@GetMapping("/exportword")

public void exportwod(HttpServletRequest request, HttpServletResponse response) {

Map<String, Object> map = new HashMap<>();

map.put("projectName", "项目的名称1234");

map.put("buildUnit", "项目的建设单位4321");

map.put("constructionUnit", "中铁十七建");

map.put("supervisionUnit", "中国监理公司");

map.put("projectProgress", "施工中");

map.put("projectAddress", "项目地址信息为长安街");

map.put("projectWorkerNum", "22人");

map.put("addWorkerNum", "12人");

map.put("projectProgressRemark", "项目进度备注");

map.put("provincialNum", "10人");

map.put("otherProvincialNum", "19人");

map.put("hubeiNum", "9人");

map.put("addProvincialNum", "12");

map.put("addOtherProvincialNum", "11人");

map.put("addHubeiNum", "7人");

map.put("remark", "疫情期间注意勤洗手,戴口罩,不聚集");

String path = Thread.currentThread().getContextClassLoader().getResource("").getPath() + "static";

String filename = "申请表";

try {

filename = new String(filename.getBytes("UTF-8"), "iso8859-1");

XWPFDocument doc = WordExportUtil.exportWord07(path + "/template/word/apply_word.docx", map);

OutputStream os = response.getOutputStream();

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-disposition", "attachment;filename=" + filename + ".docx");// filename为导出的word的名字

doc.write(os);

os.close();

} catch (Exception e) {

e.printStackTrace();

}

}

@GetMapping("/exportword2")

public void exportwod2(HttpServletRequest request, HttpServletResponse response) {

Map<String, Object> dataMap = new HashMap<>();

         dataMap.put("title", "个人信息");

         Map<String, String> user = new HashMap<>();

         user.put("name", "张三");

         user.put("age", "22");

         user.put("address", "广东省珠海市香洲区");

         user.put("other", "篮球");

         dataMap.put("user", user);

         

         List<Map<String, String>> jobs = new ArrayList<>();

         Map<String, String> job;

         for (int i = 0; i < 5; i++) {

             job = new HashMap<>();

             job.put("name", "公司名称-" + i);

             job.put("address", "公司地址:" + i);

             jobs.add(job);

         }

         dataMap.put("jobs",jobs);

String path = Thread.currentThread().getContextClassLoader().getResource("").getPath() + "static";

String filename = "简历";

try {

filename = new String(filename.getBytes("UTF-8"), "iso8859-1");

            XWPFDocument doc = WordExportUtil.exportWord07(path + "/template/word/intro.docx", dataMap);

  OutputStream os = response.getOutputStream();

  response.setContentType("application/vnd.ms-excel");

  response.setHeader("Content-disposition", "attachment;filename=" + filename + ".docx");// filename为导出的word的名字

  doc.write(os);

  os.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}


导出模板如下