JavaScript下载excel文件

news/2024/7/21 7:27:46 标签: javascript, excel

文章目录

  • 通过链接下载
    • a标签
    • 下载方法
    • 注意
  • 获取文件流
    • 请求体配置
    • 下载文件流
  • 总结


通过链接下载

a标签

对于已知地址的目标文件,前端可以使用 a标签 来直接下载,使用a标签下载使用到两个属性

  • download:下载文件名
  • href:目标文件下载链接
<a href="xxx/xxx/a.xlsx" download="a.xlsx">点击下载图片</a>

下载方法

使用时给触发的div绑定事件

  const download = async () => {
    const url = 'https://xx.com/xx/xx/a.xlsx'

    const fileName = 'a.xls'
    let a = document.createElement("a");
    a.download = fileName;
    a.href = url;
    document.body.append(a); // 修复firefox中无法触发click
    a.click();
    URL.revokeObjectURL(a.href);
    a.remove();
  }

注意

a标签的下载只能使用get请求,且无法在请求体中添加header信息

获取文件流

请求体配置

axios({
 			url: 'https://xxx.com/xxx/xxx',
 			method: 'get',
 			responseType: 'blob',
 		}).

请求方法可用post或者get,responseType一般需要设置为 blob 或者 arraybuffer

下载文件流

  • 封装下载函数
export const downloadFileByBlob = (fileData, fileName, ext = 'xlsx') => {
  const blob = new Blob([fileData], {
    type: docMimeTypes[ext],
  });
  console.log('fileData---',fileData)
  console.log('blob---',blob)
  const objectUrl = window.URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = objectUrl;
  link.setAttribute('download', fileName);
  document.body.appendChild(link);
  link.click();
  link.remove();
  window.URL.revokeObjectURL(objectUrl); // 文件下载后,释放blob对象
};
  • 下载函数使用
	  const res = await downLoadFile(param)
      console.log('downLoadFile-->', res)
      downloadFileByBlob(res.data, '下载文件') // 数据流是个Blob对象

打印如下👇
在这里插入图片描述

在这里插入图片描述

总结

JavaScript下载文件

  • 通过链接下载

  • 获取文件流


http://www.niftyadmin.cn/n/4963345.html

相关文章

【ubuntu】 20.04 网络连接器图标不显示、有线未托管、设置界面中没有“网络”选项等问题解决方案

问题 在工作中 Ubuntu 20.04 桌面版因挂机或不当操作&#xff0c;意外导致如下问题 1、 Ubuntu 网络连接图标消失 2、 有线未托管 上图中展示的是 有线 已连接 &#xff0c;故障的显示 有限 未托管 或其他字符 3、 ”设置“ 中缺少”网络“选项 上图是设置界面&#xff0c…

信息物理系统技术-学习笔记

一.信息物理系统的概念 信息物理系统&#xff08;cyber-physical system&#xff0c;CPS&#xff09;这一术语&#xff0c;最早由美国国家航空航天局于1992年提出。信息物理系统是控制系统&#xff0c;嵌入式系统的扩展与延伸&#xff0c;其涉及的相关底层理论技术源于对嵌入式…

layui表格事件分析实例

在 layui 的表格组件中&#xff0c;区分表头事件和行内事件是通过事件类型&#xff08;toolbar 和 tool&#xff09;以及 lay-filter 值来实现的。 我们有一个表格&#xff0c;其中有一个工具栏按钮和操作按钮。我们将使用 layui 的 table 组件来处理这些事件。 HTML 结构&…

微服务 Eureka

Eureka Eureka是Netflix开源的一个用于构建基于微服务架构的服务发现和注册中心技术。在微服务架构中&#xff0c;系统被拆分成多个小型、自治的服务&#xff0c;每个服务负责特定的业务功能。这些服务需要能够相互发现和通信&#xff0c;这就是Eureka所提供的功能。 Eureka主…

Ubuntu18.04 交叉编译openssl-1.1.1

源码下载地址&#xff1a; openssl 此处使用的是openssl-1.1.1-pre5.tar.gz 解压: $tar -zxvf openssl-1.1.1-pre5.tar.gz $cd openssl-1.1.1-pre5/ 执行配置生成Makefile&#xff1a; $./config no-asm shared --prefix$PWD/__install 或者 $./config no-asm shared no-…

webrtc在js里的实现

WebRTC&#xff08;Web Real-Time Communication&#xff09;是一项开放的浏览器技术&#xff0c;它允许浏览器之间建立点对点&#xff08;peer-to-peer&#xff09;连接&#xff0c;实现音频、视频、文件的传输和通信。它的实现一般需要使用JavaScript语言。 在JavaScript中&…

记录每日LeetCode 2236. 判断根结点是否等于子结点之和 Java实现

题目描述&#xff1a; 给你一个 二叉树 的根结点 root&#xff0c;该二叉树由恰好 3 个结点组成&#xff1a;根结点、左子结点和右子结点。 如果根结点值等于两个子结点值之和&#xff0c;返回 true &#xff0c;否则返回 false 。 初始代码&#xff1a; /*** Definition f…

基于Jenkins自动打包并部署docker、PHP环境,ansible部署-------从小白到大神之路之学习运维第86天

第四阶段提升 时 间&#xff1a;2023年8月23日 参加人&#xff1a;全班人员 内 容&#xff1a; 基于Jenkins部署docker、PHP环境 目录 一、环境部署 &#xff08;一&#xff09;实验环境&#xff0c;服务器设置 &#xff08;二&#xff09;所有主机关闭防火墙和selinu…