使用EasyExcel导出明细数据
作者:fyupeng
技术专栏:☞ https://github.com/fyupeng
分布式博客项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api
留给读者
工作中难免会遇到数据导出的问题,最简单的解决方案就是引入阿里的EasyExcel
来解决。
一、介绍
EasyExcel是alibaba开源的一个Excel工具,容易上手,基本能够满足企业的需求。
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version>
</dependency>
二、代码
1. 实体注解
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Data
@Builder(toBuilder = true)
public class Entity implements Serializable {// 导出value对应表格头,index对应排序(从0下标开始)@ExcelProperties(value = "编码", index = 0)private String code;@ExcelProperties(value = "名称", index = 1)private String name;
}
2. 核心代码
public void export(HttpServletRequest request, HttpServletResponse response) {String fileName = "导出明细.xlsx";OutputStream out = null;try {response.setContentType("application/octet-stream;charset=UTF-8");response.setHeader("Content-Type", "application/vnd.ms-excel");fileName = URLEncoder.encode(fileName, "UTF-8");response.setHeader("Content-Disposition", "attachment;filename=", fileName);response.addHeader("Cache-Control", "no-cache");out = response.getOutputStream();// 创建 Exce 文件写入流ExcelWriter excelWriter = EasyExcel.write(out).build();// 新增 Sheet 表格WriteSheet sheet = EasyExcel.writeSheet(0, "基本信息").head(Entity.class).build();List<Entity> list = new ArrayList<>();excelWriter.write(list, sheet);// 关闭 excel 写入流excelWriter.finish();// 内存刷入响应流并清空内存response.flushBuffer();} catch (IOException e) {throw new Exception("明细导出失败!");}
}
三、总结
每日总结归档,学习会遗忘,但学习后总结不会,它能让你变得越来越强!