easyexcel 读取数据时,按列将一行行数据读取
时间: 2024-10-15 09:14:30 浏览: 23
EasyExcel 是阿里巴巴开源的一个 Excel 阅读库,它提供了一种简单的方式来读取 Excel 文件并按照指定的方式处理数据。当你想要按列读取数据时,可以使用 EasyExcel 的 `sheet()` 或 `doRead()` 方法配合事件驱动模型。
首先,你需要创建一个事件处理器(EventProcessor),这个处理器会在读取每一行数据时触发。例如:
```java
import com.alibaba.excel.event.RowEvent;
import com.alibaba.excel.read.metadata.ReadSheet;
@ReadSheet(name = "Sheet1") // 指定需要读取的工作表名称
public class DataRowListener extends EventListener<RowEvent> {
private List<Map<String, Object>> rowDataList = new ArrayList<>();
@Override
public void doAfterAllAnalysed(RowEvent rowEvent) {
// 这里可以在所有数据读取完成后处理数据
}
@Override
public void invoke(RowEvent rowEvent) {
Map<String, Object> rowData = new HashMap<>();
rowData.put("column1", rowEvent.getRowData().get(0)); // 获取第1列数据
rowData.put("column2", rowEvent.getRowData().get(1)); // 获取第2列数据
// ...其他列的获取
rowDataList.add(rowData);
}
}
```
然后,在主程序中注册这个监听器,并开始读取过程:
```java
// 创建一个 EasyExcel Reader
Reader reader = ExcelReader.builder()
.eventFactory(new DefaultEventFactory())
.register(event -> new DataRowListener()) // 注册事件处理器
.build();
reader.read(fileInputStream); // fileInputStream 是包含 Excel 文件的 InputStream
// 现在你可以从 rowDataList 中获取按列读取的数据
for (Map<String, Object> rowData : rowDataList) {
System.out.println(rowData);
}
```
阅读全文