天天看点

EasyExcel使用

Java 领域解析、生成 Excel 比较有名的框架有 Apache poi、jxl 等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会 OOM 或者 JVM 频繁的 FULL GC。

EasyExcel 是阿里巴巴开源的一个 excel 处理框架,以使用简单、节省内存著称。 EasyExcel 能大大减少占用内存的主要原因是在解析 Excel 时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。

EasyExcel 采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)。

简单地理解:可以方便、快速的读取、写入 execl 内容。

【官方文档地址:】 https://alibaba-easyexcel.github.io/index.html https://www.yuque.com/easyexcel

数据导入:减轻录入工作量

数据导出:统计信息归档

数据传输:异构系统之间数据传输

EasyExcel优势:

注解式自定义操作。 输入输出简单,提供输入输出过程的接口 支持一定程度的单元格合并等灵活化操作

@ExcelProperty:指定当前字段对应 excel 中的那一列。可以根据名字或者Index去匹配。当然也可以不写,默认第一个字段就是index=0,以此类推。千万注意,要么全部不写,要么全部用index,要么全部用名字去匹配。千万别三个混着用,除非你非常了解源代码中三个混着用怎么去排序的。

@ExcelIgnore:默认所有字段都会和excel去匹配,加了这个注解会忽略该字段

@DateTimeFormat:日期转换,用 String 去接收 excel 日期格式的数据会调用这个注解。里面的 value 参照 java.text.SimpleDateFormat

@NumberFormat:数字转换,用 String 去接收 excel 数字格式的数据会调用这个注解。里面的 value 参照 java.text.DecimalFormat

@ExcelIgnoreUnannotated:默认不加 ExcelProperty 的注解的都会参与读写,加了不会参与

@ExcelProperty注解也可以用index进行索引设置表头顺序

创建Controller,访问接口下载导出Excel

导出结果

EasyExcel使用