Springboot + Vue(若依)实现从Excel导入数据功能

      本次实现是参照若依文档将导入功能实现的,下面就让我就从前端Vue到后端Springboot实现的所有过程做详细介绍。

一、前端Vue

1.在Vue的<template></template>中需要的位置加入如下代码:框起来的部分需要修改为自己的路径,一般是模块名+业务功能名。

 <el-col :span="1.5">
  <el-button
    type="info"
    plain
    icon="el-icon-upload2"
    size="mini"
    @click="handleImport"
    v-hasPermi="['collegeManage:studentBase:import']"
  >导入</el-button>
</el-col>

2.也是在Vue中的<template></template>中需要的位置加入如下代码。该代码是数据导入的对话框

该对话框的代码是通用的,无需修改,直接粘贴使用即可。

<!-- 用户导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
  <el-upload
    ref="upload"
    :limit="1"
    accept=".xlsx, .xls"
    :headers="upload.headers"
    :action="upload.url + '?updateSupport=' + upload.updateSupport"
    :disabled="upload.isUploading"
    :on-progress="handleFileUploadProgress"
    :on-success="handleFileSuccess"
    :auto-upload="false"
    drag
  >
    <i class="el-icon-upload"></i>
    <div class="el-upload__text">将文件拖到此处,或<em>点击上传&

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现 excel 数据导入功能,需要完成以下步骤: 1. 前端页面实现文件上传功能,可以使用 vue-upload-component 组件实现。 2. 后端使用 Spring Boot 框架,导入 poi 依赖,使用 poi 解析 Excel 文件,获取数据并保存到数据库中。 下面是具体的实现步骤: 1. 前端页面 在 vue 组件中,使用 vue-upload-component 组件实现文件上传功能。具体实现代码如下: ``` <template> <div> <input type="file" ref="file" @change="handleFileChange"> <button @click.prevent="submit">上传</button> </div> </template> <script> import UploadComponent from 'vue-upload-component' export default { components: { UploadComponent }, data () { return { file: null } }, methods: { handleFileChange () { this.file = this.$refs.file.files[0] }, submit () { const formData = new FormData() formData.append('file', this.file) this.$http.post('/upload', formData) .then(res => { console.log(res) }) .catch(err => { console.log(err) }) } } } </script> ``` 2. 后端实现 2.1 添加依赖 在 Spring Boot 项目的 pom.xml 文件中添加 poi 依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> ``` 2.2 实现文件上传接口 在 Spring Boot 项目中,实现文件上传的接口: ``` @PostMapping("/upload") public void upload(MultipartFile file) throws Exception { Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); List<Data> dataList = new ArrayList<>(); for (int i = 1; i <= sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i); if (row == null) { continue; } Data data = new Data(); data.setName(row.getCell(0).getStringCellValue()); data.setAge((int) row.getCell(1).getNumericCellValue()); dataList.add(data); } dataRepository.saveAll(dataList); } ``` 其中,Data 是保存数据的实体类,dataRepository 是数据访问接口。 3. 完整示例 前端页面代码: ``` <template> <div> <input type="file" ref="file" @change="handleFileChange"> <button @click.prevent="submit">上传</button> </div> </template> <script> import UploadComponent from 'vue-upload-component' export default { components: { UploadComponent }, data () { return { file: null } }, methods: { handleFileChange () { this.file = this.$refs.file.files[0] }, submit () { const formData = new FormData() formData.append('file', this.file) this.$http.post('/upload', formData) .then(res => { console.log(res) }) .catch(err => { console.log(err) }) } } } </script> ``` 后端代码: ``` @RestController public class ExcelController { @Autowired private DataRepository dataRepository; @PostMapping("/upload") public void upload(MultipartFile file) throws Exception { Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); List<Data> dataList = new ArrayList<>(); for (int i = 1; i <= sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i); if (row == null) { continue; } Data data = new Data(); data.setName(row.getCell(0).getStringCellValue()); data.setAge((int) row.getCell(1).getNumericCellValue()); dataList.add(data); } dataRepository.saveAll(dataList); } } @Entity public class Data { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer age; // getter and setter } ``` 注意,需要在 application.properties 中配置数据库连接等信息。另外,需要在 Vue 项目中使用 axios 来发送请求。 这样,就完成了 Spring Boot + Vue 实现 excel 数据导入功能的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习那点事

你的鼓励是我最大的努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值