SpringBoot+Vue 数据的批量导入和导出

导出

 总结了三种导出数据为表格的情况,直接上代码!! 

整体导出

 后端接口: 

//    批量导出数据
    @GetMapping("/export")
    public void exportDate(HttpServletResponse response) throws IOException {
        ExcelWriter writer= ExcelUtil.getWriter(true);
//        全部导出
        Iterable<Hero> list=heroService.list();

        writer.write(list,true);

//        设置响应格式
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        String filename= URLEncoder.encode("信息表","UTF-8");
        response.setHeader("Content-Disposition","attachment;filename="+filename+".xlsx");
        
        ServletOutputStream outputStream= response.getOutputStream();
        writer.flush(outputStream,true);
        outputStream.flush();
        outputStream.close();
    }

前端使用:

 //批量导出
    expertDate () {
        window.open('http://localhost:8080/hero/export?token=' + this.user.token)
    }

按查询结果导出 

后端:

 @GetMapping("/export")
    public void exportDate(@RequestParam(required = false) String heroname,
                           @RequestParam(required = false) String herosex,
                           HttpServletResponse response) throws IOException {
        ExcelWriter writer= ExcelUtil.getWriter(true);
//        导出表格
        QueryWrapper<Hero> queryWrapper = new QueryWrapper<Hero>().orderByDesc("id");
        queryWrapper.like(StrUtil.isNotBlank(heroname), "heroname", heroname);
        queryWrapper.like(StrUtil.isNotBlank(herosex), "herosex", herosex);
        Iterable<Hero> list=heroService.list(queryWrapper);

        writer.write(list,true);
//        设置响应格式
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        String filename= URLEncoder.encode("特工表","UTF-8");
        response.setHeader("Content-Disposition","attachment;filename="+filename+".xlsx");

        ServletOutputStream outputStream= response.getOutputStream();
        writer.flush(outputStream,true);
        outputStream.flush();
        outputStream.close();
    }

 前端:

 expertDate () {
        window.open('http://localhost:8080/hero/export?token=' + this.user.token + "&&heroname=" + this.heroname + "&&herosex=" + this.herosex)
    },

 选择导出

后端:

 @GetMapping("/export")
    public void exportDate(@RequestParam(required = false) String heroname,
                           @RequestParam(required = false) String herosex,
                           @RequestParam(required = false) String ids,
                           HttpServletResponse response) throws IOException {
        ExcelWriter writer= ExcelUtil.getWriter(true);
        Iterable<Hero> list;
        QueryWrapper<Hero> queryWrapper = new QueryWrapper<Hero>().orderByDesc("id");
//        导出表格
        if (StrUtil.isNotBlank(ids)){
//            字符串转数字列表
            List<Integer> idsArr= Arrays.stream(ids.split(",")).map(Integer::valueOf).collect(Collectors.toList());
            queryWrapper.in("id",idsArr);
        }else{
            queryWrapper.like(StrUtil.isNotBlank(heroname), "heroname", heroname);
            queryWrapper.like(StrUtil.isNotBlank(herosex), "herosex", herosex);
        }
        list=heroService.list(queryWrapper);
        writer.write(list,true);
//        设置响应格式
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        String filename= URLEncoder.encode("特工表","UTF-8");
        response.setHeader("Content-Disposition","attachment;filename="+filename+".xlsx");

        ServletOutputStream outputStream= response.getOutputStream();
        writer.flush(outputStream,true);
        outputStream.flush();
        outputStream.close();
    }

前端:

 expertDate () {
      if (!this.ids.length) {
        // 无选中数据 全部导出
        window.open('http://localhost:8080/hero/export?token=' + this.user.token + "&&heroname=" + this.heroname + "&&herosex=" + this.herosex)
      } else {
        // 转字符串
        this.ids.join(',')
        window.open('http://localhost:8080/hero/export?token=' + this.user.token + "&&heroname=" + this.heroname + "&&herosex=" + this.herosex + "&&ids=" + this.ids)
      }
    },

如果项目没有设置token权限的话直接写地址即可: window.open('http://localhost:8080/hero/export' )

若想导出的表格表头是中文,可以在后端给实体类加别名:

 @Alias("序号")
 private int id;

导出

后端:

 /**
     * 批量导入
     * @param file 传入的excel文件对象
     * @return 导入结果
     */
    @PostMapping("/import")
    public Result importDate(MultipartFile file) throws IOException{
        ExcelReader reader=ExcelUtil.getReader(file.getInputStream());
        List<Hero> heroList = reader.readAll(Hero.class);
//        写入数据库
        try{
            heroService.saveBatch(heroList);
        }catch (Exception e){
            return Result.error("导入出错了!");
        }
        return Result.success();
    }

 前端:

<el-upload
        action="http://localhost:8080/hero/import"
        :headers="{token:user.token}"
        style="display:inline-block;margin-left:10px"
        :show-file-list="false"
        :on-success="handleImport"
      >
        <el-button type="primary" plain>批量导入</el-button>
      </el-upload>


// 导入方法
    handleImport (res, file, fileList) {
      if (res.code = '200') {
        this.$message.success("操作成功")
        this.load(1)
      } else {
        this.$message.error(res.msg)
      }
    },

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱因斯坦乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值