vue3表格按需导出excel

2023-11-07

效果图展示

在这里插入图片描述

不要英文字段 excel内容展示

在这里插入图片描述

隐藏英文字段

在这里插入图片描述

首先安装xlsx依赖

npm install xlsx --save
// "export ‘default’ (imported as ‘XLSX’) was not found in ‘xlsx’
//当出现类似这样的报错,你可以试一下这个
npm install xlsx@0.16.0 --save

项目中引入

import XLSX from "xlsx";

项目中实现

1、在项目util.ts 文件 封装一下方法

import XLSX from "xlsx";
/*
    * @description:
    * @param {Object} json 服务端发过来的数据
    * @param {String} name 导出Excel文件名字
		* @param titleObj 一个存放标题的字段(请根据展示顺序编写写) 格式如下  
			titleObj={
				云飒ID:'ysId',
				中文名称:字段名
			}
    * @param {String} sheetName 导出sheetName名字
*/
export function exportExcel(json: any, name: string, titleObj: any, sheetName: string) {
	// 获取 所需要的中英文字段名
	let filterTitle: any = getObjVal(titleObj, "value"); // 英文字段
	let titleArr: any = getObjVal(titleObj, "key"); // 中文字段

	let data = []; // 最终存放的数据
	let tempData: any[] = []; // 筛选出的乱序数据
	let sortData = [] as any; // 排序后的数据
	// 筛选出符合条件的服务端数据
	for (const key1 in json) {
		if (json.hasOwnProperty(key1)) {
			const element = json[key1];
			let rowArr = [];
			for (const key2 in element) {
				if (element.hasOwnProperty(key2) && filterTitle.includes(key2)) {
					rowArr.push({
						label: key2,
						value: element[key2]
					});
				}
			}
			tempData.push(rowArr);
		}
	}
	// 对符合条件数据 按照titleObj 进行排序
	tempData.map((item: any) => {
		let arr = [] as any;
		filterTitle.map((item1: any) => {
			item.map((item2: any) => {
				if (item1 === item2.label) {
					arr.push(item2.value);
				}
			});
		});
		sortData.push(arr);
	});

	// //  隐藏英文字段 数据组装
	// data = [filterTitle, titleArr, ...sortData];
	// console.log("data", data);
	// const ws = XLSX.utils.aoa_to_sheet(data);
	// const wb = XLSX.utils.book_new();
	// 此处隐藏英文字段表头
	// let wsrows = [{ hidden: true }];
	// ws["!rows"] = wsrows; // ws - worksheet
	// XLSX.utils.book_append_sheet(wb, ws, sheetName);
	/* generate file and send to client */
	// XLSX.writeFile(wb, name + ".xlsx");


	// 不要英文字段
	// 数据组装
	data = [titleArr, ...sortData];
	console.log("data", data);
	const ws = XLSX.utils.aoa_to_sheet(data);
	const wb = XLSX.utils.book_new();
	XLSX.utils.book_append_sheet(wb, ws, sheetName);
	XLSX.writeFile(wb, name + ".xlsx");
}

/*
    * @description: 分别获取对象的键 或 值
    * @param {titleObj}  原始对象
		* @flag 标记  key 取键  value 取值 

*/
export function getObjVal(titleObj: any, flag: string) {
	let arr = [];
	// key 取key值
	if (flag == "key") {
		for (const key in titleObj) {
			if (titleObj.hasOwnProperty(key)) {
				arr.push(key);
			}
		}
		return arr;
	}
	// value 取value 值
	if (flag == "value") {
		for (const key in titleObj) {
			if (titleObj.hasOwnProperty(key)) {
				arr.push(titleObj[key]);
			}
		}
		return arr;
	}
}

3、页面中使用

<div style="margin-top: 18px">
	对已选 {{ tableTotal }} 条数据,进行批量操作:<span style="color: #274bef; cursor: pointer" @click="downloadFile"
		>导出</span
	>
</div>
import { exportExcel } from "@/utils/util";
const downloadFile = () => {
	downloadTable.value.map((item: any) => {
		item.proxyType = filterProxyType(item.proxyType);
		item.userCompanyId = item.userCompanyId ? "组织内成员" : "组织外成员";
		item.enableScale = item.enableScale == -1 ? "停用" : "启用";
	});

	const titleObj = {
		云飒ID: "ysId",
		代理身份: "proxyType",
		成员身份: "userCompanyId",
		工号: "jobNumber",
		所属部门: "departmentName",
		昵称: "nickname",
		真实姓名: "name",
		手机号码: "userPhone",
		账号状态: "enableScale",
		优惠码: "cdk",
		优惠价格: "preferentialPrice"
	};
	exportExcel(downloadTable.value, agentStore()?.agentObj?.name, titleObj, "组织架构内");
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3表格按需导出excel 的相关文章

  • 使用javascript滚动滚动条或鼠标滚轮后触发事件

    我想知道是否可以触发事件after使用滚动条或鼠标滚轮 或在触摸设备上滑动 时滚动页面 基本上 我想检测用户何时停止滚动 以便我可以进行 AJAX 加载 而不是在滚动时加载 看起来jQuery s scroll 每次用户滚动时都会触发 并且
  • 玉石压痕错误

    因此 对于我的 Express 网站 我使用 jade 所以我决定尝试修改我的布局文件 以便我可以开始设计我的网站 我修改了原始布局代码 有效 但我开始在任何扩展布局的文件中出现缩进错误 如下所示 500 Error home kevin
  • 如何正确地将节点从引用传递到上下文?

    我正在尝试将节点从引用传递到上下文 但是因为我在第一次渲染后没有重新渲染 所以传递的节 点是null 我考虑了两种变体 但我认为它们不是最好的 To pass ref代替ref current 但在用例中 我将被迫使用类似的东西contex
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • ASP.NET 验证控件和 Javascript 确认框

    我有一个使用 NET 服务器端输入验证控件的页面 此页面还有一个 javascript 确认框 在提交表单时会触发该确认框 当前 当选择 提交 按钮时 会出现 javascript 确认框 一旦确认 就会触发 ASP NET 服务器端验证控
  • 将 jQuery 与 Selenium WebDriver 结合使用 - 如何将 JSON 对象转换为 WebElement?

    我正在使用 Selenium WebDriver 我想执行 jQuery 代码来查找一些元素 我的代码如下 public function uploadGrantDoc script return itemlist grant file u
  • 为什么我可以使用 Date 对象进行数学运算? [复制]

    这个问题在这里已经有答案了 当我像这样减去两个日期对象时 const startTime new Date await someAsyncStuff const endTime new Date const elapsedTime endT
  • 无需重定向的 HTML 页面提交

    有没有什么方法可以在不使用ajax的情况下提交html表单而无需从当前页面重定向 你可以设置一个target 为您form 这样您就可以将表单提交到新选项卡 target blank 或一个小的 隐藏的iframe target nameo
  • 替换img路径jquery

    我正在尝试替换 jquery 中的 img 路径 注入远程页面 replaceexample com thumbs withexample com images 我已经尝试过这个 但似乎不起作用 img attr src replace t
  • document.write 在同一页面上显示内容。

    我对 javascript document write 方法有疑问 大多数情况下 当我使用 document write 时 它会向我显示在不同页面中使用该方法编写的内容 例如 如果我写这样的命令 document write Hello
  • 在给定索引上将字符串分成两部分并返回两部分

    我有一个字符串 需要在给定索引上拆分 然后返回两个部分 并用逗号分隔 例如 string 8211 8 211 98700 98 700 因此 我需要能够在任何给定索引上拆分字符串 然后返回字符串的两半 内置方法似乎执行分割 但只返回分割的
  • NodeJS - 将相对路径转换为绝对路径

    In my 文件系统我的工作目录在这里 C temp a b c d 在 b bb 下有文件 tmp txt C temp a b bb tmp txt 如果我想从工作目录转到该文件 我将使用以下路径 bb tmp txt 如果该文件不存在
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • 如何在 IntelliJ IDEA 中按 JSON 中的路径搜索?

    我有很长的 JSON 文件 例如 a b c keyC 和路径 a b c 如何使用路径在 JSON 中搜索 转到行 问题类似于如何在 IntelliJ IDEA 中复制 JSON 中的路径 https stackoverflow com
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • WebpackError:ReferenceError:Gatsby 上未定义窗口

    我已经在互联网上进行了大量搜索 但无法解决这个问题 我正在使用 Gasby 开发静态页面 但遇到此错误 WebpackError ReferenceError window is not defined 我的线索是 这与我正在使用的引导 模
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • 有序 JSON 对象

    我有一个 servlet 它与数据库通信 然后返回有序 按时间排序 对象的列表 在servlet部分 我有 access DB returns a list of User objects ordered ArrayList users M
  • 从json中获取所有子节点

    我有以下 json var source k 01 k 02 children k 05 k 06 children k ABC k PQR k 07 k 03 我希望能够指定 k 的值并取回所有孩子 以及孙
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att

随机推荐

  • 《九国列车》(学习报告)《leecode零基础指南》(第7天) ——排序,对排序的处理及题解和错题的总结

    1 leetcode 912 排序数组 我们先来看一种不对的做法 int sortArry int nums int numsSize int returnSize 函数的 int型 返回的是数组的首地址 int jie int mallo
  • STA系列 - 特殊时序分析multicycle/half-cycle/false path

    文章目录 什么是require time arrive time Multicycle Path Half Path Falth Path 本篇文章介绍的是特殊的时序path 全文为视频笔记 以及自己的理解 https www bilibi
  • python ,pip,pymmssql的安装

    1 下载python和pip安装包 下载 python 2 7 https www python org downloads windows 下载 pip https pypi python org pypi pip downloads下载
  • ruoyi-vue-plus学习2(异步日志)(@EventListener)(@Async)(线程池)(监听器)

    ruoyi vue plus的日志打印是通过监听器实现的 和原版若依稍稍不同 找到登录时记录日志的方法 该方法如下 这里的参数LogininforEvent为消息类 注意 貌似高版本的spring定义消息类不需要继承ApplicationE
  • React请求机制优化思路

    说起数据加载的机制 有一个绕不开的话题就是前端性能 很多电商门户的首页其实都会做一些垂直的定制优化 比如让请求在页面最早加载 或者在前一个页面就进行预加载等等 随着react18的发布 请求机制这一块也是被不断谈起 并且在后续其实也给出了明
  • 线性回归(最小二乘法)

    线性回归 算法概述 一个例子 数据 工资和年龄 2个特征 目标 预测银行会贷款给我多少钱 标签 考虑 工资和年龄都会影响最终银行贷款的结果那么它们各自有多大的影响呢 参数 工资 年龄 额度 4000 25 20000 4000 25 200
  • 关于特殊时期电力行业信息中心运营思路

    一 防御思路 安全运营是一系列规则 技术和应用的集合 用以保障组织核心业务平稳运行的相关活动 是通过灵活 动态的实施控制以期达到组织和业务需要的整体范围可持续性正常运行 信息中心在特殊时期扮演着关键的角色 因此需要精心设计运营思路以确保信息
  • 单片机全局变量 局部变量

    若在C51中定义一个全局变量 编译器将在RAM中为该变量指定一个专用地址 在C程序中给变量赋的值将存入这个专用地址中 程序操作该变量是 首先从专用地址中取出存放的值 然后再进行计算 全局变量被定义在内存中的专门地址上 存储位置固定 C51中
  • 实例:vmem_disk驱动-->vmem_disk的硬件原理(1)

    vmem disk是一种模拟磁盘 其数据实际存储在RAM中 它使用通过vmalloc 分配出来的内存空间来模拟出一个磁盘 以块设备的方式来访问这篇内存 加载vmem disk ko后 在使用默认模块参数的情况下 系统会增加4个块设备节点 其
  • 线性回归和逻辑回归

    1 回归和分类的问题 比如我们想预测房价 预测天气 预测股票等这些数值都是一些连续型的数值 如果我们想知道我一些房间中有多少个卧室 那么这些肯定是一个整数比如说2个卧室 3个卧室 不可能是2 1个卧室 3 68个卧室 类似于小数的这样一个连
  • 使用c语言写一个会动的小人

    使用c语言写一个会动的小人 运行效果 代码以及注释 运行效果 代码以及注释 include
  • 接口测试-第02天-接口用例设计思路、单接口用例,业务场景用例、postman

    更多功能测试以及全套学习路线图均在专栏 戳进去领取 系列文章目录 软件测试功能到自动化学习路线图 2022年最新版技术栈 软件测试01 从了解测试岗位职能和测试流程开始 附作业 软件测试02 6大实际案例手把手教你设计测试点 软件测试03
  • Linux Apache服务详解——Apache服务基础知识

    今天我们继续给大家介绍Linux相关内容 本文主要内容是Apache服务基础知识 一 Apache服务简介 Apache是一种网站服务程序 所谓网站服务程序 就是作为服务端 处理其他用户客户端发起的http或者https的请求 并给予响应的
  • 遇到问题: Windows下安装Python扩展模块, 提示“Unable to find vcvarsall.bat”的问题

    全程参考 https www cnblogs com yyds p 7065637 html 写得很好 不知道能不能解决我的问题 尝试解决办法 安装visual studio 2015 原因请看下面 1 为什么遇到这个问题 1 在安装商汤出
  • stem什么意思matlab,matlab中stem函数用法_常见问题解析,matlab

    matlab中如何自定义图例 常见问题解析 matlab中自定义图例的方法 首先打开matlab软件 然后点击勾选按钮 新建一个文件并输入代码为 x 0 pi 50 2 pi 接着执行该文件并添加一行新的代码为 legend a b 即可
  • JavaScript 基础工具清单

    转载至 https linux cn article 5935 rss html 在训练营中 为扩展学员们的编程能力 我们给他们介绍了一些工具和库 目前有位JavaScript学员Kalina 他汇总了这些工具的清单 以分享给其他的代码爱好
  • 中移链合约常用开发介绍(五)合约项目编译

    01 目的 本文档介绍了工程化开发智能合约项目的工程树目录 介绍了各个文件夹及文件的含义和用途 本文档将沿用之前文章中实现的地址簿合约内容 以初始化项目为例展开介绍 适合刚接触合约开发的开发人员用来了解智能合约项目 帮助其快速了解以及上手智
  • NULL 与 nullptr

    在过去 我们如果要表示一个指针为空 我们条件反射肯定会这么写 int p NULL 然而啊 有没有想过这是有问题的 比如下面的这段代码 include
  • 2023华为OD机试真题【最长公共后缀】

    前言 python参考点我 题目内容 编写一个函数来查找 字符串数组 中的最长公共后缀如果不存在公共后缀 返回固定字符串 Zero 补充说明 1 字符串长度范围 2 1000 2 字符串中字符长度范围为 1 126 输入描述 abc bbc
  • vue3表格按需导出excel

    效果图展示 不要英文字段 excel内容展示 隐藏英文字段 首先安装xlsx依赖 npm install xlsx save export default imported as XLSX was not found in xlsx 当出现