1.导入按钮、带导入模板以及存在是否更新

①在合适的位置增加导入按钮

 <el-col :span="1.5"><el-buttontype="info"plainicon="el-icon-upload2"size="mini"@click="handleImport"v-hasPermi="['system:user:import']">导入</el-button></el-col>

②增加导入对话框

 <!-- 用户导入对话框 --><el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body><el-uploadref="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>点击上传</em></div><div class="el-upload__tip" slot="tip"><el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据<el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link></div><div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div></el-upload><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitFileForm">确 定</el-button><el-button @click="upload.open = false">取 消</el-button></div></el-dialog>

③设置upload参数

 // 用户导入参数upload: {// 是否显示弹出层(用户导入)open: false,// 弹出层标题(用户导入)title: "",// 是否禁用上传isUploading: false,// 是否更新已经存在的用户数据updateSupport: 0,// 设置上传的请求头部headers: { Authorization: "Bearer " + getToken() },// 上传的地址url: process.env.VUE_APP_BASE_API + "/system/user/importData"},

④导入动作设置

    /** 导入按钮操作 */handleImport() {this.upload.title = "用户导入";this.upload.open = true;},/** 下载模板操作 */importTemplate() {importTemplate().then(response => {this.download(response.msg);});},// 文件上传中处理handleFileUploadProgress(event, file, fileList) {this.upload.isUploading = true;},
// 文件上传成功处理handleFileSuccess(response, file, fileList) {this.upload.open = false;this.upload.isUploading = false;this.$refs.upload.clearFiles();this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });this.getList();},// 提交上传文件submitFileForm() {this.$refs.upload.submit();}

⑤api js中配置importTemplate

// 下载用户导入模板
export function importTemplate() {return request({url: '/system/user/importTemplate',method: 'get'})
}

⑥后台代码对应编写

首先bean中需要导入导出的字段需要写@Exce注解

然后对应写导出导入模板以及导入按钮具体逻辑

    @Log(title = "品牌", businessType = BusinessType.IMPORT)@PreAuthorize("@ss.hasPermi('system:brand:import')")@PostMapping("/importData")public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception{ExcelUtil<BdBrand> util = new ExcelUtil<BdBrand>(BdBrand.class);List<BdBrand> brandList = util.importExcel(file.getInputStream());String message = bdBrandService.importBrand(brandList, updateSupport);return AjaxResult.success(message);}@GetMapping("/importTemplate")public AjaxResult importTemplate(){ExcelUtil<BdBrand> util = new ExcelUtil<BdBrand>(BdBrand.class);return util.importTemplateExcel("品牌数据");}
/*** 导入excel* @param brandList  数据* @param isUpdateSupport 重复是否更新标志* @return 结果*/@Overridepublic String importBrand(List<BdBrand> brandList, Boolean isUpdateSupport) {if (StringUtils.isNull(brandList) || brandList.size() == 0){throw new CustomException("导入数据不能为空!");}int successNum = 0;int failureNum = 0;StringBuilder successMsg = new StringBuilder();StringBuilder failureMsg = new StringBuilder();for (BdBrand brand : brandList){try{// 验证是否存在这个品牌int b = bdBrandMapper.checkBrandNameExist(brand.getBrandName());if (b==0){brand.setCreateBy(SecurityUtils.getUsername());brand.setCreateTime(DateUtils.getNowDate());this.insertBdBrand(brand);successNum++;successMsg.append("<br/>" + successNum + "、品牌 " + brand.getBrandName() + " 导入成功");}else if (isUpdateSupport){brand.setUpdateBy(SecurityUtils.getUsername());brand.setUpdateTime(DateUtils.getNowDate());this.updateBdBrand(brand);successNum++;successMsg.append("<br/>" + successNum + "、品牌 " + brand.getBrandName() + " 更新成功");}else{failureNum++;failureMsg.append("<br/>" + failureNum + "、品牌  " + brand.getBrandName() + " 已存在");}}catch (Exception e){failureNum++;String msg = "<br/>" + failureNum + "、品牌 " + brand.getBrandName() + " 导入失败:";failureMsg.append(msg + e.getMessage());log.error(msg, e);}}if (failureNum > 0){failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");throw new CustomException(failureMsg.toString());}else{successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");}return successMsg.toString();}

2、导出模板

①设置按钮

      <el-col :span="1.5"><el-buttontype="warning"plainicon="el-icon-download"size="mini":loading="exportLoading"@click="handleExport"v-hasPermi="['system:brand:export']">导出</el-button></el-col>

②导出按钮提示等设置

   /** 导出按钮操作 */handleExport() {const queryParams = this.queryParams;this.$confirm('是否确认导出所有品牌数据项?', "警告", {confirmButtonText: "确定",cancelButtonText: "取消",type: "warning"}).then(() => {this.exportLoading = true;return exportBrand(queryParams);}).then(response => {this.download(response.msg);this.exportLoading = false;}).catch(() => {});}

③api js中配置

// 导出品牌
export function exportBrand(query) {return request({url: '/system/brand/export',method: 'get',params: query})

④导出后台代码

    /*** 导出品牌列表*/@PreAuthorize("@ss.hasPermi('system:brand:export')")@Log(title = "品牌", businessType = BusinessType.EXPORT)@GetMapping("/export")public AjaxResult export(BdBrand bdBrand){List<BdBrand> list = bdBrandService.selectBdBrandList(bdBrand);ExcelUtil<BdBrand> util = new ExcelUtil<BdBrand>(BdBrand.class);return util.exportExcel(list, "品牌数据");}

3.导出导入相关包引入

import { listBrand, getBrand, delBrand, addBrand, updateBrand, exportBrand, importTemplate } from "@/api/system/brand";
import { getToken } from "@/utils/auth";

4.sql将两按钮导入导出插入sys_menu表,达到权限管理的效果

insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('品牌导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'system:brand:export',       '#', 'admin', sysdate(), '', null, '');

ruoyi增加导入导出相关推荐

  1. mysql连接,修改密码,增加用户,显示,导入导出

    [要点] *连接mysql *修改密码 *增加用户 *显示 *导入导出sql *清除屏幕 [详细] (一) 连接MYSQL: 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接 ...

  2. ruoyi导入导出Excel

    导入导出excel:使用若依自带的工具ExcelUtil:(例子:SysUserController) 导入之前需要生成一个excel模板给用户填写(前端通过接口获取模板名字,再调用下载接口commo ...

  3. springboot + 若依 ruoyi + easypoi excel的导入导出(带图片)

    springboot + 若依 ruoyi + easypoi excel的导入导出(带图片) 一.官方文档 gitee地址 官方文档 二.快速开始 1.导入 引入依赖 <dependency& ...

  4. 使用ldapadd,ldapmodify,slapcat 进行数据增加,备份,导入导出数据ldapsearch获取中文组织结构为加密过的字符串

    统计用户和组 user: ldapsearch -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA -b "ou=Users,dc=rd,d ...

  5. 注解+反射优雅的实现Excel导入导出(通用版)

    以下文章来源方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/youzi1394046585/ article/details/86670203 日常在做后 ...

  6. JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理

    文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语言. ...

  7. 使用Oracle 的 imp ,exp 命令实现数据的导入导出

    本文对Oracle数据的导入导出 imp ,exp 两个命令进行了介绍, 并对其相应的参数进行了说明,然后通过一些示例进行演练,加深理解. 文章最后对运用这两个命令可能出现的问题(如权限不够,不同or ...

  8. mysql数据库导出后乱码问题_MySQL导入导出数据出现乱码的解决办法

    在mysql导入导出数据时经常出现中文乱码的问题,大多是因类导入导出时编码设置不一致所引起的.本文介绍了不同平台下的编码转换方法,供大家参考. 在linux系统中默认的是utf8编码,而windows ...

  9. Oracle创建用户、表空间、导入导出、...命令

    //创建临时表空间 create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserve ...

最新文章

  1. Redis实现分布式锁全局锁—Redis客户端Redisson中分布式锁RLock实现
  2. JAVA之JVM分代垃圾回收策略(一)
  3. 多备份cloud 5技术:传统数据备份思路的完美移植
  4. 关于SAP Fiori Smart Template开发的一些实际例子
  5. Spark的测量系统MetricsSystem
  6. 使用Anaconda3安装tensorflow,opencv,使其可以在spyder中运行
  7. BZOJ1061: [Noi2008]志愿者招募(线性规划)
  8. 基于自抗扰控制的压力环控制算法研究
  9. 经纬度转换 gcj02转wgs84
  10. 微信客服介绍和使用指引(4.19)
  11. 关于书面辞职报告和试用期离职
  12. !include: could not find: nsProcess.nsh
  13. 抑制电源模块电磁干扰的几种方法
  14. idea 双击打不开了咋办
  15. Echarts 用图形纹理来填充颜色(color - pattern)
  16. 金融科技大数据产品推荐:Hyperchain--国产自主可控的企业级联盟区块链平台
  17. Java字符串和数组相互转换
  18. Linux攻击原理,转:Linux下缓冲区溢出攻击的原理及对策
  19. 【报告分享】2020年中国食品冷链供应链研究报告-阿里研究院(附下载)
  20. 【netty篇】- 第2章netty知识应用【持续更新中】~

热门文章

  1. vue 2.6 keep-alive 不生效问题记录点
  2. 电子邮箱哪个好用又安全?
  3. 什么是电动汽车充电桩功能介绍
  4. 面试题01.05.一次编辑
  5. 用python进别人qq_采用python实现简单QQ单用户机器人的方法
  6. 2021-09-23记录下wifi调试流程
  7. 图卷积在语义分割上的应用(论文集)
  8. 15元钱一杯咖啡,喝完后两个空杯换一杯,问:你有100元钱,最多可以喝到几杯咖啡
  9. mac上安装R和RStudio
  10. 0基础女生学网络安全合适吗