用EasyExcel导入excel到数据库
时间: 2024-01-15 13:05:36 浏览: 89
1. 引入EasyExcel依赖
在pom.xml文件中引入EasyExcel依赖:
```
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
```
2. 创建Excel数据实体类
根据导入的Excel文件格式,创建对应的数据实体类,例如:
```java
@Data
public class User {
@ExcelProperty(value = "用户ID", index = 0)
private Long userId;
@ExcelProperty(value = "用户名", index = 1)
private String userName;
@ExcelProperty(value = "密码", index = 2)
private String password;
@ExcelProperty(value = "性别", index = 3)
private String gender;
@ExcelProperty(value = "年龄", index = 4)
private Integer age;
@ExcelProperty(value = "邮箱", index = 5)
private String email;
@ExcelProperty(value = "手机号", index = 6)
private String phone;
}
```
其中,@ExcelProperty注解用于标记Excel表格中每列对应的属性,value属性表示列的名称,index属性表示列的索引。
3. 创建Excel导入监听器
创建一个Excel导入监听器,用于处理Excel数据的读取和插入到数据库中:
```java
public class UserExcelListener extends AnalysisEventListener<User> {
private UserService userService;
public UserExcelListener(UserService userService) {
this.userService = userService;
}
private static final int BATCH_COUNT = 100;
List<User> list = new ArrayList<>();
@Override
public void invoke(User user, AnalysisContext analysisContext) {
list.add(user);
if (list.size() >= BATCH_COUNT) {
saveData();
list.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
saveData();
}
private void saveData() {
userService.saveBatch(list);
}
}
```
在invoke方法中,将读取到的Excel数据添加到list中,并设置一个批量插入的阈值BATCH_COUNT,当list中数据达到BATCH_COUNT时,就将数据批量插入到数据库中。
4. 使用EasyExcel读取Excel数据并插入到数据库中
在Controller中编写导入Excel的处理方法:
```java
@PostMapping("/import")
public String importUsers(MultipartFile file) throws IOException {
EasyExcel.read(file.getInputStream(), User.class, new UserExcelListener(userService)).sheet().doRead();
return "redirect:/users";
}
```
通过EasyExcel.read方法读取Excel文件,指定数据实体类和导入监听器,然后调用sheet().doRead()方法开始读取Excel数据。
注:需要注意的是,EasyExcel读取Excel文件时,会把空行也读取进来,因此在插入到数据库之前需要判断数据是否为空。
5. 测试导入功能
启动应用程序,访问导入页面,上传Excel文件,即可将Excel数据导入到数据库中。
参考文献:
https://www.yiibai.com/easyexcel/easyexcel_import.html
阅读全文