vue导出数据到excel

安装插件

bash 复制代码
npm install exceljs file-saver

页面代码

vue 复制代码
<template>
  <div class="test-form">
    <div @click="exportData" class="export-btn">导出为excel</div>
  </div>
</template>

<script setup>
// 导出文件
import ExcelJS from 'exceljs'
import FileSaver from 'file-saver'
import { ref } from 'vue'
// 模拟表格数据
const tableData = ref([
  { name: '张三', age: 25, city: '北京' },
  { name: '李四', age: 30, city: '上海' },
  { name: '王五', age: 35, city: '广州' },
  { name: '赵六', age: 40, city: '深圳' },
  { name: '王二', age: 45, city: '成都' },
  { name: '赵四', age: 50, city: '重庆' },
  { name: '王三', age: 55, city: '西安' },
  { name: '王五', age: 60, city: '北京' },
  { name: '赵五', age: 65, city: '天津' },
  { name: '王四', age: 70, city: '大连' },
])

function fileExcel(fileData, fileName = '汇总') {
  // 创建工作簿
  const workbook = new ExcelJS.Workbook()
  // 添加工作表,名为sheet1
  const sheet1 = workbook.addWorksheet('sheet1')
  // 导出数据列表
  const data = fileData
  // 获取表头所有键
  const headers = Object.keys(data[0])
  // 将标题写入第一行
  sheet1.addRow(headers)
  // 将数据写入工作表
  data.forEach(row => {
    const values = Object.values(row)
    sheet1.addRow(values)
  })
  // 导出表格文件
  workbook.xlsx
    .writeBuffer()
    .then(buffer => {
      let file = new Blob([buffer], { type: 'application/octet-stream' })
      FileSaver.saveAs(file, fileName + '.xlsx')
    })
    .catch(error => console.log('Error writing excel export', error))
}

// 导出数据
const exportData = () => {
  // 处理键名(表头格式)
  const processedData = tableData.value.map(item => {
    return {
      姓名: item.name,
      年龄: item.age,
      城市: item.city,
    }
  })
  fileExcel(processedData, '导出数据')
}
</script>

<style scoped lang="scss">
.test-form {
    .export-btn {
      display: inline-block;
      padding: 10px 20px;
      background-color: #007bff;
      color: #fff;
      border-radius: 5px;
      cursor: pointer;
    }
}
</style>
相关推荐
开开心心就好6 天前
内存清理软件灵活设置,自动阈值快捷键清
运维·服务器·windows·pdf·harmonyos·risc-v·1024程序员节
学传打活8 天前
【边打字.边学昆仑正义文化】_5_宇宙物种创造简史(1)
微信公众平台·1024程序员节·汉字·昆伦正义文化
xcLeigh9 天前
打破机房围墙:VMware+cpolar构建跨网络虚拟实验室
vmware·内网穿透·cpolar·实验室·远程访问·1024程序员节
开开心心就好10 天前
免费轻量电子书阅读器,多系统记笔记听书
linux·运维·服务器·安全·ddos·可信计算技术·1024程序员节
unable code11 天前
流量包取证-大流量分析
网络安全·ctf·misc·1024程序员节·流量包取证
开开心心就好11 天前
实用PDF擦除隐藏信息工具,空白处理需留意
运维·服务器·windows·pdf·迭代器模式·桥接模式·1024程序员节
unable code12 天前
浏览器取证-[GKCTF 2021]FireFox Forensics
网络安全·ctf·misc·1024程序员节·浏览器取证
unable code12 天前
内存取证-[安洵杯 2019]Attack
网络安全·ctf·misc·1024程序员节·内存取证
unable code13 天前
CTF-SPCS-Forensics
网络安全·ctf·misc·1024程序员节·取证