easyexcel导入导出海量数据
时间: 2023-11-09 18:02:18 浏览: 106
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目,可以轻松地导入导出海量数据。它支持多种数据源,如List、Map、JavaBean等,并且可以自定义样式、格式等。
使用EasyExcel进行导出,只需要定义好表头和数据源,然后调用相关API即可。例如:
```
// 定义表头
List<List<String>> head = new ArrayList<List<String>>();
List<String> head0 = new ArrayList<String>();
head0.add("姓名");
List<String> head1 = new ArrayList<String>();
head1.add("年龄");
head.add(head0);
head.add(head1);
// 定义数据源
List<List<Object>> data = new ArrayList<List<Object>>();
for (int i = 0; i < 1000000; i++) {
List<Object> item = new ArrayList<Object>();
item.add("张三" + i);
item.add(i);
data.add(item);
}
// 导出Excel
ExcelWriter writer = EasyExcel.write("demo.xlsx").build();
WriteSheet sheet = EasyExcel.writerSheet("Sheet1").build();
writer.write(head, sheet);
writer.write(data, sheet);
writer.finish();
```
使用EasyExcel进行导入,只需要定义好数据模型和监听器,然后调用相关API即可。例如:
```
// 定义数据模型
public class User {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
// 省略getter/setter方法
}
// 定义监听器
public class UserListener extends AnalysisEventListener<User> {
private List<User> userList = new ArrayList<User>();
@Override
public void invoke(User user, AnalysisContext context) {
userList.add(user);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 处理完所有数据后的操作
}
public List<User> getUserList() {
return userList;
}
}
// 导入Excel
ExcelReader reader = EasyExcel.read("demo.xlsx", User.class, new UserListener()).build();
ReadSheet sheet = EasyExcel.readSheet(0).build();
reader.read(sheet);
List<User> userList = ((UserListener) reader.getEventListener()).getUserList();
```
阅读全文