vue3导出excel

const mimeMap = {
      xlsx: 'application/vnd.ms-excel',
      zip: 'application/zip'
    };
    const resolveBlob = (res: any, mimeType: any) => {
      // 创建a标签,并处理二级制数据
      const aLink = document.createElement('a');
      const blob = new Blob([res.data], { type: mimeType });

      // 设置下载文件名称,使用正则取出名称
      const pat = new RegExp('filename=([^;]+\\.[^\\.;]+)');
      let contentDisposition = '';
      //浏览器问题可能会出现 content-disposition 匹配不到
      if (res.headers['content-disposition']) contentDisposition = res.headers['content-disposition'];
      if (res.headers['Content-Disposition']) contentDisposition = res.headers['Content-Disposition'];
      console.log(contentDisposition, 'contentDisposition');
      const result = pat.exec(contentDisposition);
      console.log(result);
      let fileName = result && result[1];
      console.log(fileName);
      // 如果Content-Disposition没有暴露,给文件一个默认名字
      if (fileName == null) fileName = '商品规格描述.xlsx';

      // 生成下载链接
      const URL = window.URL || window.webkitURL;
      aLink.href = URL.createObjectURL(blob);
      aLink.setAttribute('download', fileName);
      // 下载
      document.body.appendChild(aLink);
      aLink.click();
      // 释放URL对象
      window.URL.revokeObjectURL(aLink.href);
      document.body.removeChild(aLink);
    };
    const getExportXlsx = (page: number | string, limit: number) => {
      $axios
        .get($api.exportXlsx, {
          params: { page: page, limit: limit },
          responseType: 'blob'
        })
        .then((res: any) => {
          console.log(res, '导出文件打印res');
          if (res.status === 200) {
            resolveBlob(res, mimeMap);
          } else {
            $message.warn('下载文件失败!');
          }
        });
    };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值