若依框架 ------- 导入导出(Excel)

简介: 若依框架 ------- 导入导出(Excel)

导出


html页面


定义的按钮

<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:student:export">
          <i class="fa fa-download"></i> 导出 </a>


映射的路径

exportUrl: prefix + "/export",


实体类


加入注解,导出谁就在谁上面加入注解---- @Excel


Controller层


 //导出
    @Log(title = "学生管理", businessType = BusinessType.EXPORT)
    @RequiresPermissions("system:student:export")
    @PostMapping("/export")
    @ResponseBody
    public AjaxResult export(SysStudent student)
    {
        List<SysStudent> list = studentService.selectStudentList(student);
        ExcelUtil<SysStudent> util = new ExcelUtil<SysStudent>(SysStudent.class);
        return util.exportExcel(list, "学生数据");
    }


导入


没有模板就不知道要导入什么,所以需要先有一个模板


导入的时候,因必要条件还要确定是否重复,出现两个一摸一样的就没有必要了吧,我这是学生表,所以还需要对其通过名字进行查询


HTML页面


<a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:student:import">
          <i class="fa fa-upload"></i> 导入 </a>


映射

importUrl: prefix + "/importStudent",//导入
importTemplateUrl: prefix + "/importTemplate",//导出模板


导入的前端页面

<!-- 导入区域 -->
<script id="importTpl" type="text/template">
  <form enctype="multipart/form-data" class="mt20 mb10">
    <div class="col-xs-offset-1">
      <input type="file" id="file" name="file"/>
      <div class="mt10 pt5">
        <input type="checkbox" id="updateSupport" name="updateSupport" title="如果登录账户已经存在,更新这条数据。"> 是否更新已经存在的用户数据
        &nbsp;  <a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a>
      </div>
      <font color="red" class="pull-left mt10">
        提示:仅允许导入“xls”或“xlsx”格式文件!
      </font>
    </div>
  </form>
</script>


Controller层


/**
     * 下载模板
     */
    @RequiresPermissions("system:student:view")
    @GetMapping("/importTemplate")
    @ResponseBody
    public AjaxResult importTemplate()
    {
        ExcelUtil<SysStudent> util = new ExcelUtil<SysStudent>(SysStudent.class);
        return util.importTemplateExcel("学生数据");
    }
 /**
     * 导入
     */
    @RequiresPermissions("system:student:import")
    @PostMapping("/importStudent")
    @ResponseBody
    public AjaxResult importStudent(MultipartFile file, boolean updateSupport) throws Exception
    {
        ExcelUtil<SysStudent> util = new ExcelUtil<SysStudent>(SysStudent.class);
        List<SysStudent> studentList = util.importExcel(file.getInputStream());
        String operName = ShiroUtils.getSysUser().getLoginName();
        String message = studentService.importStudent(studentList, updateSupport, operName);
        return AjaxResult.success(message);
    }


service层


/**
     * 导入学生数据
     *
     * @param studentList 学生数据列表
     * @param updateSupport 是否更新支持,如果已存在,则进行更新数据
     * @param operName 是否更新支持,如果已存在,则进行更新数据
     * @return 结果
     */
    public String importStudent(List<SysStudent> studentList, Boolean updateSupport, String operName) ;


serviceImpl层


 /**
     * 导入用户数据
     *
     * @param studentList 用户数据列表
     * @param updateSupport 是否更新支持,如果已存在,则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
     private static final Logger log = LoggerFactory.getLogger(SysStudentServiceImpl.class);
    @Override
    public String importStudent(List<SysStudent> studentList, Boolean updateSupport, String operName)
    {
        if (StringUtils.isNull(studentList) || studentList.size() == 0)
        {
            throw new BusinessException("导入用户数据不能为空!");
        }
        int successNum = 0;
        int failureNum = 0;
        StringBuilder successMsg = new StringBuilder();
        StringBuilder failureMsg = new StringBuilder();
        for (SysStudent student : studentList)
        {
            try
            {
                // 验证是否存在这个用户
                SysStudent u = studentMapper.selectStudentByName(student.getStudentName() );
                System.out.print(student.getStudentSex()+"");
                if (StringUtils.isNull(u))
                {
                    student.setStudentName(student.getStudentName());
                    this.insertStudent(student);
                    successNum++;
                    successMsg.append("<br/>" + successNum + "学校信息" + student.getStudentName() + " 导入成功");
                }
                else if (updateSupport)
                {
                    student.setUpdateBy(operName);
                    this.updateStudent(student);
                    successNum++;
                    successMsg.append("<br/>" + successNum + "学校信息 " + student.getStudentName() + " 更新成功");
                }
                else
                {
                    failureNum++;
                    failureMsg.append("<br/>" + failureNum + "学校信息" + student.getStudentName() + " 已存在");
                }
            }
            catch (Exception e)
            {
                failureNum++;
                String msg = "<br/>" + failureNum + "学校信息" + student.getStudentName() + " 导入失败:";
                failureMsg.append(msg + e.getMessage());
                log.error(msg, e);
            }
        }
        if (failureNum > 0)
        {
            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
            throw new BusinessException(failureMsg.toString());
        }
        else
        {
            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
        }
        return successMsg.toString();
    }


mapper层


mapper.xml


写一个根据姓名查询的方法,避免重复的

<select id="selectStudentByName" parameterType="String" resultMap="SysStudentResult">
    <include refid="selectStudentVo"/>
    where student_name = #{studentName}
  </select>


mapper.java文件写方法

/**
     * 通过学生姓名查询学生
     *
     * @param studentName 用户名
     * @return 用户对象信息
     */
    public SysStudent selectStudentByName(String studentName);
目录
相关文章
|
4月前
|
easyexcel Java 测试技术
用 EasyExcel 实现 Excel 的导入导出
用 EasyExcel 实现 Excel 的导入导出
208 0
|
2月前
|
Java easyexcel Maven
【Java专题_04】集成EasyExcel进行Excel导入导出详细教程
【Java专题_04】集成EasyExcel进行Excel导入导出详细教程
|
9月前
|
JSON 数据格式
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)(一)
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)(一)
113 0
|
5月前
|
Java
SpringBoot实现Excel导入导出
SpringBoot实现Excel导入导出
59 0
|
5月前
|
开发框架 Java easyexcel
如何使用 SpringBoot 集成 EasyExcel 3.x 来实现优雅的 Excel 导入导出功能?
如何使用 SpringBoot 集成 EasyExcel 3.x 来实现优雅的 Excel 导入导出功能?
295 2
如何使用 SpringBoot 集成 EasyExcel 3.x 来实现优雅的 Excel 导入导出功能?
|
5月前
|
Java
Java Excel导入导出功能实现
Java Excel导入导出功能实现
50 0
|
6月前
|
存储 Java easyexcel
每日一博 - Excel导入导出的那点事儿
每日一博 - Excel导入导出的那点事儿
41 0
|
6月前
|
前端开发 计算机视觉
Excel | 前端实现复杂表格导入导出
通过前端技术实现复杂excel表格(合并单元格,这里没有做表格的数据类型)的导入导出,下面代码还有简单表格的导出。 以下代码,cv即可用。主要是vue3以及ts的简单写法。
|
8月前
|
JavaScript 前端开发
vue-admin-element框架实现简单的excel导出功能
导出功能是比较常见的功能之一,这里以一个简单的导出功能为示例,如果需要更复杂的导出功能,可以在此基础上进行丰富。
125 0
|
8月前
|
JavaScript 前端开发 Java