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

vue3+axios请求导出excel文件

 在Vue 3中使用axios请求导出Excel文件,可以发送一个GET或POST请求,并设置响应类型为blob或arraybuffer,然后使用new Blob()构造函数创建一个二进制文件,最后使用URL.createObjectURL()生成一个可以下载的链接。

先看代码

import axios from 'axios';// 导出Excel文件的函数
export function exportExcel() {const url = '/api/export'; // 替换为你的接口地址axios({method: 'get',url: url,responseType: 'blob', // 重要!设置响应类型为blob或arraybuffer}).then(response => {// 创建一个新的Blob对象,设置文件类型
//response.data是后端返回的文件流数据,如果response是文件流就直接用response,根据后端返回实际情况而定const blob = new Blob([response.data], { type: 'application/vnd.ms-excel;charset=UTF-8' });// 创建一个指向新Blob对象的URLconst url = window.URL.createObjectURL(blob);// 创建一个a标签用于下载const link = document.createElement('a');link.href = url;link.setAttribute('download', 'export.xls'); // 设置下载文件名document.body.appendChild(link);// 触发下载link.click();// 清理并移除元素和对象URLdocument.body.removeChild(link);window.URL.revokeObjectURL(url);}).catch(error => {console.error('导出Excel失败:', error);});
}

后端返回的数据是一个二进制数据流,可以console.log(response)打印一下响应数据,查看数据是不是Blob类型,如果不是的话可能会出现乱码、undefined等情况

以arraybuffer类型为准的post请求,以下是后端返回数据截图,这里response的值是文件流

后端返回的数据

 响应拦截器获取到的数据

 打印的response数据

 如果前端得到的数据结构跟上面截图一样,大概是没有问题的,如果出现中文乱码、undefined等情况,可以检查一下是否在请求时设置了响应类型,blob和arraybuffer还是有区别的,blob不行就试试arraybuffer

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏
  • Jboss 漏洞合集
  • uniapp结合uview-ui创建项目关键步骤一步一图教程
  • 记忆化搜索——1
  • CSDN 僵尸粉 机器人
  • 学习笔记 韩顺平 零基础30天学会Java(2024.8.6)
  • 【Material-UI】File Upload Button 组件详解
  • 如何判断IP地址属于住宅IP还是机房IP
  • C语言典型例题27
  • 【链表OJ】常见面试题 2
  • MySQL主从服务器
  • 书生大模型学习笔记3 - 书生开源大模型链路体系
  • Java语言程序设计——篇十一(6)
  • 密码学基础-身份认证
  • PostgreSQL 15
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 345-反转字符串中的元音字母
  • Angular Elements 及其运作原理
  • CSS 三角实现
  • extjs4学习之配置
  • Git初体验
  • java中的hashCode
  • JS数组方法汇总
  • Linux CTF 逆向入门
  • Linux后台研发超实用命令总结
  • node学习系列之简单文件上传
  • Ruby 2.x 源代码分析:扩展 概述
  • 当SetTimeout遇到了字符串
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 记一次删除Git记录中的大文件的过程
  • 技术:超级实用的电脑小技巧
  • 网络应用优化——时延与带宽
  • 学习JavaScript数据结构与算法 — 树
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • (动态规划)5. 最长回文子串 java解决
  • (二)换源+apt-get基础配置+搜狗拼音
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (一)认识微服务
  • (已解决)什么是vue导航守卫
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .form文件_SSM框架文件上传篇
  • .Net Core中Quartz的使用方法
  • .net 发送邮件
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • [ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题
  • [012-1].第12节:Mysql的配置文件的使用
  • [20170705]diff比较执行结果的内容.txt
  • [2023年]-hadoop面试真题(一)
  • [AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性
  • [Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解
  • [AutoSAR系列] 1.3 AutoSar 架构