当前位置: 首页 > news >正文

【vue】下载导出excel

下载导出excel

首先使用的tdesign框架,要导出后端返回的数据流excel

遇见的问题

下载的文件,里边的内容是undefined

观察报错

一看就知道并不是后端的报错,后端不可能是undefined
在强烈的好奇心驱动下,看了下接口,使用apifox调用后,返回的是一个文件流,也是个正常的,至少是有自定义的标题的。所以问题直指前端。

问题解决

经过查看前端代码发现,前端代码如下
这里输出了data,但是拿到的是undefined,所以导致下载的有问题了。
这里的问题是自己框架封装的问题。因为统一的返回格式是

{code:0, data:xxx, msg:''}

所以post请求做了一次封装,业务方调用的时候,如果code是0, 则直接把data返回,并不返回code和msg。
但是因为接口返回的是在请求的response里写的流,所以导致这里的data是undefined。

const handleExport = async () => {try {// 发起导出exportLoading.value = true;const data = await api.exportdeleteCrew({ idLongList: exportIds.value });console.log(data);download.excel(data, 'xxx.xls');} finally {exportLoading.value = false;}
};

知道原因了,就去解决问题。
解决方案两种
第一种,把统一封装的增加一个参数,就返回原始数据即可。这里不具体写了。
第二种,经过度娘,发现了一个fetch的东西。就是我想要的按照文件流来下载
talk is cheap, show me the code

const handleExport = (url) => {fetch(url, {method: 'POST',headers: {Authorization: 'Bearer xxx','Tenant-Id': 'xxx','Content-Type': 'application/json',},body: JSON.stringify({ idLongList: [] }),}).then((res) => res.blob()).then((data) => {const blobUrl = window.URL.createObjectURL(data);api.downloadTest(blobUrl, 'test.xls');});
};

这里有个点需要注意的,就是那个body,必须stringify才能被后台接口接收到,否则后台拿到的就是[Object object]

结语

如果哪位大佬发现了解释的不对的,还望不吝赐教。十分感谢
在这里插入图片描述

http://www.lryc.cn/news/232880.html

相关文章:

  • c#正则表达式
  • C#密封类和密封成员
  • 三、Eureka注册中心
  • java线程池动态调节功能实现
  • KT148A语音芯片使用串口uart本控制的完整说明_包含硬件和指令举例
  • kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
  • wireshark打开tcpdump抓的包 vwr: Invalid data length runs past the end of the record
  • Python爬虫教程:从入门到实战
  • C++实现高频设计模式
  • opencv(2): 视频采集和录制
  • SpringBoot+EasyExcel设置excel样式
  • 自定义View之Measure(二)
  • SQL注入学习--GTFHub(布尔盲注+时间盲注+MySQL结构)
  • Kubernetes学习-概念2
  • StyleGAN:彻底改变生成对抗网络的艺术
  • 黑马程序员微服务第四天课程 分布式搜索引擎1
  • 向量以及矩阵
  • 9.程序的机器级代码表示,CISC和RISC
  • 《硅基物语.AI写作高手:从零开始用ChatGPT学会写作》《从零开始读懂相对论》
  • 【2016年数据结构真题】
  • 创作者等级终于升到4级了
  • Games104现代游戏引擎笔记 面向数据编程与任务系统
  • 系列三、GC垃圾回收【总体概览】
  • 无线WiFi安全渗透与攻防(N.3)WPA破解-创建Hash-table加速并用Cowpatty破解
  • golang 动态库
  • Python的2042小游戏及其详解
  • 怎么去掉邮件内容中的回车符
  • Git-概念与架构
  • android 数独小游戏 经典数独·休闲益智
  • GAT里面的sofamax函数的实现: