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下载文件

  • 通过链接下载

  • 获取文件流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/93953.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

几个nlp的小任务(多选问答)

@TOC 安装库 多选问答介绍 定义参数、导入加载函数 缓存数据集 随机选择一些数据展示 进行数据预处理部分(tokenizer) 调用t

STM32 CubeMX (H750)RGB屏幕 LTDC

STM32 CubeMX STM32 RGB888 LTDC STM32 CubeMX一、STM32 CubeMX 设置时钟树LTDC使能设置屏幕参数修改RGB888的GPIO 二、代码部分效果 RGB屏幕线束定义&#xff1a; 一、STM32 CubeMX 设置 时钟树 这里设置的时钟&#xff0c;关于刷新速度 举例子&#xff1a;LCD_CLK24MHz 时…

Java集合大揭秘:优雅管理数据的智慧舞台

集合&#xff08;Collections&#xff09;是一种用于存储、组织和操作数据的重要工具。它们提供了各种数据结构和算法&#xff0c;帮助开发者高效地处理不同类型的数据。本文将带您深入了解Java集合框架&#xff0c;探索其核心概念、常用接口和类&#xff0c;以及在实际应用中的…

搭建 Gitlab

当设置和配置 GitLab 实例并执行诸如创建群组、项目、用户和上传代码等操作时&#xff0c;涉及到多个步骤&#xff0c;每个步骤都有特定的目的。让我们逐步解释每个步骤并说明其背后的原因&#xff1a; 安装必需的软件&#xff1a; yum install -y curl policycoreutils-python…

Spring Boot+Atomikos进行多数据源的分布式事务管理详解和实例

文章目录 0.前言1.参考文档2.基础介绍3.步骤1. 添加依赖到你的pom.xml文件:2. 配置数据源及其对应的JPA实体管理器和事务管理器:3. Spring BootMyBatis集成Atomikos4. 在application.properties文件中配置数据源和JPA属性&#xff1a; 4.使用示例5.底层原理 0.前言 背景&#x…

【C++多线程】C++11互斥锁和条件变量实现生产者消费者模型

先看几个问题&#xff0c;第三个问题可以先看代码然后再理解 Q1&#xff1a;临界区在哪 A1: 队列中元素在「生产者生产&#xff08;push&#xff09;」和「消费者消费&#xff08;pop&#xff09;」时就是临界区 Q2&#xff1a;同步操作在哪 A2: 很显然&#xff0c;队列只有…

pytorch中torch.gather()简单理解

1.作用 从输入张量中按照指定维度进行索引采集操作&#xff0c;返回值是一个新的张量&#xff0c;形状与 index 张量相同&#xff0c;根据指定的索引从输入张量中采集对应的元素。 2.问题 该函数的主要问题主要在dim维度上&#xff0c;dim0 表示沿着第一个维度&#xff08;行…

windows server dfs复制 命名空间

环境准备 1、ad域控服务器 1台 2、文件服务器 2台&#xff0c;要加域 3、windows客户都1台&#xff0c;测试用 实现功能 负载均衡 &#xff08;文件服务器1&#xff1a;负责部门1&#xff0c;部门2的共享文件访问&#xff0c; 文件服务器2&#xff1a;负责部门3&#xff0c;…

【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_PATH_OPTIMIZER

文章目录 前言PIECEWISE_JERK_PATH_OPTIMIZER功能简介PIECEWISE_JERK_PATH_OPTIMIZER相关配置PIECEWISE_JERK_PATH_OPTIMIZER总体流程OptimizePathpiecewise_jerk_problem二次规划问题标准形式定义优化变量定义目标函数设计约束OptimizeFormulateProblem计算QP系数矩阵Calculat…

晨控CK-GW208与三菱L系列PLC以TCP通讯手册

晨控CK-GW208是一款支持标准工业以太网协议的IO-LINK主站网关&#xff0c;方便用户快速便捷的集成到 PLC 等控制系统中。 CK-GW208主站网关集成 8 路 IO-LINK 通信端口&#xff0c;采用即插即用模式&#xff0c;无需繁琐的配置&#xff0c;减轻现场安装调试的工作量。为了满足…

Java简便集成工作流(activiti),通用审批系统

前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;请假审批demo从流程绘制到审批结束实例。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;流行的前后端分离部署开发模式&#xff0c;快速开发平…

机器学习实战之模型的解释性:Scikit-Learn的SHAP和LIME库详解

引言&#xff1a;机器学习模型的“黑箱”困境 机器学习模型的崛起让我们惊叹不已&#xff01;不论是预测房价、识别图片中的猫狗&#xff0c;还是推荐给你喜欢的音乐&#xff0c;这些模型都表现得非常出色。但是&#xff0c;有没有想过&#xff0c;这些模型到底是如何做出这些决…

鸿蒙是一个怎么样的操作系统,真的是安卓套壳吗?

从鸿蒙项目正式推出以来&#xff0c;就一直有各自声音&#xff0c;有看好的&#xff0c;认为鸿蒙的出现将会成为一个智能终端设备操作系统的框架和平台&#xff0c;促进万物互联产业的繁荣发展&#xff1b;也有的人在唱衰&#xff0c;觉得鸿蒙发展不起来&#xff0c;甚至认为鸿…

【计算机基础】一文搞清楚什么是线程/进程/协程

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

3d Max因卡顿未保存?有什么保护文件和恢复操作呢?

大家在使用3d Max进行建模、渲染和动画制作的过程中&#xff0c;由于各种原因导致软件卡顿或崩溃是很常见的情况。 当卡顿发生时&#xff0c;如果之前的工作没有及时保存&#xff0c;可能会导致数据的丢失和时间的浪费。 一、先来看看保护文件 1、自动保存设置 3d Max提供了自…

机器学习中XGBoost算法调参技巧

本文将详细解释XGBoost中十个最常用超参数的介绍&#xff0c;功能和值范围&#xff0c;及如何使用Optuna进行超参数调优。 对于XGBoost来说&#xff0c;默认的超参数是可以正常运行的&#xff0c;但是如果你想获得最佳的效果&#xff0c;那么就需要自行调整一些超参数来匹配你…

C++——引用

引用的概念 引用不是新定义一个变量&#xff0c;而是给已存在的变量取一个别名&#xff0c;编译器不会因为引用变量而开辟内存空间&#xff0c;它和它引用的变量公用同一块空间。 相当于是给被引用的变量取了一个小名&#xff0c;但是相当于是同一个变量。 类型& 引用变…

ES 7.6 - APi基础操作篇

ES7.6-APi基础操作篇 前言相关知识索引相关创建索引查询索引查询所有索引删除索引关闭与打开索引关闭索引打开索引 冻结与解冻索引冻结索引解冻索引 映射相关创建映射查看映射新增字段映射 文档相关(CURD)新增文档根据ID查询修改文档全量覆盖根据ID选择性修改根据条件批量更新 …

手写数字识别之网络结构

目录 手写数字识别之网络结构 数据处理 经典的全连接神经网络 卷积神经网络 手写数字识别之网络结构 无论是牛顿第二定律任务&#xff0c;还是房价预测任务&#xff0c;输入特征和输出预测值之间的关系均可以使用“直线”刻画&#xff08;使用线性方程来表达&#xff09…

【IMX6ULL驱动开发学习】10.Linux I2C驱动实战:AT24C02驱动设计流程

前情回顾&#xff1a;【IMX6ULL驱动开发学习】09.Linux之I2C框架简介和驱动程序模板_阿龙还在写代码的博客-CSDN博客 目录 一、修改设备树&#xff08;设备树用来指定引脚资源&#xff09; 二、编写驱动 2.1 i2c_drv_read 2.2 i2c_drv_write 2.3 完整驱动程序 三、上机测…