使用EasyExcel实现excel的多个字段校验,校验失败抛出异常,成功则批量插入数据库
时间: 2024-03-18 18:42:18 浏览: 65
好的,让我解释一下你的问题。
首先,EasyExcel是一个简单易用的JavaExcel工具,可以帮助我们读写Excel文件。它具有高效、稳定和可扩展性等特点。
其次,你的问题是如何使用EasyExcel实现Excel的多个字段校验,并在校验失败时抛出异常,同时在校验成功时批量插入数据库。
下面是一个实现的思路:
1. 定义一个数据模型类,用于存储Excel中的数据。
2. 使用EasyExcel读取Excel文件,并将数据读取到数据模型对象中。
3. 对数据模型对象进行多个字段的校验,如果校验失败则抛出异常,如果校验成功则将数据模型对象添加到一个列表中。
4. 将列表中的数据批量插入到数据库中。
下面是一个示例代码:
```
public class ExcelData {
private String name;
private Integer age;
private String email;
// getter和setter方法省略
}
public class ExcelListener extends AnalysisEventListener<ExcelData> {
List<ExcelData> list = new ArrayList<>();
@Override
public void invoke(ExcelData data, AnalysisContext context) {
// 对数据进行校验,如果校验失败则抛出异常
if (StringUtils.isBlank(data.getName())) {
throw new RuntimeException("姓名不能为空");
}
if (data.getAge() == null || data.getAge() < 0 || data.getAge() > 120) {
throw new RuntimeException("年龄不合法");
}
if (StringUtils.isBlank(data.getEmail()) || !data.getEmail().contains("@")) {
throw new RuntimeException("邮箱格式不正确");
}
// 校验成功则将数据添加到列表中
list.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 批量插入数据到数据库中
insertIntoDatabase(list);
}
private void insertIntoDatabase(List<ExcelData> list) {
// TODO: 批量插入数据到数据库中
}
}
public class ExcelTest {
public static void main(String[] args) {
String fileName = "test.xlsx";
ExcelListener listener = new ExcelListener();
EasyExcel.read(fileName, ExcelData.class, listener).sheet().doRead();
}
}
```
在这个示例中,我们定义了一个ExcelData类来存储Excel中的数据。然后,我们使用EasyExcel读取Excel文件,并将数据读取到ExcelData对象中。在ExcelListener类的invoke方法中,我们对ExcelData对象进行多个字段的校验,如果校验失败则抛出异常,如果校验成功则将数据添加到一个列表中。最后,在doAfterAllAnalysed方法中,我们将列表中的数据批量插入到数据库中。
希望这个示例能够帮助到你。
阅读全文