easyexcel读取多个sheet返回sheet名称数据对应关系
时间: 2023-09-14 09:09:34 浏览: 145
多个sheet的Excel导入
可以使用EasyExcel的工具类`ExcelReader`来读取多个sheet,并通过`SheetNameConverter`接口来获取sheet名称和数据对应关系。具体的步骤如下:
1. 创建一个`ExcelReader`对象,传入要读取的Excel文件路径和读取数据的回调函数。
```
ExcelReader excelReader = EasyExcel.read(filepath, new MyDataListener()).build();
```
2. 实现`SheetNameConverter`接口,并在`MyDataListener`中实例化该接口的对象,用于获取sheet名称和数据对应关系。
```
public class MySheetNameConverter implements SheetNameConverter {
private Map<String, String> sheetNameMap = new HashMap<>();
@Override
public String convert(int sheetIndex, String sheetName) {
sheetNameMap.put(sheetName, "Sheet" + sheetIndex);
return sheetName;
}
public Map<String, String> getSheetNameMap() {
return sheetNameMap;
}
}
```
3. 在`MyDataListener`中重写`onSheet()`方法,将`SheetNameConverter`对象传入`Sheet`对象中,用于获取sheet名称和数据对应关系。
```
public class MyDataListener extends AnalysisEventListener<Object> {
private MySheetNameConverter sheetNameConverter;
public MyDataListener() {
sheetNameConverter = new MySheetNameConverter();
}
@Override
public void onSheet(int sheetNo, String sheetName) {
super.onSheet(sheetNo, sheetName);
Sheet sheet = EasyExcelFactory.readSheet(sheetNo).registerConverter(sheetNameConverter).build();
sheet.setSheetName(sheetName);
sheet.setClazz(Object.class);
EasyExcel.readSheet(sheet).headRowNumber(0).registerReadListener(this).doRead();
}
// 其他方法省略
}
```
4. 在读取完毕后,通过`MySheetNameConverter`的`getSheetNameMap()`方法获取sheet名称和数据对应关系。
```
Map<String, String> sheetNameMap = sheetNameConverter.getSheetNameMap();
```
阅读全文