Easypoi+SpringBoot+Vue+Elment-UI实现文件的到出功能(Excel)

不多说别的了,直接上代码。。。

前端:

点击事件:

<el-button v-if="isAuth('biz:personbase:save')" type="primary" @click="poiHandle()">导出</el-button>

调用方法:

poiHandle () {
        this.$http({
          url: this.$http.adornUrl(`/biz/personbase/poi`),
          method: 'post',
          data: this.$http.adornData(this.dataPoiList, false),
          responseType: 'blob'
        }).then((res) => {
          // 将文件流转成blob形式
          const blob = new Blob([res.data], {type: 'application/vnd.ms-excel'})
          let filename = 'test.xls'
          // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
          const elink = document.createElement('a')
          elink.download = filename
          elink.style.display = 'none'
          elink.href = URL.createObjectURL(blob)
          document.body.appendChild(elink)
          elink.click()
          URL.revokeObjectURL(elink.href) // 释放URL 对象
          document.body.removeChild(elink)
        }).catch(() => {
          this.$message.error('导出失败')
        })
      }

分析:

在Elment中按钮点击请求可以访问后端接口,但无法获取返回后的够,也就是文件,通过创建新的链接事件进行请求的下载。

后端:

    @RequestMapping("/poi")
    @RequiresPermissions("biz:personbase:save")
    public void poiInfo(HttpServletResponse response,@RequestBody List<PersonBasePoiForm> personBasePoiForm){
        //导出操作
        ExportParams ex = new ExportParams("表头名", "Sheet名称");
        ex.setStyle(ExcelStyleUtil.class);
        Workbook workbook = ExcelExportUtil.exportExcel(ex,PersonBasePoiForm.class,personBasePoiForm);

        response.setHeader("content-Type","application/vnd.ms-excel");
        response.setHeader("Content-Disposition","attachment;filename="+System.currentTimeMillis()+".xls");
        response.setCharacterEncoding("UTF-8");
        try {
            workbook.write(response.getOutputStream());
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

分析:

接受前台传递表格数据,在后台通过exportExcel将数据写入Excel中,在通过文件流的方式返回给前端请求。

实现效果:

欢迎大家评论留言

参考:keepTravel

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值