当前位置: 首页 > 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

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

相关文章:

  • LLM与NLP
  • js 判断是否为回文串
  • 多重背包c++
  • kernel input事件测试程序
  • gd32 i2c 中断 主机从机双向通信例程
  • 程序员在AI时代:重塑核心竞争力,共舞智能未来
  • apex发送邮件中显示饼状图和条形图
  • 【HarmonyOS NEXT星河版开发学习】小型测试案例07-弹性布局小练习
  • Sparksql array相关函数
  • 软件测试学习笔记
  • Centos 8系统ext4文件系统类型进行扩容缩容 (LVM)
  • 常考常考高频率
  • Linux项目环境的搭建 (Red hat 9.0Linux操作系统)
  • Study--Oracle-08-ORACLE数据备份与恢复(一)
  • FreeIPA安装
  • mysql数据库:SQL语言基础和基本查询
  • strimzi operator 部署kafka集群(可外部访问)
  • 【网络安全】探索AI 聊天机器人工作流程实现RCE
  • 虚拟DOM、Vue渲染流程
  • centos7 启动python后端服务与停止服务的sh脚本
  • 访问网站显示不安全怎么办?
  • Scala与集合框架:高效数据处理的利器
  • 基于 JWT 的模拟登录爬取实战
  • 力扣(2024.08.06)
  • 如何快速入门 PyTorch ?
  • Qt 快速部署环境(windeployqt.exe)
  • 白骑士的PyCharm教学实战项目篇 4.2 数据分析与可视化
  • el-form-item,label在上方显示,输入框在下方展示
  • Centos7.9操作系统kdump crash文件vmcore未生成问题
  • 找不到符号 javax.servlet.WriteListener