springboot+vue+easyexcel 实现上传excel文件并且 数据传到数据库里
时间: 2023-06-16 16:03:31 浏览: 183
实现上传excel文件并将数据传输到数据库的步骤如下:
1. 前端实现文件上传功能:使用Vue.js开发前端页面,使用element-ui组件库实现文件上传组件。具体实现可以参考element-ui的文档和示例代码。
2. 后端实现文件上传功能:使用Spring Boot框架开发后端接口,使用Apache POI或者EasyExcel解析Excel文件并将数据存入数据库。具体实现可以参考Spring Boot官方文档和EasyExcel的官方文档。
3. 前后端交互:前端页面通过Ajax请求后端接口上传文件,并将文件数据以form-data格式传输到后端。后端接口接收到请求后,解析Excel文件并将数据存入数据库,最后返回上传结果给前端。
下面是一个简单的示例代码,仅供参考:
前端代码:
```vue
<template>
<el-upload
class="upload-demo"
drag
action="/api/upload"
:before-upload="beforeUpload"
:on-success="onSuccess"
:on-error="onError"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将 Excel 文件拖到此处,或点击上传</div>
<div class="el-upload__tip" slot="tip">仅支持 .xls 和 .xlsx 格式的 Excel 文件</div>
</el-upload>
</template>
<script>
export default {
methods: {
beforeUpload(file) {
const isExcel =
file.type === 'application/vnd.ms-excel' ||
file.type ===
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
if (!isExcel) {
this.$message.error('只能上传 .xls 或 .xlsx 格式的 Excel 文件');
}
return isExcel;
},
onSuccess(response) {
if (response.code === 0) {
this.$message.success('上传成功');
} else {
this.$message.error(`上传失败: ${response.msg}`);
}
},
onError(error) {
this.$message.error(`上传失败: ${error.message}`);
},
},
};
</script>
```
后端代码:
```java
@RestController
@RequestMapping("/api")
public class UploadController {
@PostMapping("/upload")
public Result<?> upload(@RequestParam("file") MultipartFile file) throws IOException {
if (file.isEmpty()) {
return Result.error("上传失败: 文件为空");
}
String filename = file.getOriginalFilename();
String ext = FilenameUtils.getExtension(filename);
if (!"xls".equals(ext) && !"xlsx".equals(ext)) {
return Result.error("上传失败: 仅支持 .xls 或 .xlsx 格式的 Excel 文件");
}
List<User> userList = new ArrayList<>();
Workbook workbook = WorkbookFactory.create(file.getInputStream());
Sheet sheet = workbook.getSheetAt(0);
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
if (row == null) {
continue;
}
User user = new User();
user.setName(row.getCell(0).getStringCellValue());
user.setAge((int) row.getCell(1).getNumericCellValue());
user.setGender(row.getCell(2).getStringCellValue());
userList.add(user);
}
userService.saveAll(userList);
return Result.ok();
}
}
```
上述代码中,`UploadController`是一个Spring MVC的控制器类,用于处理上传文件的请求。`upload`方法接收一个`MultipartFile`类型的参数,即前端上传的文件数据。在方法中,我们首先判断文件是否为空,然后根据文件的扩展名判断是否为Excel文件。如果不是Excel文件,则返回上传失败的结果。否则,我们使用Apache POI库解析Excel文件,将数据转换成`User`对象并存入数据库。最后,返回上传成功的结果。
需要注意的是,上述代码中的`User`对象是一个自定义的Java类,用于存储Excel中的数据。在实际开发中,需要根据实际情况定义相应的Java类来存储数据。同时,还需要在Spring Boot的配置文件中配置数据库连接信息、数据源等相关信息。
阅读全文