当前位置: 首页 > news >正文

Excel表格数据导入数据库

1、后端代码

第一步:导入POM依赖

<!--Excel导入导出依赖-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version>
</dependency><!--hutool-all依赖-->
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.25</version>
</dependency>

第二步:在UserMapper中添加批量导入的方法

 // 批量导入用户信息void batchInsertUser(List<User> userList);

第三步:在UserMapper.xml中添加批量导入的SQL语句

<!--批量导入用户--><insert id="batchInsertUser" parameterType="java.util.List">INSERT INTO users(name,password,role,email,phone,create_time,update_time)VALUES<foreach collection="list" item="item" separator=",">(#{item.name},#{item.password},#{item.role},#{item.email},#{item.phone},#{item.createTime},#{item.updateTime})</foreach></insert>

第四步:在UserService中添加批量导入接口                

   /*** Excel导入用户信息* @param userList 用户信息列表* @return void */void importUser(List<User> userList);

第五步:在UserServiceImpl中实现批量导入接口

  /*** 批量导入用户信息*/@Overridepublic void importUser(List<User> userList) {try {userMapper.batchInsertUser(userList);}catch (Exception e){e.printStackTrace();throw new CustomException("导入用户信息失败,请检查数据格式是否正确或用户名是否重复");}}

第六步:在FileController中添加导入接口

//导入UserService@Autowiredprivate UserService userService;/*** Excel导入* @param file Excel文件* @return 导入结果*/@PostMapping("/importUser")public JsonResult importExcel(@RequestParam("file") MultipartFile file) throws IOException {// 1. 使用输入流读取Excel文件InputStream inputStream = file.getInputStream();// 2. 读取流中的数据ExcelReader excelReader = ExcelUtil.getReader(inputStream);// 3. 将读取到的数据填充为List<User>List<User> userList = excelReader.readAll(User.class);// 4. 将userList保存到数据库userService.importUser(userList);// 5. 返回导入结果return JsonResult.success(userList);}

2、前端代码

第一步:<tmplate>部分

<el-uploadaction="http://localhost:8080/api/file/importUser":show-file-list="false":on-success="handleImport":on-error="handleImportError"><el-button type="success">批量导入</el-button>
</el-upload>

 第二步:<script>部分

// 批量导入用户成功处理
const handleImport = (res) => {if (res.code === 200 || res.code === "200") {ElMessage.success('批量导入成功!')refreshAfterOperation()}
}// 批量导入失败处理
const handleImportError = (error) => {let errorMsg = '批量导入失败';try {// 1. 尝试解析错误信息中的JSON对象const errorData = JSON.parse(error.message);// 2. 检查是否存在message字段if (errorData && errorData.message) {errorMsg = errorData.message;}} catch (e) {// 3. 如果解析失败,使用原始错误信息console.warn("无法解析错误信息:", error.message);errorMsg = error.message;}// 4. 显示最终错误信息ElMessage.error(errorMsg);
}

相关文章:

  • 亮相GAITC 2025,中科曙光全面赋能AI基础设施
  • 【为什么RabbitMQ能够控制事务?控制事务的原理】
  • 【第一章:人工智能基础】01.Python基础及常用工具包-(3)常用数据科学工具包
  • find查找指定文件
  • java复习 06
  • shell脚本质数判断
  • 可下载旧版app屏蔽更新的app市场
  • Cursor+MCP编程工具助力开发效率倍增
  • React Native 弹窗组件优化实战:解决 Modal 闪烁与动画卡顿问题
  • python数据结构和算法(1)
  • 2025-06-09 java面试总结
  • 【Elasticsearch基础】Elasticsearch批量操作(Bulk API)深度解析与实践指南
  • pymilvus
  • 保险风险预测数据集insurance.csv
  • Java UDP网络通信实战指南
  • Shell脚本流程控制:从基础语法到实战应用
  • 统计按位或能得到最大值的子集数目
  • vs code无法ssh远程连接linux机器----解决方案
  • tomcat指定使用的jdk版本
  • 【VLNs篇】07:NavRL—在动态环境中学习安全飞行
  • 做网站用哪个预装系统/市场调研报告模板
  • 常用网站开发软件/网页优化
  • 网站建设手机版模板/自己做的网站怎么推广
  • 粉色网站模板/百度下载免费
  • 百货店怎么做网站送货/免费发帖推广的平台
  • 做网站开发需要考什么证书/企业网络宣传推广方案