vue导出

首先说说导出的思路:
导出分为两种情况:

  1. get请求
  2. post请求

post请求又分为两种情况:

  1. 后端返回流文件
  2. 后端返回数据

get请求:

exportEvent(){
  let timeSlot = this.form.timeSlot;
  let serviceName = this.form.serviceName;
  //测试环境
  //let url = `http://192.168.30.14:8888/add/v1/test/export?timeSlot=${timeSlot}&serviceId=${serviceId}`;
  //自动获取环境的地址
  let url = `${process.env.VUE_APP_BASE_API}/test/export??timeSlot=${timeSlot}&serviceName=${serviceName}`;
  var $a = document.createElement('a');
  $a.setAttribute("href", url);
  $a.setAttribute("download", "");

  //兼容火狐
  //a.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));
  var evObj = document.createEvent('MouseEvents');
  evObj.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null);
  $a.dispatchEvent(evObj);

  //导出功能兼容FireFox的代码
  var explorer = window.navigator.userAgent;
  if (explorer.indexOf("Firefox") >= 0) {
    //alert('Firefox');
    var downloadLink = document.createElement("a");
    downloadLink.href = url;
    //downloadLink.download = '统计.xls';
    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
  }
}

post请求:
1.后端返回json数据,前端自己做下载

exportTxt(this.bid).then(res => {
  this.exportRaw("result.txt", JSON.stringify(res));
});


//导出文件
exportRaw(name, data) {
  var urlObject = window.URL || window.webkitURL || window;
  var export_blob = new Blob([data]);
  var save_link = document.createElementNS(
    "http://www.w3.org/1999/xhtml",
    "a"
  );
  save_link.href = urlObject.createObjectURL(export_blob);
  save_link.download = name;
  this.fakeClick(save_link);
}

2.后端返回流文件,此时前端需要解析

exportExcel: function(form) {
     return axios({ // 用axios发送post请求
         method: ‘post‘,
         url: ‘/serviceTime/exportData‘, // 请求地址
         data: form, // 参数
         responseType: ‘blob‘, // 表明返回服务器返回的数据类型
         headers: {
             ‘Content-Type‘: ‘application/json‘
         }
     })
 }
const params = {
    test: ‘111
}
exportExcel(params).then(res => { // 处理返回的文件流
    const blob = new Blob([res]);
    const fileName = ‘统计.xlsx‘;
    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);
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值