????????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>{
//解析每一条数据时调用
@Override
public void invoke(xxxEntity data,AnalysisContext context){
log.info("数据内容:",data);
}
//excel所有数据解析完成时调用
@Override
public void doAfterAllAnalysed(AnalysisContext context){
log.info("所有数据解析完成");
}
}
然后通过下面的代码读取excel文件:
EasyExcel.read(FilePath,xxxEntity.class,new xxxEntityListener()).sheet().doRead();