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

vue中将el-table导出为excel文件

在 Vue + Element UI 中,el-table 数据导出 Excel 文件,可以使用 xlsxSheetJS)库进行处理。以下是详细的实现方法,包括安装依赖、代码示例和优化建议。

1. 安装依赖

首先,安装 xlsx 库:

复制编辑
npm install xlsx file-saver --save
  • xlsx:用于解析和生成 Excel 文件。
  • file-saver:用于保存导出的 Excel 文件。

2. 代码实现

完整示例

vue
复制编辑
<template><div><el-button type="primary" @click="exportExcel">导出 Excel</el-button><el-table :data="tableData" border style="width: 100%"><el-table-column prop="id" label="ID" width="80"></el-table-column><el-table-column prop="name" label="姓名" width="120"></el-table-column><el-table-column prop="age" label="年龄" width="80"></el-table-column><el-table-column prop="city" label="城市" width="150"></el-table-column></el-table></div>
</template><script>
import * as XLSX from "xlsx";
import { saveAs } from "file-saver";export default {data() {return {tableData: [{ id: 1, name: "张三", age: 25, city: "北京" },{ id: 2, name: "李四", age: 30, city: "上海" },{ id: 3, name: "王五", age: 28, city: "广州" },],};},methods: {exportExcel() {// 1. 提取表格数据const data = this.tableData.map((row) => ({ID: row.id,姓名: row.name,年龄: row.age,城市: row.city,}));// 2. 创建工作表const worksheet = XLSX.utils.json_to_sheet(data);// 3. 创建工作簿const workbook = XLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, worksheet, "表格数据");// 4. 生成 Excel 并下载const excelBuffer = XLSX.write(workbook, {bookType: "xlsx",type: "array",});const blob = new Blob([excelBuffer], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",});saveAs(blob, "表格数据.xlsx");},},
};
</script>

3. 代码解析

exportExcel 方法

  1. 格式化数据

    • 先将 el-table 的 tableData 数据格式化成适合 Excel 的 JSON 结构。
    • json_to_sheet 方法用于将 JSON 转换为 Excel 可识别的表格。
  2. 创建工作表 & 工作簿

    • XLSX.utils.json_to_sheet(data) 创建 Excel 工作表。
    • XLSX.utils.book_new() 创建新的 Excel 文件(工作簿)。
    • XLSX.utils.book_append_sheet(workbook, worksheet, "表格数据") 将表格数据添加到工作簿。
  3. 生成 Excel 并触发下载

    • XLSX.write(workbook, { bookType: "xlsx", type: "array" }) 生成 Excel 文件的二进制数据。
    • new Blob([...], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }) 生成 Excel 文件 Blob。
    • saveAs(blob, "表格数据.xlsx") 触发浏览器下载。

4. 额外优化

✅ 1. 自定义表头

可以用 el-table-column 的 label 作为 Excel 表头,而不是手动写:

js
复制编辑
exportExcel() {const headers = this.$refs.table.columns.map(col => col.label); // 获取表头const keys = this.$refs.table.columns.map(col => col.property); // 获取字段const data = this.tableData.map(row => {let obj = {};keys.forEach((key, index) => {obj[headers[index]] = row[key];});return obj;});const worksheet = XLSX.utils.json_to_sheet(data);const workbook = XLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, worksheet, "数据");const excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });const blob = new Blob([excelBuffer], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",});saveAs(blob, "表格数据.xlsx");
}

然后在 el-table 中添加 ref="table"


✅ 2. 处理合并单元格

可以使用 XLSX.utils.sheet_add_aoa 进行合并:

js
复制编辑
XLSX.utils.sheet_add_aoa(worksheet, [["ID", "姓名", "年龄", "城市"]], { origin: "A1" });

这样可以在 A1 手动插入表头。


✅ 3. 设置列宽

js
复制编辑
worksheet["!cols"] = [{ wch: 10 }, // ID列宽{ wch: 20 }, // 姓名列宽{ wch: 10 }, // 年龄列宽{ wch: 15 }, // 城市列宽
];

5. 结论

✅ 适用于 Vue 2.0 + Element UI 的 el-table
✅ 可以导出 Excel,支持中文表头
✅ 支持自定义表头、列宽、格式优化
✅ 减少人工操作,提高开发效率

如果你需要更复杂的 Excel 处理,比如 合并单元格、设置样式、多个 Sheet 导出,可以继续优化!😃

相关文章:

vue中将el-table导出为excel文件

在 Vue Element UI 中&#xff0c;el-table 数据导出 Excel 文件&#xff0c;可以使用 xlsx&#xff08;SheetJS&#xff09;库进行处理。以下是详细的实现方法&#xff0c;包括安装依赖、代码示例和优化建议。 1. 安装依赖 首先&#xff0c;安装 xlsx 库&#xff1a; 复制…...

electron提升软件运行权限,以管理员权限运行

大家有任何想法&#xff0c;都可以联系博主沟通。 本系列为实战文章&#xff0c;最终实现的桌面工具软件&#xff0c;获取方式&#xff1a;百度网盘地址&#xff1a;https://pan.baidu.com/s/1yrl0jYpti7QCn8CHBRT2lw?pwd1234 正文开始 前言一、提升electron运行权限的三种方…...

力扣LeetCode: 2506 统计相似字符串对的数目

题目&#xff1a; 给你一个下标从 0 开始的字符串数组 words 。 如果两个字符串由相同的字符组成&#xff0c;则认为这两个字符串 相似 。 例如&#xff0c;"abca" 和 "cba" 相似&#xff0c;因为它们都由字符 a、b、c 组成。然而&#xff0c;"aba…...

安科瑞能源物联网平台助力企业实现绿色低碳转型

安科瑞顾强 随着全球能源结构的转型和“双碳”目标的推进&#xff0c;能源管理正朝着智能化、数字化的方向快速发展。安科瑞电气股份有限公司推出的微电网智慧能源管理平台&#xff08;EMS 3.0&#xff09;&#xff0c;正是这一趋势下的创新解决方案。该平台集成了物联网&…...

Spring Boot 中使用 @Transactional 注解配置事务管理

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务&#xff1b;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污…...

动态链接器(九):.init和.init_array

ELF文件中的.init和.init_array段是程序初始化阶段的重要组成部分&#xff0c;用于在main函数执行前完成必要的初始化操作。 1 .init段和.init_array 段 1.1 作用 .init段包含编译器生成的初始化代码&#xff0c;通常由运行时环境&#xff08;如C标准库的启动例程&#xff0…...

标准I/O与文件I/O

一、概念 标准IO&#xff1a;标准IO是指程序与标准输入&#xff08;stdin&#xff09;、标准输出&#xff08;stdout&#xff09;和标准错误&#xff08;stderr&#xff09;之间的输入输出操作。通常用于与用户交互或输出调试信息。文件IO&#xff1a;文件IO是指程序与文件系统…...

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter20-JavaScript API

二十、JavaScript API JavaScript API 随着 Web 浏览器能力的增加&#xff0c;其复杂性也在迅速增加。从很多方面看&#xff0c;现代 Web 浏览器已经成为构建于诸多规范之上、集不同 API 于一身的“瑞士军刀”。浏览器规范的生态在某种程度上是混乱而无序的。一些规范如 HTML5&…...

C#初级教程(7)——初级期末检测

练习 1&#xff1a;计算圆的周长和面积 改编题目&#xff1a;编写一个 C# 程序&#xff0c;让用户输入圆的半径&#xff0c;然后计算并输出该圆的周长和面积&#xff0c;结果保留两位小数。 using System;class CircleCalculation {static void Main(){const double pi 3.14…...

RT-Thread+STM32L475VET6——TF 卡文件系统

文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行USB配置1.1 使用外部高速时钟&#xff0c;并修改时钟树1.2 打开SPI1&#xff0c;参数默认即可(SPI根据自己需求调整&#xff09;1.3 打开串口&#xff0c;参数默认1.4 生成工程 2.配置SPI2.1 打开SPI驱动2.2 声明使用SPI…...

排序链表--字节跳动

少年的书桌上没有虚度的光阴 题目描述 请你对链表进行排序 思路分析 核心思想&#xff1a;归并排序 有三个部分 链表排序实现 1. merge 函数 21.见 合并两个有序链表&#xff0c; 首先创建一个虚拟头节点 newhead&#xff0c;并使用指针 tail 来构建合并后的链表。 通过…...

[论文解析]OmniRe: Omni Urban Scene Reconstruction

OmniRe: Omni Urban Scene Reconstruction 论文地址&#xff1a;https://arxiv.org/abs/2408.16760 代码地址&#xff1a;https://github.com/ziyc/drivestudio 项目地址&#xff1a;https://ziyc.github.io/omnire/ 论文解读 总结 这篇论文代表了一种重建的方向&#xff0…...

【微服务优化】ELK日志聚合与查询性能提升实战指南

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

Docker实战-使用docker compose搭建博客

docker run 部署 创建blog网络 [rootk8s-master ~]# docker network create blog 8f533a5a1ec65eae3f98c0ae5a76014a3ab1bf3c087ad952cdc100cc7a658948 [rootk8s-master ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 8f533a5a1ec6 blog bridge …...

python 虚拟机的使用方式

Python虚拟机&#xff08;PVM&#xff09;是Python语言的核心运行机制&#xff0c;它通过解释和执行字节码来运行Python代码。以下是关于Python虚拟机的详细使用方式&#xff1a; 1. Python虚拟机的基本概念 Python虚拟机&#xff08;PVM&#xff09;是一个抽象的计算机&…...

【JT/T 808协议】808 协议开发笔记 ② ( 终端注册 | 终端注册应答 | 字符编码转换网站 )

文章目录 一、消息头 数据1、消息头拼接2、消息 ID 字段3、消息体属性 字段4、终端手机号 字段5、终端流水号 字段 二、消息体 数据三、校验码计算四、最终计算结果五、终端注册应答1、分解终端应答数据2、终端应答 消息体 数据 六、字符编码转换网站 一、消息头 数据 1、消息头…...

番茄工作法html实现

对比了deepseek-r1-online和本地部署的14b的版本&#xff0c;输出的输出的html页面。 在线满血版的功能比较强大&#xff0c;可以一次完成所有要求。14b版本的功能有一些欠缺&#xff0c;但是基本功能也是写了出来了。 input write a html named Pomodoro-clock which “hel…...

抓包工具 wireshark

1.什么是抓包工具 抓包工具是什么&#xff1f;-CSDN博客 2.wireshark的安装 【抓包工具】win 10 / win 11&#xff1a;WireShark 下载、安装、使用_windows抓包工具-CSDN博客 3.wireshark的基础操作 Wireshark零基础使用教程&#xff08;超详细&#xff09; - 元宇宙-Meta…...

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…...

hot100_139. 单词拆分

hot100_139. 单词拆分 思路 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xff1a; 输入:…...

Linux firewalld 常用命令

本文参考RedHat官网文章How to configure a firewall on Linux with firewalld。 Firewalld 是守护进程名&#xff0c;对应命令为firewall-cmd。帮助详见以下命令&#xff1a; $ firewall-cmd --helpUsage: firewall-cmd [OPTIONS...]General Options-h, --help Pr…...

《网络安全入门实战手册》

0经验转行网络安全&#xff0c;个人分享一下学习中总结的文档&#xff0c;以下为目录可以点击标题看对应文章&#xff0c;欢迎评论区讨论&#xff0c;后期会发更多安全相关的学习资料等。希望跟大家一起进步。 第1章&#xff1a;网络安全基础知识 1、什么是网络安全&#xff…...

SQLMesh 系列教程7- 详解 seed 模型

SQLMesh 是一个强大的数据建模和管道管理工具&#xff0c;允许用户通过 SQL 语句定义数据模型并进行版本控制。Seed 模型是 SQLMesh 中的一种特殊模型&#xff0c;主要用于初始化和填充基础数据集。它通常包含静态数据&#xff0c;如参考数据和配置数据&#xff0c;旨在为后续的…...

windows11那些事

一.windows11简介 Windows11是‌微软公司于2021年发布的桌面端操作系统&#xff0c;它带来了许多新的功能和改进&#xff0c;旨在提升用户体验和工作效率。以下是一些关于Windows 11的基础知识和使用技巧&#xff1a; ‌‌通用搜索&#xff1a;通过任务栏上的搜索或按Windows…...

VividTalk:南京大学、阿里巴巴等机构联合研发的开源3D说话人生成框架

目录 一、前言二、项目概述三、技术架构四、优势特点五、性能评估六、应用场景七、结论与展望 一、前言 在当今人工智能飞速发展的时代&#xff0c;人机交互的方式正不断创新和优化。VividTalk作为南京大学、阿里巴巴、字节跳动和南开大学联合开发的一项开创性技术&#xff0c…...

pyside6学习专栏(三):自定义QLabel标签扩展类QLabelEx

标签是界面设计中最常用的控件&#xff0c;本文演示了如何基于PySide6的QLabex控件类扩展定义QLabelEX类&#xff0c;以实现更少的编码完成各种图像、彩色文本、动画的加载和显示&#xff0c;丰富界面显示 本示例演示了QLabel和其扩展类QLabelEx分别显示文本、图像、动画的使用…...

后“智驾平权”时代,谁为安全冗余和体验升级“买单”

线控底盘&#xff0c;正在成为新势力争夺下一个技术普及红利的新赛点。 尤其是进入2025年&#xff0c;比亚迪、长安等一线传统自主品牌率先开启高阶智驾的普及战&#xff0c;加上此前已经普及的智能座舱&#xff0c;舱驾智能的「科技平权」进一步加速行业启动「线控底盘」上车窗…...

springboot408-基于Java的樱洵宾馆住宿管理系统(源码+数据库+纯前后端分离+部署讲解等)

&#x1f495;&#x1f495;作者&#xff1a; 爱笑学姐 &#x1f495;&#x1f495;个人简介&#xff1a;十年Java&#xff0c;Python美女程序员一枚&#xff0c;精通计算机专业前后端各类框架。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xf…...

C语言中 %* 的用法总结

C语言中 %* 的用法总结 一、scanf 中的 %* 作用&#xff1a;跳过输入字段&#xff0c;读取数据但不存储到变量。语法&#xff1a;%*[格式] 示例格式&#xff1a;%*d&#xff08;跳过一个整数&#xff09;、%*s&#xff08;跳过一个字符串&#xff09;。 适用场景&#xff1a;…...

EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代

在数字化浪潮的席卷下&#xff0c;智能硬件已成为我们日常生活的重要组成部分&#xff0c;从智能家居到智能穿戴&#xff0c;从工业物联网到远程协作&#xff0c;设备间的互联互通已成为不可或缺的趋势。然而&#xff0c;高效、低延迟且稳定的音视频交互一直是智能硬件领域亟待…...