背景
在j项目开发中经常会有导出文件excel的需求,对此EasyExcel是个非常好用的工具,官方羽雀文档地址https://www.yuque.com/easyexcel/doc/easyexcel,这里简单总结一下使用该工具返回文件流的操作。
1.引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.7</version>
</dependency>
2.添加导出数据模板类(这里也可以直接使用excel文件作为导出模板,这里不做介绍)
例如这儿添加一个StudentModel类,每个字段需要添加@ExcelProperty注解,@ColumnWidth(15)可以指定列宽
@Data
public class SentimentInfoListModel {
@ExcelProperty(value = "年龄",index = 0)
private Integer age;
@ExcelProperty(value = "名字",index = 1)
private String name;
@ColumnWidth(15)
@ExcelProperty(value = "性别",index = 2)
private String sex;
}
3.构造模板数据,返回文件流
@GetMapping("student")
public void export( HttpServletResponse response, @RequestParam("fileName") String fileName) {
//调用业务,构造模板列表数据
List<StudentModel> listModel = ......;
//写入数据
ServletOutputStream out = response.getOutputStream();
response.setContentType("multipart/form-data");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode(fileName + ".xlsx", "UTF-8"));
//使用的easyexcel工具就这一行
EasyExcel.write(out, SentimentInfoListModel.class).autoCloseStream(true).sheet("信息列表").doWrite(listModel);
out.flush();
}
最后访问该请求,就可得到相应excel文件。