作者:冷冷gg 链接:https://juejin.im/post/5e83f12ce51d4546c82d8b0f
EasyExcel
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 64M内存1分钟内读取75M(46W行25列)的Excel,当然还有急速模式能更快,但是内存占用会在100M多一点
![9b62fd9217c75d61ef143500fb9c3f74.png](https://img-blog.csdnimg.cn/img_convert/9b62fd9217c75d61ef143500fb9c3f74.png)
spring boot stater依赖
- 方便在 web 环境下使用 easyexcel ,已上传至 maven 仓库
com.pig4cloud.excel excel-spring-boot-starter 0.0.2
使用方法
只需要在 Controller 层返回 List 并增加 @ResponseExcel注解即可
@Documented@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface ResponseExcel {String name() default "";ExcelTypeEnum suffix() default ExcelTypeEnum.XLSX;String password() default "";String[] sheet() default {};boolean inMemory() default false;String template() default "";String[] include() default {};String[] exclude() default {};Class extends WriteHandler>[] writeHandler() default {};Class extends Converter>[] converter() default {};}
基础用法
- 返回单 sheet, 全部字段导出
@ResponseExcel(name = "lengleng", sheet = "demoList")@GetMapping("/e1")public List e1() { List dataList = new ArrayList<>(); for (int i = 0; i < 100; i++) { DemoData data = new DemoData(); data.setUsername("tr1" + i); data.setPassword("tr2" + i); dataList.add(data); } return dataList;}// 实体对象@Datapublic class DemoData {private String username;private String password;}
![95f232efda9315f7ee8117d30add51b4.png](https://img-blog.csdnimg.cn/img_convert/95f232efda9315f7ee8117d30add51b4.png)
- 自定义字段属性
@Datapublic class DemoData { @ColumnWidth(50) // 定义宽度@ExcelProperty("用户名") // 定义列名称 @ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)private String username;@ExcelProperty("密码")private String password;}
![7e7b7dfadd78f47547b56de0d2d0e60c.png](https://img-blog.csdnimg.cn/img_convert/7e7b7dfadd78f47547b56de0d2d0e60c.png)
- 忽略部分字段
@Datapublic class DemoData { @ColumnWidth(50) // 定义宽度@ExcelProperty("用户名") // 定义列名称 @ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)private String username;@ExcelProperty("密码")private String password;
![3fc330290f05effcf1cb4ec9d40cb7bb.png](https://img-blog.csdnimg.cn/img_convert/3fc330290f05effcf1cb4ec9d40cb7bb.png)
导出多sheet
@ResponseExcel(name = "lengleng", sheet = {"第一个sheet","第二个sheet"})@GetMapping("/e1")public List> e1() { List> lists = new ArrayList<>(); lists.add(list()); lists.add(list()); return lists;}
![80f93b7a7034a2d2103615a7571ce81a.png](https://img-blog.csdnimg.cn/img_convert/80f93b7a7034a2d2103615a7571ce81a.png)
设置导出加密码
@ResponseExcel(name = "lengleng", sheet = "sheetName",password = "lengleng")@GetMapping("/e1")public List> e1() {List> lists = new ArrayList<>();lists.add(list());lists.add(list());return lists;}
![24cfb40dbce1ef19339fff7e6244f506.png](https://img-blog.csdnimg.cn/img_convert/24cfb40dbce1ef19339fff7e6244f506.png)
高级用法模板导出
@ResponseExcel(name = "模板测试excel", sheet = "sheetName",template = "example.xlsx")@GetMapping("/e1")public List e1() { return list();}
感悟
从正式成为一名程序员的那天起,注定要进行没有止境的学习,想要进阶高级或者专家,就要坚持每天都高效的学习,不要给自己的懒惰找借口,“什么我也想学习可是又没有资源”,这次我给你整理好了,我看你还有啥理由!私信或者回复【666】就给你
![ae5719121ebacb472f2e63ae9b25c917.png](https://img-blog.csdnimg.cn/img_convert/ae5719121ebacb472f2e63ae9b25c917.png)