前端将请求到的文件流如何导出excel,pdf

export function exportOps(params) {
  return instance({
    url: `/OpsRecord/export`,
    params: params,
    method: "get",
    headers: {
      "Content-Type": "application/json; charset=utf-8",
    },
    responseType: "blob",
    baseURL: `/netcare/`
  });
}//接口请求一定要设置类型responseType: "blob",

 当导出为excel表时经常excel打不开,说文件名或扩展名不对,这时从disposition里面拿是解决办法

exportHandle() {

      var type=this.viewformData.type=='excel'?`application/vnd.ms-excel;charset=utf-8`:`application/vnd.ms-pdf`

      this.$api.exportOps(this.viewformData).then((res) => {

        const disposition = res.headers['content-disposition'];

        let fileName = '导出文件.xlsx';

        if (disposition) {

          const utf8Filename = disposition.match(/filename\*=(?:UTF-\d['"]*)?([^;"'\n]*)/i)?.[1];

          if (utf8Filename) {

            fileName = decodeURIComponent(utf8Filename);

          } else {

            const defaultFilename = disposition.match(/filename=["']?([^;"'\n]*)/i)?.[1];

            if (defaultFilename) fileName = defaultFilename;

          }

        }

        if (res.status==200) {

          var blob = new Blob([res.data], {

            type:type,

          });

          if (window.navigator.msSaveOrOpenBlob) {

            navigator.msSaveBlob(blob, fileName);

          } else {

            var downloadElement = document.createElement("a");

            var href = window.URL.createObjectURL(blob); //创建下载的链接

            downloadElement.href = href;

            downloadElement.download = fileName; //下载后文件名

            document.body.appendChild(downloadElement);

            downloadElement.click(); //点击下载

            document.body.removeChild(downloadElement); //下载完成移除元素

            window.URL.revokeObjectURL(href); //释放掉blob对象

          }

          this.$message({

            message: "导出成功",

            type: "success",

          });

        } else {

          this.$message({

            message: "导出失败",

            type: "error",

          });

        }

        this.dialogPlanVisible = false

        this.viewformData={//导出

        type:'excel',

        customerName:'',

        responseType:'',

        eventTypes:'',

        startTime: '',

        endTime: '',

      }




      }).catch(() => {})

    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值