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

news/2024/7/21 4:10:55 标签: vue.js, view design, excel, zip, 导入与导出

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表格


http://www.niftyadmin.cn/n/5169792.html

相关文章

HALSTM32通用定时器+EXTI实现单击/双击/长按功能

HALSTM32通用定时器EXTI实现单击/双击/长按功能 ✨在使用USB功率计的时候&#xff0c;发现上面的一个按键实现多画面功能切换&#xff0c;于是探索了一下是如何实现的&#xff0c;将其实现的基本思路以及综合网上收集的相关实现方法&#xff0c;粗陋的整理了一下&#xff0c;将…

Angular 由一个bug说起之一:List / Grid的性能问题

在angular中&#xff0c;MatTable构建简单&#xff0c;使用范围广。但某些时候会出现卡顿 卡顿情景&#xff1a; 1&#xff1a;一次性请求太多的数据 2&#xff1a;一次性渲染太多数据&#xff0c;这会花费CPU很多时间 3&#xff1a;行内嵌套复杂的元素 4&#xff1a;使用过多的…

【Git】GUI图形化界面的使用SSH协议IDEA集成Git

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Git的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一. GUI图形化界面的使用 1.使用Gui​ 2.常…

平安人寿基于 Apache Doris 统一 OLAP 技术栈实践

导读&#xff1a;平安人寿作为保险行业领军企业&#xff0c;坚持技术创新&#xff0c;以数据业务双轮驱动的理念和更加开放的思路来应对不断增长的数据分析和应用需求&#xff1b;以深挖数据价值、保障业务用数效率为目标持续升级大数据产品体系。自 2022 年起平安人寿开始引入…

ARM 基础学习记录 / ARM 裸机编程

汇编程序调用 C 程序详情 在 C 程序和 ARM 汇编程序之间相互调用时必须遵守 ATPCS 规则&#xff0c;其是基于 ARM 指令集和 THUMB 指令集过程调用的规范&#xff0c;规定了调用函数如何传递参数&#xff0c;被调用函数如何获取参数&#xff0c;以何种方式传递函数返回值。 寄存…

工业RFID读写器品牌选哪个好,怎么选?

工业RFID读写器是产线自动化上的重要组成部分&#xff0c;利用无线射频识别技术&#xff0c;实现数据的非接触式传输和识别&#xff0c;使得生产线上的各种操作更加精准、高效&#xff0c;提高生产效率、降低成本、减少错误和增加灵活性。但是优秀的工业RFID品牌众多&#xff0…

7、线性数据结构-切片

切片slice 容器容量可变&#xff0c;所以长度不能定死长度可变&#xff0c;元素个数可变底层必须依赖数组&#xff0c;可以理解它依赖于顺序表&#xff0c;表现也像个可变容量和长度顺序表引用类型&#xff0c;和值类型有区别 定义切片 var s1 []int //长度、容量为0的切片&…

Linux 多线程控制详解

目录 多线程编临界资源访问 互斥锁 API 简述 初始化互斥量 互斥量加锁/解锁 互斥量加锁(非阻塞方式) 互斥量销毁 程序示例 多线程编执行顺序控制 信号量 API 简述 初始化信号量 信号量 P/V 操作 信号量申请(非阻塞方式) 信号量销毁 程序示例 条件变量 创建和销毁…