传统Excel操作或者解析都是利用Apach POI进行操作,但是使用过这个框架的人都知道,这个框架并不完美,有较多的缺陷:
1、使用步骤繁琐
2、动态写出Excel操作非常麻烦
3、对于新手来说,很难在短时间内上手
4、读写时需要占用较大的内容,当数据量大时容器发生OOM
EasyExcel实现excel导出:
try {//设置头居中WriteCellStyle headWriteCellStyle = new WriteCellStyle();headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);//设置内容居中WriteCellStyle contentWriteCellStyle = new WriteCellStyle();contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");String fileName = URLEncoder.encode("员工表信息", "UTF-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");EasyExcel.write(response.getOutputStream(), BasicSysUserExcelData.class).autoCloseStream(Boolean.FALSE).registerWriteHandler(horizontalCellStyleStrategy).sheet("员工表信息").doWrite(exportList);} catch (Exception e) {response.reset();response.setContentType("application/json");response.setCharacterEncoding("utf-8");System.out.println("导出失败");}
导出对象:
@Data@HeadRowHeight(20)@ContentRowHeight(15)@ColumnWidth(20)@ContentFontStyle(fontHeightInPoints = (short) 12)public class BasicSysUserExcelData {@ExcelProperty(value = "部门名称")private String deptName;@ExcelProperty(value = "部门编码")private Integer deptId;@ExcelProperty(value = "员工姓名")private String actualName;@ExcelProperty(value = "手机号")private String phone;@ExcelProperty(value = "邮箱")private String mail;@ExcelProperty(value = "创建时间")private String createTime;}
更多参考:https://alibaba-easyexcel.github.io/