easyexcel读取指定列的数据
时间: 2023-12-27 22:46:49 浏览: 352
使用EasyExcel可以方便地读取指定列的数据。以下是一个示例代码:
```java
// 导入需要的类
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.excel.read.builder.ExcelReaderSheetBuilder;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.ReadSheet;
import java.util.ArrayList;
import java.util.List;
// 定义一个JavaBean,用于存储Excel中的数据
class MyData {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private int age;
// getter 和 setter 方法省略
}
// 定义一个监听器,用于读取指定列的数据
class MyReadListener extends ReadListener<MyData> {
private List<String> columns; // 需要读取的列名
private List<MyData> data; // 存储读取到的数据
public MyReadListener(List<String> columns) {
this.columns = columns;
this.data = new ArrayList<>();
}
// 读取每一行数据时调用
@Override
public void onReadRowData(MyData rowData) {
MyData newData = new MyData();
for (String column : columns) {
switch (column) {
case "姓名":
newData.setName(rowData.getName());
break;
case "年龄":
newData.setAge(rowData.getAge());
break;
// 如果需要读取更多的列,可以在这里添加相应的 case 语句
}
}
data.add(newData);
}
// 读取完成时调用
@Override
public void onReadFinish() {
System.out.println(data);
}
}
// 主函数
public class Main {
public static void main(String[] args) {
// 读取 Excel 文件的路径
String fileName = "test.xlsx";
// 需要读取的列名
List<String> columns = List.of("姓名", "年龄");
// 创建 ExcelReaderBuilder 对象
ExcelReaderBuilder readerBuilder = EasyExcel.read(fileName, MyData.class);
// 创建 ExcelReaderSheetBuilder 对象
ExcelReaderSheetBuilder sheetBuilder = readerBuilder.sheet();
// 设置监听器,读取指定列的数据
MyReadListener listener = new MyReadListener(columns);
ReadSheet readSheet = sheetBuilder.registerReadListener(listener).build();
// 开始读取 Excel 文件
readerBuilder.read(readSheet);
}
}
```
在上面的示例代码中,我们定义了一个 `MyData` 类,用于存储 Excel 中的数据。然后我们定义了一个 `MyReadListener` 类,用于监听读取 Excel 文件的过程,并且只读取指定的列。最后,在主函数中我们创建了一个 `ExcelReaderSheetBuilder` 对象,并且设置了监听器,读取指定列的数据。
阅读全文