如何使用easyexcel遍历读取每一个不同内容的sheet页
时间: 2023-12-10 22:40:48 浏览: 406
可以使用 EasyExcel 提供的 `Sheet` 注解以及 `SheetConverter` 工具类来实现遍历读取每一个不同内容的 sheet 页。具体步骤如下:
1. 定义一个 Java 类,用于存储读取的每一个 sheet 页的数据,该类需要使用 `Sheet` 注解指定对应的 sheet 名称。
```java
@Sheet("Sheet1")
public class Sheet1Data {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
// ... 省略其他属性和方法
}
```
2. 使用 `SheetConverter` 工具类来遍历读取每一个不同内容的 sheet 页。首先,创建一个 `ExcelReader` 对象,并指定需要读取的 Excel 文件路径和监听器类。
```java
String filePath = "test.xlsx";
ExcelReader excelReader = EasyExcel.read(filePath, Sheet1Data.class, new Sheet1DataListener()).build();
```
其中,`Sheet1DataListener` 是一个自定义的监听器类,用于处理每一个 sheet 页读取到的数据。
3. 使用 `SheetConverter` 对象来遍历读取每一个 sheet 页,将读取到的数据传递给监听器进行处理。
```java
SheetConverter sheetConverter = excelReader.getSheetConverter();
List<Sheet> sheets = sheetConverter.getAllSheets();
for (Sheet sheet : sheets) {
sheetConverter.read(sheet);
}
```
其中,`getAllSheets()` 方法用于获取所有的 sheet 页列表,`read(sheet)` 方法用于读取指定的 sheet 页并将读取到的数据传递给监听器处理。
完整的示例代码如下:
```java
public class ReadExcelTest {
public static void main(String[] args) {
String filePath = "test.xlsx";
ExcelReader excelReader = EasyExcel.read(filePath, Sheet1Data.class, new Sheet1DataListener()).build();
SheetConverter sheetConverter = excelReader.getSheetConverter();
List<Sheet> sheets = sheetConverter.getAllSheets();
for (Sheet sheet : sheets) {
sheetConverter.read(sheet);
}
excelReader.finish();
}
public static class Sheet1DataListener extends AnalysisEventListener<Sheet1Data> {
@Override
public void invoke(Sheet1Data data, AnalysisContext context) {
// 处理每一行数据
System.out.println(data.toString());
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 处理完所有数据后的操作
}
}
@Sheet("Sheet1")
public static class Sheet1Data {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Sheet1Data{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}
```
阅读全文