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

ant design vue+vue3+ts+xlsx实现表格导出问excel文件(带自定义表头)~

1、首先默认你已安装ant design vue、xlsx 库、及file-saver。

2、导入:

import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';

注:这里的xlsx导入不能这么写,否则会报错,原因是版本不一致,语法向上兼容。

import XLSX from 'xlsx';

3、完整代码。

<a-button class="btn" type="primary" @click="exportData">导出</a-button><a-table :dataSource="dataList" :columns="columns" :scroll="{ x: '100%' }"><template #bodyCell="{ column }"><template v-if="column.key === 'canStop'"><a style="color: blue">停用</a></template></template>
</a-table>import XLSX from 'xlsx';
import { saveAs } from 'file-saver';const dataList = ref([{id: 1, //计划idtype: 1, //分配类型(1:指定人指定车; 2:指定人平均分车)status: 1, //状态staffCount: 1, //导入员工人数合计carCount: 1, //导入车量数合计countPerStaff: 1, //预计每位员工可分配firstAllocateTime: '2024-08-29 16:16:11', //首次分配时间modifiedPerson: '张三', //操作人modifiedTime: '2024-08-29 16:16:11', //操作时间canStop: true, //是否允许停止(true:允许; false: 不允许)},]);// 导出const exportData = () => {// 定义表头const header = ['序号','分配形式','状态','导入员工人数合计','导入车辆数合计','预计每位员工可分配','首次分配时间','操作人','操作时间','操作',];// 将表头和表格数据合并为一个二维数组const dataWithHeader = [header, ...dataList.value.map((row) => Object.values(row))];//定义可选参数跳过表头(默认生成的数字)const options = {skipHeader: true,};// 将表格数据转换为工作表对象const ws = XLSX.utils.json_to_sheet(dataWithHeader, options);// 创建一个新的工作簿并将工作表添加到其中const wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');// 将工作簿转换为二进制数据并保存为文件const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'table-data.xlsx');};

 效果:

优化后:

 

注意:

XLSX.utils.json_to_sheet() 函数用于将 JSON 数据转换为一个表格,并将其写入到一个新的或现有的工作表中。这个函数需要传入以下参数:

  1. data(必需):一个包含数据的 JSON 对象,通常是由 JSON.parse() 解析的 JSON 字符串。
  2. options(可选):一个配置对象,用于自定义转换过程。它可以包含以下属性:
    • header:一个布尔值,表示是否在表格中包含表头。默认为 true
    • skipHeader:一个布尔值,表示是否跳过表头。默认为 false
    • origin:一个字符串,表示表格左上角单元格的位置。默认为 'A1'
    • schema:一个数组,表示表格的结构。每个元素是一个对象,包含 key(列名)和 width(列宽)。
    • dateNF:一个字符串,表示日期格式。默认为 'yyyy-mm-dd'
    • cellStyles:一个布尔值,表示是否应用单元格样式。默认为 false
    • cellDates:一个布尔值,表示是否将数字转换为日期格式。默认为 false
    • empty:一个字符串,表示空单元格的值。默认为空字符串。
    • bookType:一个字符串,表示工作簿类型。可以是 'xlsx'、'xlsm'、'xlsb' 或 'xls'。默认为 'xlsx'。
    • sheet:一个字符串,表示要写入的工作表名称。如果不存在,则会创建一个新的工作表。
    • write2excelOpts:一个对象,包含传递给 write2excel() 方法的其他选项。

 

相关文章:

ant design vue+vue3+ts+xlsx实现表格导出问excel文件(带自定义表头)~

1、首先默认你已安装ant design vue、xlsx 库、及file-saver。 2、导入&#xff1a; import * as XLSX from xlsx; import { saveAs } from file-saver; 注&#xff1a;这里的xlsx导入不能这么写&#xff0c;否则会报错&#xff0c;原因是版本不一致&#xff0c;语法向上兼容…...

基于Python爬虫的淘宝服装数据分析项目

文章目录 一.项目介绍二.爬虫代码代码分析 三. 数据处理四. 数据可视化 一.项目介绍 该项目是基于Python爬虫的淘宝服装数据分析项目&#xff0c;以致于帮助商家了解当前服装市场的需求&#xff0c;制定更加精确的营销策略。首先&#xff0c;需要爬取淘宝中关于服装的大量数据…...

Tomcat控制台乱码问题已解决(2024/9/7

步骤很详细&#xff0c;直接上教程 问题复现&#xff1a; 情景一 情景二 原因简述 这是由于编码不一致引起的&#xff0c;Tomcat启动后默认编码UTF-8&#xff0c;而Windows的默认编码是GBK。因此你想让其不乱码&#xff0c;只需配置conf\logging.properties的编码格式即可 解决…...

vue通过html2canvas+jspdf生成PDF问题全解(水印,分页,截断,多页,黑屏,空白,附源码)

前端导出PDF的方法不多&#xff0c;常见的就是利用canvas画布渲染&#xff0c;再结合jspdf导出PDF文件&#xff0c;代码也不复杂&#xff0c;网上的代码基本都可以拿来即用。 如果不是特别追求完美的情况下&#xff0c;或者导出PDF内容单页的话&#xff0c;那么基本上也就满足业…...

服务器数据恢复—Raid磁盘阵列故障类型和常见故障原因

出于尽可能避免数据灾难的设计初衷&#xff0c;RAID解决了3个问题&#xff1a;容量问题、IO性能问题、存储安全(冗余)问题。从数据恢复的角度讨论RAID的存储安全问题。 常见的起到存储安全作用的RAID方案有RAID1、RAID5及其变形。基本设计思路是相似的&#xff1a;当部分数据异…...

C++字符串中的string类操作

愿我如星君如月&#xff0c;夜夜流光相皎洁。 ——《车逍遥篇》【宋】范成大 目录 正文&#xff1a; 主要特点&#xff1a; 基本操作&#xff1a; 代码演示&#xff1a; 总结&#xff1a; 今天我们接着上次的章节继续&#xff0c;这次我们来说一个为解决上个方法的缺陷而诞…...

axios设置responseType: ‘blob‘,获取接口返回的错误信息

在axios的请求中当后端接口返回的是文件流的情况下&#xff0c;我们需要在请求参数里面设置responseType: blob&#xff0c;如果接口报错&#xff0c;默认前端无法获取后端返回的错误信息。 解决方法&#xff1a;通过FileReader获取错误信息 async handleFetch() {const res aw…...

【C++】:模板初阶—函数模板|类模板

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山岗&#xff01; &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 本文参考博客&#xff1a;一同感受C模版的所带来的魅力 一、泛型编程思想 首先…...

Java 远程执行服务器上的命令

在Java中使用JSch库执行远程服务器上的命令是一种常见的做法&#xff0c;特别是在需要自动化运维任务或者进行远程文件操作时。以下是基于Codekru网站提供的示例&#xff0c;展示如何使用JSch库在远程服务器上执行单个或多个命令。 准备工作 首先&#xff0c;确保您的项目中已…...

3DMax基础- 创建基础模型

目录 零.软件简介 一. 标准基本型 长方体 圆锥体 球体 圆柱体 管状体 圆环 四棱锥 茶壶 平面​编辑 加强型文本 二. 扩展基本体 三.复合对象 变形 散布 一致 连接 图形合并 布尔 并集 合并 交集 差集 四.门和窗 门 窗 植物,栏杆,墙 零.软件简介 3…...

JavaScript 知识点(从基础到进阶)

&#x1f30f;个人博客主页&#xff1a;心.c ​ 前言&#xff1a;JavaScript已经学完了&#xff0c;和大家分享一下我的笔记&#xff0c;希望大家可以有所收获&#xff0c;花不多说&#xff0c;开干&#xff01;&#xff01;&#xff01; &#x1f525;&#x1f525;&#x1f5…...

计算机网络知识点复习——TCP协议的三次握手与四次挥手(连接与释放)

TCP协议的三次握手与四次挥手&#xff08;连接与释放&#xff09; 一、前言二、简单的知识准备1. TCP协议的主要特点2. TCP报文段 三、TCP连接的建立&#xff08;三次握手&#xff09;四、TCP连接的释放&#xff08;四次挥手&#xff09;五、TCP连接与释放的总结六、结束语 一、…...

SpringDataJPA系列(7)Jackson注解在实体中应用

SpringDataJPA系列(7)Jackson注解在实体中应用 常用的Jackson注解 Springboot中默认集成的是Jackson&#xff0c;我们可以在jackson依赖包下看到Jackson有多个注解 一般常用的有下面这些&#xff1a; 一个实体的示例 测试方法如下&#xff1a; 按照上述图片中的序号做个简…...

【Spring Boot 3】【Web】统一封装 HTTP 响应体

【Spring Boot 3】【Web】统一封装 HTTP 响应体 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总…...

Linux如何做ssh反向代理

SSH反向代理是一种通过SSH协议实现的安全远程访问方式&#xff0c;它允许客户端通过SSH连接到一台具有公网IP的代理服务器&#xff0c;然后这台代理服务器再将请求转发给内部网络中的目标主机。以下是实现SSH反向代理的步骤&#xff1a; 一、准备工作 确保服务器配置&#xff…...

Verilog语法+:和-:有什么用?

Verilog语法:和-:主要用于位选择&#xff0c;可以让代码更简洁。 一、位选择基础 在Verilog中&#xff0c;位选择可以通过直接索引来实现&#xff0c;例如&#xff1a; reg [7:0] data; wire select_a; wire [2:0] select_b; assign select_a data[3]; assign select_b …...

stm32F103 串口2 中断 无法接收指定字符串 [已解决]

stm32F103 串口2中断接收指定字符串 USART 初始化和中断配置示例中断处理函数示例关键点总结 确保在串口配置中正确使能空闲中断 ( USART_IT_IDLE) 是关键。这个中断可以帮助你在串口接收一帧数据完成后&#xff0c;进行相应的处理和分析。 为了确保你在串口配置时能避免类似问…...

Matlab/Simulink和AMEsim联合仿真(以PSO-PID算法为例)

目录 安装软件和配置环境变量 Matlab/Simulink和AMEsim联合仿真详细流程 非常重要的一点 Simulink模型和AMEsim模型用S-Function建立连接 从AMEsim软件打开Matlab Matlab里的设置 Matlab的.m文件修改&#xff08;对于PSO-PID算法&#xff09; 运行程序 我印象中好像做过…...

超声波测距模块HC-SR04(基于STM32F103C8T6HAL库)

超声波测距模块参考资料 1.电路连接及引脚配置 触发信号PA3只需要输出10us的高电平&#xff0c;所以直接设置成 普通的GPIO端口即可&#xff1b;回响信号使用外部中断&#xff0c;上升沿信号产生外部中断&#xff0c;打开定时器&#xff0c;下降沿再产生一次中断&#xff0c;读…...

Go语言结构体和元组全面解析

Go语言中的复合类型与其应用 在编程中&#xff0c;标准类型虽然方便&#xff0c;但无法满足所有需求。Go通过支持结构体和元组类型&#xff0c;为开发者提供了自定义数据类型的能力。本文将介绍如何定义结构体、如何使用指针操作结构体、如何通过元组返回多个值等内容&#xf…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...