EasyExcel简介
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存。
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel文件。
开始
导入依赖
-
在pom文件中加入依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency>
创建实体类
-
创建实体类并添加注解
package com.xlh.EasyExcel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class UserData { @ExcelProperty(value = "用户编号",index = 0) private int uid; @ExcelProperty(value = "用户名称",index = 1) private String username; }
数据写操作
-
将数据写入到excel文件中
package com.xlh.EasyExcel; import com.alibaba.excel.EasyExcel; import java.util.ArrayList; import java.util.List; public class testWrite { public static void main(String[] args) { //构造数据集合 List<UserData> userData=new ArrayList<>(); for(int i=0;i<100;i++){ UserData userData1=new UserData(); userData1.setUid(i); userData1.setUsername("xlh"+i); userData.add(userData1); } //设置excel文件路径及名称 String fileName="D:\\01.xlsx"; //进行写操作 EasyExcel.write(fileName,UserData.class).sheet("用户列表").doWrite(userData); } }
-
运行结果
数据读操作
-
将excel数据读出
-
首先继承AnalysisEventListener类
package com.xlh.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import java.util.Map; public class ExcelListener extends AnalysisEventListener<UserData> { @Override public void invoke(UserData userData, AnalysisContext analysisContext) { System.out.println(userData); } @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { System.out.println("表头信息:"+headMap); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { System.out.println("finished!"); } }
-
测试读取
package com.xlh.EasyExcel; import com.alibaba.excel.EasyExcel; public class TestListener { public static void main(String[] args) { //excel的路径 String filename="D:\\01.xlsx"; //读取 EasyExcel.read(filename,UserData.class,new ExcelListener()).sheet().doRead(); } }
-
结果
-