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

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);
}
http://www.xdnf.cn/news/13041.html

相关文章:

  • 使用DataX同步MySQL数据
  • 【免费赠书5本】《DeepSeek大模型高性能核心技术与多模态融合开发》
  • 【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
  • S5P6818_驱动篇(26)网络驱动
  • Python 如何在Python 3.6上安装PIP
  • JAVA后端开发——多租户
  • Python importlib 动态加载
  • SCRM客户关系管理软件的内容管理功能深度解析
  • modelscope下载gguf格式模型
  • 快速排序算法改进:随机快排-荷兰国旗划分详解
  • 【PostgreSQL系列】PostgreSQL连接参数
  • 深入理解 S3 标签字符清洗的正则表达式实践
  • Python Day47
  • DAY 19 常见的特征筛选算法
  • 如何实现本地快速识别相似图像
  • [尚庭公寓]01-项目概述
  • 容器-使用slim减少10x+大模型镜像
  • 信息系统分析与设计复习
  • Qt项目中使用 CmdManager 实现高效的命令分发机制
  • 国际上与麦角硫因相关的人体功效试验文献分享
  • 使用homeassistant 插件将tasmota 接入到米家
  • mysql8.0忘记root密码情况下修改密码
  • VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
  • 十一、MySQL 事务底层与高可用原理
  • 基于PSO与BP神经网络回归模型的特征选择实战(Python实现)
  • MySQL--慢查询日志、日志分析工具mysqldumpslow
  • Java多线程实现之Runnable接口深度解析
  • SQLSERVER-DB操作记录
  • PyTorch学习路径与基础实践指南
  • window 显示驱动开发-如何查询视频处理功能(二)