#vue3 实现前端下载excel文件模板功能

一、需求:

前端无需通过后端接口,即可实现模板下载功能。

通过构造一个 JSON 对象,使用前端常用的第三方库 xlsx,可以直接将该 JSON 对象转换成 Excel 文件,让用户下载模板

二、效果:

三、源码如下:

npm install xlsx
<template><div class="download"><el-button type="warning" @click="downloadTemplate">下载模板</el-button></div>
</template><script setup>
import * as XLSX from 'xlsx';const writeFileAsync = (workbook, filename, options) => {return new Promise((resolve, reject) => {try {XLSX.writeFile(workbook, filename, options);resolve();} catch (error) {reject(error);}});
};const downloadTemplate = async () => {// 构造jsonconst json = [{序号: '',名称: '',日期: '',地址: '',年龄: '',类型: '',分数: ''}];// 将json数据转换成excel文件const worksheet = XLSX.utils.json_to_sheet(json);const workbook = XLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');try {// 将excel 文件保存为blobconst blob = await writeFileAsync(workbook, '模板.xlsx', { bookType: 'xlsx', mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });if (blob instanceof Blob) {// 创建下载链接const url = window.URL.createObjectURL(blob);// 创建隐藏的a标签,设置下载链接并触发点击const a = document.createElement('a');a.href = url;a.download = 'excel.template.xlsx';document.body.appendChild(a);a.click();// 释放对象urlwindow.URL.revokeObjectURL(url);// 等待5秒后关闭模态框setTimeout(() => {document.body.removeChild(a);}, 5000);} else {throw new Error('Invalid Blob');}} catch (error) {//console.error('Error creating object URL:', error);}
};</script><style lang="scss" scoped>
.download{padding: 20px;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MES智能制造系统,定制智造工厂的“大脑”,提升生产力智慧之选

制造执行系统&#xff08;MES&#xff09;是专为制造企业设计的执行管理软件&#xff0c;用于管理整个工厂的生产过程。随着智能制造的推动&#xff0c;信息技术水平的提升对于实现智能工厂至关重要在数字化技术不断进步和发展的背景下&#xff0c;MES系统作为面向制造企业车间…

【JavaEE进阶】 Spring Boot⽇志

文章目录 &#x1f38b;关于日志&#x1f6a9;为什么要学习⽇志&#x1f6a9;⽇志的⽤途&#x1f6a9;日志的简单使用 &#x1f384;打印⽇志&#x1f6a9;程序中得到⽇志对象&#x1f6a9;使⽤⽇志对象打印⽇志 &#x1f38d;⽇志格式的说明&#x1f6a9;⽇志级别的作用&#…

实时asr新服务串讲

1.背景及现状 工程方面目前语音相关服务存在大量重复代码&#xff0c;逻辑复杂&#xff0c;文档缺失&#xff0c;并且某些细节设计不合理。基于目前现状&#xff0c;代码业务与功能耦合严重&#xff0c;迭代困难&#xff0c;将来增加新的能力也需要改动音频数据相关代码&#x…

Allegro如何导入芯片的Pin Delay?

Allegro在做等长时,需要导入芯片的Pin Delay才能做真正的等长。因为有些芯片内部的引脚本身就是不等长的,例如海思的部分芯片。 那么如何导入芯片的Pin Delay呢? 1、打开约束管理器,点击Properties(属性)→Component(器件)→Pin Properties→General。 在右栏找到芯片U1,…

实时嵌入式Linux设备基准测试快速入门4测试和测量

本章将介绍主要测试方案及其具体配置和结果。在介绍实际测量结果之前&#xff0c;将尽可能总结被测设备的特性。最后&#xff0c;将对结果进行分析&#xff0c;并概述由于高速缓存一致性问题造成的延迟方面的主要瓶颈&#xff0c;提出减少延迟的解决方案&#xff0c;并解释用于…

Duplicate object key json(520)

亲爱的码友&#xff0c;当你看到这个错误 请查看一下你的json文件内容的关键词是不是重复了 举个栗子&#x1f330; 往下翻翻&#xff1a; 删一个就行&#xff01;&#xff01;&#xff01; 被自己傻哭了吧&#x1f923;&#x1f923;&#x1f923;

js实现九九乘法表

效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script type"text/javascript">// 输出乘法口诀表// document.write () 空格 " " 换行…

Flowable 生成流程图

/*** 生成流程图** param processId 任务ID*/ RequestMapping("/diagram/{processId}") public void genProcessDiagram(HttpServletResponse response,PathVariable("processId") String processId) {InputStream inputStream flowTaskService.diagram(p…

HubSpot整合小红书,MessageBox助力多系统融合

在当今数字化潮流中&#xff0c;HubSpot与小红书的强大联盟成为了数字化市场的亮点。今天运营坛将深入解析它们的合作策略&#xff0c;聚焦于MessageBox在整合中的关键角色&#xff0c;以及它在推动HubSpot和小红书整合方面的关键作用。 HubSpot与小红书&#xff1a;数字化市场…

【Linux驱动】休眠与唤醒 | POLL机制 | 异步通知 | 阻塞与非阻塞 | 软件定时器

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux驱动》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f3d3;休眠与唤醒&#x1f3f8;内核函数&#x1f3f8;驱动框架及编程 &#x1f3d3;…

代码随想录算法训练DAY25|回溯2

算法训练DAY25|回溯2 216.组合总和III 力扣题目链接 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xff0c;并且每种组合中不存在重复的数字。 说明&#xff1a; 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n …

本地部署轻量级web开发框架Flask并实现无公网ip远程访问开发界面

文章目录 1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 本篇文章主要讲解如何在本地安装Flask&#xff0c;以及如何将其web界面发布到公网进行远程访问。 Flask是目前十分流行的web框架&#xff0c;采用Python编程语…

Linux操作系统——理解软硬链接

1.引言 通过我们前面理解文件系统的基础上&#xff0c;我们来理解软硬链接&#xff0c;在我们学习文件的时候我们会见到各种链接文件&#xff0c;其中链接文件分为两种&#xff0c;一种叫软连接&#xff0c;一种叫硬链接。 下面我们新建一个log文件&#xff0c;要对log这个文…

【SpringCloud Alibaba】 介绍及微服务模块搭建

文章目录 SpringCloud Alibaba 介绍主要功能组件 微服务环境搭建案例准备技术选型模块设计微服务调用 创建父工程创建基础模块1、创建 shop-common 模块2、创建实体类 创建用户微服务1、创建pom.xml2、编写主类3、创建配置文件 创建商品微服务1、创建一个名为 shop-product 的模…

理解PCIE设备透传

PCIE设备透传解决的是使虚拟机直接访问PCIE设备的技术&#xff0c;通常情况下&#xff0c;为了使虚拟机能够访问Hypervisor上的资源&#xff0c;QEMU&#xff0c;KVMTOOL等虚拟机工具提供了"trap and emulate"&#xff0c; Virtio半虚拟化等机制实现。但是这些实现都…

websocket实现聊天室(vue2 + node)

通过websocket实现简单的聊天室功能 需求分析如图&#xff1a; 搭建的项目结构如图&#xff1a; 前端步骤&#xff1a; vue create socket_demo (创建项目)views下面建立Home , Login组件路由里面配置路径Home组件内部开启websocket连接 前端相关组件代码&#xff1a; Login…

【操作系统】实验二 Proc文件系统

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

使用Rancher管理Kubernetes集群

部署前规划 整个部署包括2个部分&#xff0c;一是管理集群部署&#xff0c;二是k8s集群部署。管理集群功能主要提供web界面方式管理k8s集群。正常情况&#xff0c;管理集群3个节点即可&#xff0c;k8s集群至少3个。本文以3节点管理集群&#xff0c;3节点k8s集群为例 说明部署过…

vivado JTAG链、连接、IP关联规则

JTAG链 这列出了定义板上可用的不同JTAG链。每个链都列在下面<jtag_chain>以及链的名称&#xff0c;以及定义名称和链中组件的位置&#xff1a; <jtag_chains> <jtag_chain name"chain1"> <position name"0" component"part0…

ELK 分离式日志(1)

目录 一.ELK组件 ElasticSearch&#xff1a; Kiabana&#xff1a; Logstash&#xff1a; 可以添加的其它组件&#xff1a; ELK 的工作原理&#xff1a; 二.部署ELK 节点都设置Java环境: 每台都可以部署 Elasticsearch 软件&#xff1a; 修改elasticsearch主配置文件&…