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

vue3前端实现导出Excel功能

前端实现导出功能可以使用一些插件
我使用的是xlsx库
1.首先我们需要在vue3的项目中安装xlsx库。可以使用npm 或者 pnpm来进行安装

npm install xlsx

或者

pnpm install xlsx

2.在vue组件中引入xlsx库

import * as XLSX from 'xlsx';

3.定义导出实例方法

const exportExcel = () => {// 准备要导出的数据,这里假设你的数据存储在dataArray中const dataArray = [{ name: 'John', age: 30, address: 'New York' },{ name: 'Jane', age: 25, address: 'London' },{ name: 'Mike', age: 32, address: 'San Francisco' },];// 将数据转换为工作表const ws = XLSX.utils.json_to_sheet(dataArray);// 创建一个新的工作簿,并将工作表添加到工作簿中const wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');// 导出为Excel文件// 如果需要设置样式,则使用XLSXStyle.writeFile(wb, '文件名.xlsx');XLSX.writeFile(wb, '表格数据.xlsx');
}

完整代码演示

<template><div><button @click="exportExcel">导出Excel</button><!-- 你可以在这里添加其他内容,如表格等 --></div>
</template>
<script setup>
import { ref } from 'vue';
import * as XLSX from 'xlsx';const exportExcel = () => {// 准备要导出的数据,这里假设你的数据存储在dataArray中const dataArray = [{ name: 'John', age: 30, address: 'New York' },{ name: 'Jane', age: 25, address: 'London' },{ name: 'Mike', age: 32, address: 'San Francisco' },];//需要注意的是,这样导出来的数据表头显示的是name,age,address,并不是中文,如果想要中文的话需要做一下处理const data = []var titlist = ['名称','年龄','时间',]data.push(titlist)exportExcel .value.forEach((item) => {var itemArr = [item.name,item.age,item.address,]data.push(itemArr)})// 将数据转换为工作表const ws = XLSX.utils.json_to_sheet(data);// 创建一个新的工作簿,并将工作表添加到工作簿中const wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');// 导出为Excel文件// 如果需要设置样式,则使用XLSXStyle.writeFile(wb, '文件名.xlsx');XLSX.writeFile(wb, '表格数据.xlsx');
};
</script>

tip:

  • 数据格式:确保你的数据格式正确,以便能够正确的导出到excel文件中。
  • 样式设置:如果你需要为Excel文件中的单元格设置样式,可以使用xlsx-style库。在设置样式时,需要了解xlsx-style库提供的样式选项。
  • 大数据量处理:如果你的数据非常大,导出过程中时间会很长,需要增加提示来提升用户体验。

好了,以上就是全部代码啦,希望可以帮到你~

看到这如果对你有帮助的话,不如来一波点赞加关注吧~
感谢支持~
加个关注不迷路~~~~

http://www.lryc.cn/news/2404708.html

相关文章:

  • 超大规模芯片验证:基于AMD VP1902的S8-100原型验证系统实测性能翻倍
  • 【工作记录】接口功能测试总结
  • Dubbo Logback 远程调用携带traceid
  • 【element-ui】el-autocomplete实现 无数据匹配
  • NLP学习路线图(二十):FastText
  • 力扣面试150题--除法求值
  • SQL进阶之旅 Day 20:锁与并发控制技巧
  • 美业破局:AI智能体如何用数据重塑战略决策(5/6)
  • 生成模型+两种机器学习范式
  • 【学习笔记】Python金融基础
  • 在Linux查看电脑的GPU型号
  • A Execllent Software Project Review and Solutions
  • windows命令行面板升级Git版本
  • Langgraph实战--自定义embeding
  • 大故障,阿里云核心域名疑似被劫持
  • 什么是「镜像」?(Docker Image)
  • SQLMesh实战:用虚拟数据环境和自动化测试重新定义数据工程
  • 服务器健康摩尔斯电码:深度解读S0-S5状态指示灯
  • 设计模式基础概念(行为模式):模板方法模式 (Template Method)
  • 传统业务对接AI-AI编程框架-Rasa的业务应用实战(番外篇2)-- Rasa 训练数据文件的清理
  • LVDS的几个关键电压概念
  • 2023年ASOC SCI2区TOP,随机跟随蚁群优化算法RFACO,深度解析+性能实测
  • DLL动态库实现文件遍历功能(Windows编程)
  • Java Map完全指南:从基础到高级应用
  • jvm 垃圾收集算法 详解
  • [特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
  • Nginx Stream 层连接数限流实战ngx_stream_limit_conn_module
  • Spring Boot 定时任务的使用
  • Flutter:下拉框选择
  • SpringAI(GA):Nacos2下的分布式MCP