springboot采用easyexcel实现导入并存到数据库功能
时间: 2024-06-08 16:12:18 浏览: 150
使用 EasyExcel 实现导入并存储到数据库的功能,可以参考以下步骤:
1. 添加 EasyExcel 依赖
在 pom.xml 文件中添加 EasyExcel 依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.10</version>
</dependency>
```
2. 创建 Excel 实体类
创建一个 Excel 实体类,用于存储 Excel 中的数据。Excel 实体类的属性名称应该与 Excel 中的列名一一对应。
```java
@Data
public class User {
@ExcelProperty("ID")
private Long id;
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
}
```
3. 创建 Excel 读取监听器
创建一个 Excel 读取监听器,用于处理 Excel 中的每一行数据。在监听器中,可以将读取到的数据转换成实体对象,并将实体对象存储到数据库中。
```java
public class UserExcelListener extends AnalysisEventListener<User> {
private UserService userService;
public UserExcelListener(UserService userService) {
this.userService = userService;
}
@Override
public void invoke(User user, AnalysisContext context) {
userService.addUser(user);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// Do nothing
}
}
```
4. 创建上传 Excel 的接口
创建一个上传 Excel 的接口,用于接收客户端上传的 Excel 文件,并使用 EasyExcel 解析文件。
```java
@RestController
@RequestMapping("/api")
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
EasyExcel.read(file.getInputStream(), User.class, new UserExcelListener(userService)).sheet().doRead();
return "上传成功";
}
}
```
在上传接口中,首先使用 EasyExcel 读取 Excel 文件,然后将读取到的数据传递给监听器进行处理。
5. 实现 UserService 接口
在 UserService 接口中实现 addUser 方法,用于将读取到的数据存储到数据库中。
```java
public interface UserService {
void addUser(User user);
}
```
示例代码:
```java
@Service
public class UserServiceImpl implements UserService {
private UserRepository userRepository;
@Autowired
public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public void addUser(User user) {
userRepository.save(user);
}
}
```
6. 配置数据库连接信息
在 application.properties 中配置数据库连接信息。
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
```
7. 运行程序并测试
启动应用程序,上传一个包含用户信息的 Excel 文件,程序会将 Excel 中的数据存储到数据库中。
参考代码:https://github.com/alibaba/easyexcel/tree/master/src/test/java/com/alibaba/easyexcel/test/demo/read
阅读全文