使用Hutool工具 进行Excel 导出
使用版本 SpringBoot2.X
引入依赖
分别引入 poi 和 hutool 的依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.3</version>
</dependency>
详细使用
实体类
@Data
public class Student implements Serializable {
private String name;
private String gender;
private Integer age;
private String phone;
public Student(String name, String gender, Integer age, String phone) {
this.name = name;
this.gender = gender;
this.age = age;
this.phone = phone;
}
}
hutool使用
@GetMapping("/getExcel")
public void getExcel(HttpServletResponse response) {
//模拟学生数据
List<Student> students = new ArrayList<>();
students.add(new Student("张三","男",16,"13100000000"));
students.add(new Student("张四","女",18,"13111111111"));
students.add(new Student("张五","男",22,"13122222222"));
students.add(new Student("张六","女",25,"13133333333"));
students.add(new Student("张七","男",12,"13144444444"));
// 通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter();
//自定义标题名
writer.addHeaderAlias("name","姓名");
writer.addHeaderAlias("gender","性别");
writer.addHeaderAlias("age","年龄");
writer.addHeaderAlias("phone","手机号");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(students, true);
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//这里容易乱码 处理
String name = "学生统计表";
name = URLEncoder.encode(name, StandardCharsets.UTF_8);
response.setHeader("Content-Disposition","attachment;filename="+name+".xls");
ServletOutputStream out= null;
try {
out = response.getOutputStream();
writer.flush(out, true);
}
catch (IOException e) {
e.printStackTrace();
}
finally {
// 关闭writer
writer.close();
}
//关闭输出Servlet流
IoUtil.close(out);
}