EasyExcel是Alibaba集团开源的EasyExcel技术,该技术是针对Apache POI技术的封装和优化,主要解决了POI技术的耗内存问题,并且提供了较好的API使用。不需要大量的代码就可以实现excel的操作功能。
1.EasyExcel的配置
首先引入依赖,具体如下:
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.17</version></dependency><dependency><groupId>org.apche.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency>
2. 向excel写入数据
EasyExcel.write(FilePath,xxxEntity.class).excelType(ExcelTypeEnum.XLS/XLSX).sheet("aaa").dowrite(xxxEntity数据)
FilePath表示Excel的路径,aaa表示该ecxel一张名为aaa的表,excelType表示excel文件是xls还是xlsx,向这张表中写入类型为xxxEntity的数据(xxxEntity数据可为单个xxxEntity也为xxxEntity数组),表头为xxxEntity对象的各个属性。
如果希望表头是自定义的,需要在对应的xxxEntity实体对象类中的属性上方加入@ExcelProperty("自定义名称")注解。
3. 读取excel文件数据
EasyExcel读取excel文件时首先需要创建监听器类,其通过继承AnalysisEventListener类实现。具体代码如下:
public class xxxEntityListener extends AnalysisEventListener<xxxEntity>{//解析每一条数据时调用@Overridepublic void invoke(xxxEntity data,AnalysisContext context){log.info("数据内容:",data);}//excel所有数据解析完成时调用@Overridepublic void doAfterAllAnalysed(AnalysisContext context){log.info("所有数据解析完成");}
}
然后通过下面的代码读取excel文件:
EasyExcel.read(FilePath/InputStream,xxxEntity.class,new xxxEntityListener()).sheet().doRead();
excel文件读取过程中,除了可通过FilePath从excel文件中读取数据,还可以直接读取数据流数据。