使用EasyExcel 读取excel数据并转换成对象
时间: 2024-02-24 22:55:16 浏览: 117
EasyExcel是一个基于注解、无依赖、低内存占用的Java读写Excel的开源项目。它可以非常方便地读取Excel文件中的数据,并将其转换为Java对象。下面是一个示例代码,演示了如何使用EasyExcel读取Excel文件并将其转换为Java对象:
```java
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.excel.read.listener.ReadListener;
import java.util.ArrayList;
import java.util.List;
public class ExcelToObjectConverter {
public static void main(String[] args) {
String fileName = "path/to/excel/file.xlsx";
List<MyObject> objects = new ArrayList<MyObject>();
ReadListener<MyObject> listener = new ReadListener<MyObject>() {
@Override
public void onException(Exception exception) {
exception.printStackTrace();
}
@Override
public void onReadError(Exception exception) {
exception.printStackTrace();
}
@Override
public void onAllSheetFinish() {
}
@Override
public void onSheetFinish(int sheetIndex) {
}
@Override
public void onReadFinish() {
}
@Override
public void onRowRead(List<MyObject> rowData, int rowIndex) {
objects.addAll(rowData);
}
};
ExcelReaderBuilder readerBuilder = EasyExcel.read(fileName, MyObject.class, listener);
Sheet sheet = new Sheet(1, 1, MyObject.class);
readerBuilder.sheet(sheet).doRead();
// Do something with the objects...
}
public static class MyObject {
@ExcelProperty(index = 0)
private String property1;
@ExcelProperty(index = 1)
private double property2;
@ExcelProperty(index = 2)
private Date property3;
// Getters and setters...
}
}
```
在这个示例中,我们首先定义了一个MyObject类,并使用@ExcelProperty注解将Excel文件中的列与Java属性进行映射。然后,我们创建一个ReadListener对象,用于处理读取Excel文件中的数据。在onRowRead方法中,我们将读取到的Java对象添加到一个列表中。最后,我们使用EasyExcel读取Excel文件,并将其转换为Java对象。读取完成后,我们可以对生成的Java对象进行处理。
需要注意的是,EasyExcel默认会将Excel文件中的所有数据读取到内存中,因此在读取大文件时可能会出现内存占用过高的问题。如果需要处理大文件,可以使用EasyExcel的分段读取功能,将文件拆分成多个小文件进行读取。
阅读全文