easyexcel导入时做数据格式校验
时间: 2023-10-25 09:13:16 浏览: 193
easyexcel+validation excel导入导出下载
EasyExcel 是一个非常方便的 Java Excel 工具,可以用于快速读取和写入 Excel 文件。在导入 Excel 数据时,数据格式校验是很重要的一步,可以避免因为数据格式问题导致的程序异常。下面是一个简单的示例,演示如何使用 EasyExcel 进行数据格式校验:
1. 定义数据模型类,例如:
```java
public class User {
@ExcelProperty(value = "姓名", index = 0)
@NotNull(message = "姓名不能为空")
private String name;
@ExcelProperty(value = "年龄", index = 1)
@Min(value = 18, message = "年龄必须大于等于18")
private Integer age;
// 省略其他属性和方法
}
```
在上面的代码中,使用了 Java Bean Validation 的注解来对数据进行校验。例如,@NotNull 注解表示该字段不能为空,@Min 注解表示该字段必须大于等于指定的值。
2. 在读取 Excel 文件时,使用 EasyExcel 的 ReadListener 实现类来进行数据校验,例如:
```java
public class UserExcelListener extends AnalysisEventListener<User> {
private List<User> userList = new ArrayList<>();
@Override
public void invoke(User user, AnalysisContext context) {
// 数据校验
Set<ConstraintViolation<User>> violations = Validation.buildDefaultValidatorFactory().getValidator().validate(user);
if (!violations.isEmpty()) {
StringBuilder sb = new StringBuilder();
for (ConstraintViolation<User> violation : violations) {
sb.append(violation.getMessage()).append(";");
}
throw new RuntimeException("第 " + context.readRowHolder().getRowIndex() + " 行数据校验失败:" + sb.toString());
}
// 添加到列表中
userList.add(user);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 处理完毕后的操作(例如将数据保存到数据库)
}
public List<User> getUserList() {
return userList;
}
}
```
在上面的代码中,使用了 Java Bean Validation 的 Validator 来进行数据校验。如果校验失败,抛出异常并提示错误信息。如果校验成功,将数据添加到列表中。
3. 在调用 EasyExcel 的 read() 方法时,传入上面定义的 ReadListener 实现类即可,例如:
```java
public void importUsers(InputStream inputStream) {
try {
ExcelReader excelReader = EasyExcel.read(inputStream, User.class, new UserExcelListener()).build();
ReadSheet readSheet = EasyExcel.readSheet(0).build();
excelReader.read(readSheet);
excelReader.finish();
} catch (Exception e) {
e.printStackTrace();
// 处理异常
}
}
```
在上面的代码中,调用了 EasyExcel 的 read() 方法来读取 Excel 文件,并传入了数据模型类和 ReadListener 实现类。然后调用 readSheet() 方法来指定要读取的 Sheet,最后调用 finish() 方法来完成读取操作。如果出现异常,需要进行异常处理。
阅读全文