EasyExcel导入导出案例实现
时间: 2023-10-13 13:06:08 浏览: 108
EasyExcel 是一个基于 Java 的简单、省内存的操作 Excel 的开源项目,支持读取、写入各种格式的 Excel 文件,并且具有高效、易用、可扩展等特点。下面是一个 EasyExcel 导入导出案例实现。
1. 导入Excel文件
我们假设要导入一个 Excel 文件,包含姓名、年龄、地址三列数据,其中第一行为表头,从第二行开始是实际数据。
首先,我们需要定义一个实体类,用于保存 Excel 中的每一行数据:
```
public class Person {
private String name;
private int age;
private String address;
// 省略getters和setters
}
```
然后,我们可以使用 EasyExcel 提供的 `@ExcelProperty` 注解将 Excel 中的每一列映射到实体类的属性上:
```
public class Person {
@ExcelProperty(index = 0)
private String name;
@ExcelProperty(index = 1)
private int age;
@ExcelProperty(index = 2)
private String address;
// 省略getters和setters
}
```
接下来,我们需要定义一个监听器类,用于读取 Excel 文件并将数据转换成实体类:
```
public class PersonListener extends AnalysisEventListener<Person> {
private List<Person> dataList = new ArrayList<>();
@Override
public void invoke(Person person, AnalysisContext analysisContext) {
dataList.add(person);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 数据读取完毕后的操作
}
public List<Person> getDataList() {
return dataList;
}
}
```
最后,我们可以使用 EasyExcel 提供的 `EasyExcel.read()` 方法来读取 Excel 文件:
```
String fileName = "person.xlsx";
InputStream inputStream = new FileInputStream(fileName);
PersonListener personListener = new PersonListener();
EasyExcel.read(inputStream, Person.class, personListener).sheet().doRead();
List<Person> dataList = personListener.getDataList();
```
2. 导出Excel文件
我们假设要导出一个 Excel 文件,包含姓名、年龄、地址三列数据,其中第一行为表头,从第二行开始是实际数据。
首先,我们需要定义一个列表,保存需要导出的数据:
```
List<Person> dataList = new ArrayList<>();
dataList.add(new Person("张三", 25, "上海"));
dataList.add(new Person("李四", 30, "北京"));
dataList.add(new Person("王五", 35, "广州"));
```
然后,我们可以使用 EasyExcel 提供的 `@ExcelProperty` 注解将实体类的属性映射到 Excel 中的每一列:
```
public class Person {
@ExcelProperty(value = "姓名", index = 0)
private String name;
@ExcelProperty(value = "年龄", index = 1)
private int age;
@ExcelProperty(value = "地址", index = 2)
private String address;
// 省略getters和setters
}
```
接下来,我们需要定义一个写出器,用于将数据写入 Excel 文件:
```
public class PersonWriter {
public static void write(String fileName, List<Person> dataList) throws IOException {
OutputStream outputStream = new FileOutputStream(fileName);
ExcelWriter excelWriter = EasyExcel.write(outputStream, Person.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
excelWriter.write(dataList, writeSheet);
excelWriter.finish();
}
}
```
最后,我们可以调用 `PersonWriter.write()` 方法将数据写入 Excel 文件:
```
String fileName = "person.xlsx";
PersonWriter.write(fileName, dataList);
```
阅读全文