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

ruoyi-flowable-plus Excel 导入数据 Demo

📁 项目结构简述

ruoyi-flowable-plus 是基于 RuoYi 的扩展项目,使用:

  • 后端:Spring Boot + MyBatis + Flowable
  • 前端:Vue.js

📥 Excel 导入功能 Demo

导入用户数据为例,展示完整导入流程。

✅ 后端实现(Java)

1. Maven 依赖(pom.xml)

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version>
</dependency>

2. 控制器层(UserController.java)

@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@PostMapping("/import")public AjaxResult importUser(@RequestParam("file") MultipartFile file) {try {List<User> userList = userService.importExcel(file.getInputStream());return AjaxResult.success("导入成功", userService.saveBatch(userList));} catch (Exception e) {return AjaxResult.error("导入失败:" + e.getMessage());}}
}

3. 服务层(UserService.java)

@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> importExcel(InputStream inputStream) throws Exception {Workbook workbook = new XSSFWorkbook(inputStream);Sheet sheet = workbook.getSheetAt(0);List<User> list = new ArrayList<>();for (int i = 1; i <= sheet.getLastRowNum(); i++) {Row row = sheet.getRow(i);User user = new User();user.setUserName(getCellValue(row, 0));user.setNickName(getCellValue(row, 1));user.setEmail(getCellValue(row, 2));user.setPassword(getCellValue(row, 3));list.add(user);}return list;}private String getCellValue(Row row, int cellIndex) {Cell cell = row.getCell(cellIndex);if (cell == null) return "";return cell.toString();}public boolean saveBatch(List<User> list) {return userMapper.insertBatch(list) > 0;}
}

4. Mapper 层(UserMapper.java)

public interface UserMapper {int insertBatch(@Param("list") List<User> list);
}

5. Mapper XML(UserMapper.xml)

<insert id="insertBatch">INSERT INTO sys_user (user_name, nick_name, email, password)VALUES<foreach collection="list" item="item" separator=",">(#{item.userName}, #{item.nickName}, #{item.email}, #{item.password})</foreach>
</insert>

✅ 前端实现(Vue.js)

1. 页面组件(user/import.vue)

<template><div><el-uploadaction="/api/user/import":headers="headers":on-success="handleSuccess":on-error="handleError":limit="1"accept=".xlsx,.xls"><el-button type="primary">导入Excel</el-button></el-upload></div>
</template><script>
export default {data() {return {headers: {Authorization: 'Bearer ' + this.$store.getters.token}};},methods: {handleSuccess(response) {this.$message.success("导入成功");console.log(response);},handleError(error) {this.$message.error("导入失败:" + error.message);}}
};
</script>

🧪 示例 Excel 表格格式

用户名昵称邮箱密码
admin管理员admin@example.com123456
user1用户1user1@example.com123456

✅ 总结

模块内容
后端技术Spring Boot + MyBatis + Apache POI
前端技术Vue + Element UI
核心功能Excel 数据导入数据库
示例实体User 对象
示例接口/user/import

提示:如需集成到其他模块(如部门、岗位、流程等),可复用此结构,仅需替换实体类和Mapper。

http://www.lryc.cn/news/594595.html

相关文章:

  • 现在希望用git将本地文件test目录下的文件更新到远程仓库指定crawler目录下,命名相同的文件本地文件将其覆盖
  • 自动驾驶中各传感器的优缺点
  • 一个月掌握数据结构与算法:高效学习计划
  • uni-app 鸿蒙平台条件编译指南
  • vxe-table 通过配置 ajax 方式自动请求数据,适用于简单场景的列表
  • 网络基础1-11综合实验(eNSP):vlan/DHCP/Web/HTTP/动态PAT/静态NAT
  • MTSC2025参会感悟:大模型 + CV 重构全终端 UI 检测技术体系
  • C语言:深入理解指针(3)
  • cocos中实现3d人物角色头顶信息跟随功能,UI跟随3D/2D对象移动,例如昵称血条跟随人物移动
  • 【VASP】机器学习势概述
  • 智能合约安全 - 重入攻击 - 常见漏洞(第一篇)
  • taro微信小程序的tsconfig.json文件说明
  • Taro 本地存储 API 详解与实用指南
  • Typecho目录树插件开发:从后端解析到前端渲染全流程
  • 使用pymongo进行MongoDB的回收
  • Kali MSF渗透Windows 11电脑
  • Taro 路由相关 API 详解与实战
  • taro+pinia+小程序存储配置持久化
  • 微美全息(WIMI.US)聚焦多元哈希锁机制,为链上链下数据可信交互按下加速键
  • 快速入门SwiftUI
  • 【大模型】结构化提示词:让AI高效完成复杂任务的“编程语言”
  • JavaEE初阶第十期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(八)
  • 经典神经网络(vgg resnet googlenet)
  • LiteCoT:难度感知的推理链压缩与高效蒸馏框架
  • Apache IoTDB(2):时序数据库 IoTDB 集群安装部署的技术优势与适用场景分析
  • 卫朋:华为流程体系拆解系列之高阶流程L1-L3分解三阶七步法
  • 深入详解随机森林在放射治疗计划优化中的应用及实现细节
  • 【Elasticsearch】BM25的discount_overlaps参数
  • Qt中的网络通信
  • Lua:小巧而强大的脚本语言,游戏与嵌入式的秘密武器