easyexcel 实现导入数据校验 通用
时间: 2023-07-24 16:10:53 浏览: 130
EasyExcel可以通过实现`AnalysisEventListener`接口来实现数据校验。下面是一个通用的导入数据校验的示例:
```java
public class ExcelListener extends AnalysisEventListener {
private List<Object> dataList = new ArrayList<>();
@Override
public void invoke(Object object, AnalysisContext context) {
// 读取到一条数据时的回调方法
// 这里可以对数据进行校验
if (object instanceof YourDataModel) {
YourDataModel data = (YourDataModel) object;
if (data.getName() == null || data.getName().equals("")) {
// 对数据进行校验,如果数据不合法,可以通过throw Exception的方式抛出异常,然后在onException方法中处理
throw new RuntimeException("姓名不能为空");
}
dataList.add(object);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 读取完所有数据后的回调方法
// 这里可以对读取到的所有数据进行统一处理
}
@Override
public void onException(Exception exception, AnalysisContext context) throws Exception {
// 数据校验失败时的回调方法
// 这里可以对校验失败的数据进行处理,例如将其记录到日志中
}
}
```
然后,在你的代码中,可以通过如下方式读取Excel文件并进行数据校验:
```java
File file = new File("your_file_path");
ExcelReader excelReader = new ExcelReader(new FileInputStream(file), ExcelTypeEnum.XLSX, null, new ExcelListener());
excelReader.read(new Sheet(1, 1, YourDataModel.class));
// 这里可以对读取到的所有数据进行统一处理,例如保存到数据库中
```
在上述代码中,`YourDataModel`是你自己定义的数据模型,`ExcelListener`是实现了数据校验的监听器。在`invoke`方法中,我们可以对读取到的数据进行校验,如果数据不合法,可以通过抛出异常的方式将其标记为校验失败。在`doAfterAllAnalysed`方法中,我们可以对所有数据进行统一处理,例如将其保存到数据库中。在`onException`方法中,我们可以对校验失败的数据进行处理,例如将其记录到日志中。