EasyExcel读取Excel成实体类并校验字段
时间: 2023-08-21 22:05:46 浏览: 210
读取Excel并转化成对象
可以使用阿里巴巴的 EasyExcel 库来读取 Excel 并将其转换为实体类对象,同时还可以对字段进行校验。
以下是一个简单的示例代码:
```java
// 定义实体类
public class User {
@NotEmpty(message = "姓名不能为空")
private String name;
@NotNull(message = "年龄不能为空")
@Min(value = 18, message = "年龄必须大于等于18岁")
private Integer age;
@Email(message = "邮箱格式不正确")
private String email;
// 省略 getter 和 setter 方法
}
// 读取 Excel 并转换为实体类并校验字段
public List<User> readExcel(File file) throws Exception {
List<User> userList = new ArrayList<>();
ExcelReader reader = EasyExcel.read(file).build();
try {
Sheet sheet = reader.getSheets().get(0);
// 定义读取监听器
reader.read(sheet.getSheetNo()).head(User.class).registerReadListener(new AnalysisEventListener<User>() {
@Override
public void invoke(User user, AnalysisContext analysisContext) {
// 校验字段
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<User>> violations = validator.validate(user);
if (!violations.isEmpty()) {
throw new RuntimeException(violations.iterator().next().getMessage());
}
userList.add(user);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 读取完成后的操作
}
}).sheet().doRead();
} finally {
reader.finish();
}
return userList;
}
```
在上述代码中,我们首先定义了一个 `User` 实体类,并且在字段上使用了校验注解。然后使用 EasyExcel 库读取 Excel 文件,并在读取监听器中将每行数据转换为 `User` 对象,并对其进行字段校验。如果校验不通过,则直接抛出异常。最后将转换后的 `User` 对象加入到 `userList` 中并返回。
阅读全文