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

vue3 - 使用 xlsx 库将数据导出到 Excel 文件

GitHub Demo 地址

在线预览

xlsx是由SheetJS开发的一个处理excel文件的JavaScript库。它可以读取、编写和操作 Excel 文件

安装xlsx

npm install xlsx --save

实现一个通过的数据导出工具类

import * as XLSX from 'xlsx'/*** @description: 导出excel* @param {any} dataList* @param {Array} fields* @param {Array} headers* @param {string} fileName 需要加后缀名 eg: 'test.xlsx'* @param {string} sheetName* @return {*}*/
export function exportExcel(dataList: any, fields: Array<string>, headers: Array<string> = [], fileName: string = 'Excel.xlsx', sheetName: string = 'Sheet') {let data = new Array()if (!Array.isArray(dataList)) return console.warn('dataList is not an array type')// if (!Array.isArray(fields)) return console.warn('fields is not an array type')// if (!Array.isArray(headers)) return console.warn('headers is not an array type')data = dataList.map((obj) => {return fields.map((field) => {return obj[field]})})if (headers.length > 0) {data.splice(0, 0, headers)} else {// 将headers设置为英文字段表头data.splice(0, 0, fields)}const ws = XLSX.utils.aoa_to_sheet(data) // 创建工作表const wb = XLSX.utils.book_new() // 创建工作簿// 隐藏表头// let wsrows = [{ hidden: true }]// ws['!rows'] = wsrows // ws - worksheetXLSX.utils.book_append_sheet(wb, ws, sheetName) // 将工作表添加到工作簿中XLSX.writeFile(wb, fileName) // 导出文件
}

示例

<template><el-button @click="exportData"> 导出数据 </el-button>
</template><script setup lang="ts">
import { exportExcel } from '@/utils/exportExcel'const data = [{ name: '张三', gender: '男', age: 18 },{ name: '李四', gender: '女', age: 20 },{ name: '王五', gender: '男', age: 22 }
]const handelExcel = () => {var newTableDate = dataconst fields = ['name', 'gender', 'age']const headers = ['姓名', '性别', '年龄']exportExcel(newTableDate, fields, headers, '用户数据.xlsx')
}
</script>

效果图

在这里插入图片描述

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

相关文章:

  • 机器学习,深度学习
  • 【性能测试】jmeter连接数据库jdbc
  • 蓝桥等考Python组别二级007
  • Java如何解决浮点数计算不精确问题
  • 一图读懂「五度易链」企业创新服务解决方案,打造卓越营商环境!
  • 软件工程 第一次随堂练习
  • 在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测
  • crypto:RSA
  • APP产品经理岗位的具体内容(合集)
  • java 入门-使用eclipse、javaFX、SceneBuilder进行图形界面开发
  • 集度汽车(武汉java)一面
  • 虹科分享 | 为工业机器人解绑,IO-Link wireless无线通讯技术可实现更加轻量灵活的机器人协作
  • 【PickerView案例10-国旗选择界面02 Objective-C预言】
  • 面试打底稿⑤ 项目一的第一部分
  • PSINS工具箱学习(三)让AI解释PSINS中的各种卡尔曼滤波函数
  • 多边形碰撞检测算法
  • 【C/C++笔试练习】——printf在使用%的注意事项、for循环语句的三个条件、运算符优先级、删除公共字符
  • Linux部署elk日志监控系统
  • LINUX -SQL笔记(自学用)
  • 【Spark】win10配置IDEA、saprk、hadoop和scala
  • MQTT 协议概要
  • 向量数据库X云计算驱动大模型落地电商行业,Zilliz联合AWS探索并贡献成熟解决方案
  • 【vue2】解决Vuex刷新页面数据丢失的问题
  • 小皮面板配置Xdebug,调试单个php文件
  • 版本控制系统:Perforce Helix Core -2023
  • 回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测
  • Hive-命令行CDH访问开启kerberos的hive
  • 手机能搜到某个wifi,电脑搜不到解决方法(也许有用)
  • Java-day18(网络编程)
  • Java多线程编程-栅栏CyclicBarrier实例