vue+iView实现下载zip文件导出多个excel表格

10 篇文章 0 订阅
3 篇文章 0 订阅
文章讲述了如何在Vue项目中实现点击按钮分月份导出Excel文件,并通过axios发送POST请求,使用FileReader处理响应数据,包括错误处理和文件下载。还提及了之前类似功能在iView和React+AntDesign中的实现。
摘要由CSDN通过智能技术生成

1,需求:在vue项目中,实现分月份导出多个Excel表格。

点击导出,下载zip文件,解压出多张表数据。

2,关键代码:

<Button  class="export button-style button-space" @click="exportDetail"  :disabled="isAllowed">导出</Button>
 this.downZips("/list/export", "导出", this.queryParam);
downZips(exportUrl, fileName, params) {
  this.isAllowed=true
  this.$axios
    .request({
      method: "post",
      url: exportUrl,
      data: params,
      responseType: "blob"
    })
    .then((res) => {
      let reader = new FileReader()
      reader.readAsText(res.data)
      reader.onload = () => {
        if (res.data.type === 'application/json') {
          this.isAllowed=false
          let resData = JSON.parse(reader.result)
          if (resData.code == 200005||resData.code == 200007) {
            this.$Message.error(resData.errorMsg)// 重复调用错误提示
            
          }
        } else {
          if (res.status === 200) {
              let fileName=  res.headers['content-disposition'].replace('attachment;filename*=',             '');
              let data = res.data;
              let blob = new Blob([data],{ type: " application/octet-stream" });
              let url = window.URL.createObjectURL(blob);
              const link = document.createElement("a"); 
              link.href = url;
              if(fileName!=undefined){ 
              link.download = decodeURIComponent(fileName);
              }else{ 
              link.download = fileName
              }
              link.click();
              URL.revokeObjectURL(url);
              this.isAllowed=false
          } else {
            this.$Message.error('下载失败')
             this.isAllowed=false
          }
        }
      }

    })
    .catch((error) => {
      this.$Message.error(error);
       this.isAllowed=false
    });
},

3.效果
在这里插入图片描述

往期更多精彩:
vue+iView实现导入与导出excel功能
vue+iView 导出功能提示解析
React+Ant Design实现导出excel表格

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值