vue导出excel表格-后端返回blob流文件,前端导出

本文介绍了前端导出Excel的方法,重点讲解了通过后端返回流进行文件导出的过程。包括如何正确设置响应类型以避免文件损坏,以及前端如何处理接收到的流数据以确保文件可以正常打开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目遇到了导出,记录一下。

我们项目导出有俩种一种后端返回流前端处理,还有就是后端直接处理完成给一个接口(后端处理比较好一点不会造成后端xls越来越多)

流文件导出需要注意

需要加responseType: 'blob',否则文件会损坏

excel流文件一定要在请求的时候加上响应类型字段,也就是:responseType: 'blob'或者,responseType: 'arraybuffer' ,否则下载出来的excel文件就会损坏,就会打不开。损坏文件如下图所示:

怎么加responseType: 'blob' 或者 responseType: 'arraybuffer'

 我们项目有封装的API前缀所以这么加。 没有封装的话就是在axios发请求时候添加 大概是这样的

 前端处理文件名字接收等等

 

必须要声明流文件且得到的结果用流文件转一下,这样的话,就不会出现excel文件损坏、或者乱码的情况。

  // 导出按钮的回调函数中
  async ExcelData() {
      // 准备参数
      let params = xxx
      const res = await this.$api.export(params);
      const blob = new Blob([res]);  // 把得到的结果用流对象转一下
      var downloadElement = document.createElement("a"); //创建一个<a></a>标签
      downloadElement.href = URL.createObjectURL(blob); // 将流文件写入a标签的href属性值
      downloadElement.download = "文件名.xlsx"; //设置文件名
      downloadElement.style.display = "none";  // 藏起来a标签
      downloadElement.body.appendChild(a); // 将a标签追加到文档对象中
      downloadElement.click(); // 模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
      downloadElement.remove(); // 一次性的,用完就删除a标签
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值