Spring 使用EasyExcel 写入数据库中的数据并返回到前端进行下载到本地
时间: 2024-02-05 21:14:01 浏览: 78
使用EasyExcel可以将Excel中的数据读取出来,并且方便地写入到数据库中。具体实现步骤如下:
1.在pom.xml中添加EasyExcel的依赖
```
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.7</version>
</dependency>
```
2.编写实体类,用于映射Excel中的数据
```
public class User {
private String name;
private Integer age;
// getter和setter方法省略
}
```
3.编写Controller方法,用于处理上传Excel文件并将数据写入到数据库中
```
@PostMapping("/upload")
public void upload(@RequestParam("file") MultipartFile file) {
try {
InputStream inputStream = file.getInputStream();
EasyExcel.read(inputStream, User.class, new UserListener(userService)).sheet().doRead();
} catch (IOException e) {
e.printStackTrace();
}
}
// UserListener类用于处理读取到的Excel数据
public class UserListener extends AnalysisEventListener<User> {
private UserService userService;
public UserListener(UserService userService) {
this.userService = userService;
}
private List<User> userList = new ArrayList<>();
@Override
public void invoke(User user, AnalysisContext context) {
userList.add(user);
if (userList.size() >= 5) { // 每5条记录批量插入数据库
userService.batchInsert(userList);
userList.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
userService.batchInsert(userList);
}
}
```
4.将写入数据库中的数据返回到前端进行下载到本地
```
@GetMapping("/download")
public void download(HttpServletResponse response) {
List<User> userList = userService.getAllUsers();
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = "users.xlsx";
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
EasyExcel.write(response.getOutputStream(), User.class).sheet("用户信息").doWrite(userList);
} catch (IOException e) {
e.printStackTrace();
}
}
```
以上就是使用EasyExcel进行Excel数据读写和下载的基本流程,可以根据实际需求进行修改和扩展。
阅读全文