快速上手EasyExcel
EasyExcel简介
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存。
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel文件。
开始
导入依赖
在pom文件中加入依赖
1
2
3
4
5
6<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
创建实体类
创建实体类并添加注解
1
2
3
4
5
6
7
8
9
10
11
12
13package com.xlh.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
public class UserData {
private int uid;
private String username;
}数据写操作
将数据写入到excel文件中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21package 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类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23package 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> {
public void invoke(UserData userData, AnalysisContext analysisContext) {
System.out.println(userData);
}
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头信息:"+headMap);
}
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("finished!");
}
}测试读取
1
2
3
4
5
6
7
8
9
10
11
12package 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();
}
}结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xlhの博客!