若依框架内自带的excel导入导出功能
生活随笔
收集整理的這篇文章主要介紹了
若依框架内自带的excel导入导出功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
若依這個框架非常的神la奇ji,每次我想加入某個功能的時候都會報一些奇奇怪怪的錯,其他項目里能用的代碼復制粘貼過來就報錯,然后逛一下官網發現官網已經集成了,然后用他官方集成的就不報錯.就只許用你的不許用我自己的是吧?不多吐槽,下面開始.
導入:
controller層:官方是以SysUser為模板,更換為其他對象即可.getUsername是若依的靜態方法,return可以為Ajax也可以為R
對象:主要看里面的@Excel的參數,去除了一些只有name的屬性,其他的cellType type readConverterExp等等還沒研究 要用刀的時候再去研究
@Excel(name = "用戶序號", cellType = ColumnType.NUMERIC, prompt = "用戶編號")private Long userId;@Excel(name = "部門編號", type = Type.IMPORT)private Long deptId;@Excel(name = "用戶性別", readConverterExp = "0=男,1=女,2=未知")private String sex;@Excel(name = "帳號狀態", readConverterExp = "0=正常,1=停用")private String status;private String delFlag;@Excel(name = "最后登錄IP", type = Type.EXPORT)private String loginIp;@Excel(name = "最后登錄時間", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)private Date loginDate;/** 部門對象 */@Excels({@Excel(name = "部門名稱", targetAttr = "deptName", type = Type.EXPORT),@Excel(name = "部門負責人", targetAttr = "leader", type = Type.EXPORT)})private SysDept dept;service層:沒啥好說的
/*** 導入用戶數據* * @param userList 用戶數據列表* @param isUpdateSupport 是否更新支持,如果已存在,則進行更新數據* @param operName 操作用戶* @return 結果*/public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);serviceImpl層:分了三種 插入 更新和失敗 計數返回
/*** 導入用戶數據* * @param userList 用戶數據列表* @param isUpdateSupport 是否更新支持,如果已存在,則進行更新數據* @param operName 操作用戶* @return 結果*/@Overridepublic String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {if (StringUtils.isNull(userList) || userList.size() == 0){throw new ServiceException("導入用戶數據不能為空!");}int successNum = 0;int failureNum = 0;StringBuilder successMsg = new StringBuilder();StringBuilder failureMsg = new StringBuilder();String password = configService.selectConfigByKey("sys.user.initPassword");for (SysUser user : userList){try {// 驗證是否存在這個用戶SysUser u = userMapper.selectUserByUserName(user.getUserName());if (StringUtils.isNull(u)) {BeanValidators.validateWithException(validator, user);user.setPassword(SecurityUtils.encryptPassword(password));user.setCreateBy(operName);this.insertUser(user);successNum++;successMsg.append("<br/>" + successNum + "、賬號 " + user.getUserName() + " 導入成功");} else if (isUpdateSupport) {BeanValidators.validateWithException(validator, user);user.setUpdateBy(operName);this.updateUser(user);successNum++;successMsg.append("<br/>" + successNum + "、賬號 " + user.getUserName() + " 更新成功");}else {failureNum++;failureMsg.append("<br/>" + failureNum + "、賬號 " + user.getUserName() + " 已存在");}}catch (Exception e) {failureNum++;String msg = "<br/>" + failureNum + "、賬號 " + user.getUserName() + " 導入失敗:";failureMsg.append(msg + e.getMessage());log.error(msg, e);}}if (failureNum > 0) {failureMsg.insert(0, "很抱歉,導入失敗!共 " + failureNum + " 條數據格式不正確,錯誤如下:");throw new ServiceException(failureMsg.toString());} else {successMsg.insert(0, "恭喜您,數據已全部導入成功!共 " + successNum + " 條,數據如下:");}return successMsg.toString();}導出:同樣的 ExcelUtil泛型的對象也要加上@Excel注解,查詢出來之后直接導出即可.這倒是非常簡單
@PreAuthorize("@ss.hasPermi('system:user:export')")@PostMapping("/export")public void export(HttpServletResponse response, SysUser user){List<SysUser> list = userService.selectUserList(user);ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);util.exportExcel(response, list, "用戶數據");}以上,over.
總結
以上是生活随笔為你收集整理的若依框架内自带的excel导入导出功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @RunWith注解的作用
- 下一篇: 08-02-loggin-模块