ruoyi增加导入导出
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增加导入导出相关推荐
- mysql连接,修改密码,增加用户,显示,导入导出
[要点] *连接mysql *修改密码 *增加用户 *显示 *导入导出sql *清除屏幕 [详细] (一) 连接MYSQL: 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接 ...
- ruoyi导入导出Excel
导入导出excel:使用若依自带的工具ExcelUtil:(例子:SysUserController) 导入之前需要生成一个excel模板给用户填写(前端通过接口获取模板名字,再调用下载接口commo ...
- springboot + 若依 ruoyi + easypoi excel的导入导出(带图片)
springboot + 若依 ruoyi + easypoi excel的导入导出(带图片) 一.官方文档 gitee地址 官方文档 二.快速开始 1.导入 引入依赖 <dependency& ...
- 使用ldapadd,ldapmodify,slapcat 进行数据增加,备份,导入导出数据ldapsearch获取中文组织结构为加密过的字符串
统计用户和组 user: ldapsearch -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA -b "ou=Users,dc=rd,d ...
- 注解+反射优雅的实现Excel导入导出(通用版)
以下文章来源方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/youzi1394046585/ article/details/86670203 日常在做后 ...
- JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理
文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语言. ...
- 使用Oracle 的 imp ,exp 命令实现数据的导入导出
本文对Oracle数据的导入导出 imp ,exp 两个命令进行了介绍, 并对其相应的参数进行了说明,然后通过一些示例进行演练,加深理解. 文章最后对运用这两个命令可能出现的问题(如权限不够,不同or ...
- mysql数据库导出后乱码问题_MySQL导入导出数据出现乱码的解决办法
在mysql导入导出数据时经常出现中文乱码的问题,大多是因类导入导出时编码设置不一致所引起的.本文介绍了不同平台下的编码转换方法,供大家参考. 在linux系统中默认的是utf8编码,而windows ...
- Oracle创建用户、表空间、导入导出、...命令
//创建临时表空间 create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserve ...
最新文章
- Redis实现分布式锁全局锁—Redis客户端Redisson中分布式锁RLock实现
- JAVA之JVM分代垃圾回收策略(一)
- 多备份cloud 5技术:传统数据备份思路的完美移植
- 关于SAP Fiori Smart Template开发的一些实际例子
- Spark的测量系统MetricsSystem
- 使用Anaconda3安装tensorflow,opencv,使其可以在spyder中运行
- BZOJ1061: [Noi2008]志愿者招募(线性规划)
- 基于自抗扰控制的压力环控制算法研究
- 经纬度转换 gcj02转wgs84
- 微信客服介绍和使用指引(4.19)
- 关于书面辞职报告和试用期离职
- !include: could not find: nsProcess.nsh
- 抑制电源模块电磁干扰的几种方法
- idea 双击打不开了咋办
- Echarts 用图形纹理来填充颜色(color - pattern)
- 金融科技大数据产品推荐:Hyperchain--国产自主可控的企业级联盟区块链平台
- Java字符串和数组相互转换
- Linux攻击原理,转:Linux下缓冲区溢出攻击的原理及对策
- 【报告分享】2020年中国食品冷链供应链研究报告-阿里研究院(附下载)
- 【netty篇】- 第2章netty知识应用【持续更新中】~