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

GitHub Demo 地址

在线预览

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

安装xlsx

ts 复制代码
npm install xlsx --save

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

ts 复制代码
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 - worksheet

  XLSX.utils.book_append_sheet(wb, ws, sheetName) // 将工作表添加到工作簿中
  XLSX.writeFile(wb, fileName) // 导出文件
}

示例

ts 复制代码
<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 = data
  const fields = ['name', 'gender', 'age']
  const headers = ['姓名', '性别', '年龄']
  exportExcel(newTableDate, fields, headers, '用户数据.xlsx')
}
</script>

效果图

相关推荐
李剑一5 小时前
ant-design-vue 1.x 版本换肤功能开发
前端·vue.js·ant design
李明卫杭州6 小时前
Vue2 与 Vue3 自定义指令详解:钩子变化、迁移指南与实战示例
前端·javascript·vue.js
nicole bai7 小时前
vue 自定义模块内容
前端·javascript·vue.js
遇乐的果园9 小时前
前端学习笔记-vue列表处理
前端·vue.js·学习
ss27310 小时前
Vue 完整版本发展史时间线(2013–2026)|版本迭代里程碑+核心特性对照表
前端·javascript·vue.js
英勇无比的消炎药10 小时前
体积砍半、加载提速、请求不卡:TinyRobot 生产环境性能调优全攻略
vue.js
用户2986985301410 小时前
Java 创建 CSV 文件的三种实用方法:从零构建、数组写入与 Excel 转换
java·后端·excel
gis开发之家10 小时前
《Vue3 从入门到大神32篇》Vue3 源码详解(二):从 GitHub Clone 到断点调试,手把手搭建源码阅读环境
vue.js·前端框架·github·vue3·vue3源码
葡萄城技术团队11 小时前
Alt + PageDown实现横向换页:让 SpreadJS 宽表更接近 Excel 操作习惯
excel
徐小超12 小时前
从0到1落地AI知识问答系统(一):AI结对协作实战技巧
vue.js·node.js·全栈