vue3实现excel导出

前言:在开发一些管理系统的时候,常常会遇到表格导入导出的问题,总的来说呢,代码模板也挺固定的,仅以此博客作为记录以供参考

html部分

html 复制代码
<Button @click="downLoadPlan" type="primary">导出方案</Button>

ts部分

typescript 复制代码
<script lang="ts" setup>
import * as XLSX from 'xlsx';

const downLoadPlan = () => {
  // 这里data是我们要导出的数据
  // 因为这里导出的有三列,所以data的格式是一个包含多个[数据1,数据2,数据3]的数组
  // 在 data数组的开头插入表头['列1', '列2', '列3']
  data.unshift(['列1', '列2', '列3']);
  
  // 创建一个新的工作簿对象
  const wb = XLSX.utils.book_new();
  
  // 将 data 数组转换为工作表对象
  const ws = XLSX.utils.aoa_to_sheet(data);
  
  // 将工作表添加到工作簿中,命名为 'Sheet1'
  XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
  
  // 将工作簿转换为 Excel 格式的字节数组
  const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
  
  // 创建一个 Blob 对象,类型为 Excel 文件
  const blob = new Blob([excelBuffer], {
    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  });
  
  // 为 Blob 对象创建一个 URL
  const url = URL.createObjectURL(blob);
  
  // 创建一个 a 元素,并设置下载链接和文件名
  const link = document.createElement('a');
  link.href = url;
  link.download = 导出文件.xlsx';
  
  // 模拟点击链接,触发文件下载
  link.click();
  
  // 释放 URL 对象
  URL.revokeObjectURL(url);
};
</script>
相关推荐
普通人612 分钟前
php+html+canvas实现树状打开的结构
开发语言·javascript·html5·1024程序员节
梦曦i13 分钟前
uni-storage 0.1.0 发布:TTL过期管理+多实例隔离
前端·storage·uni-app x
泡海椒43 分钟前
JQuick-Excel 自定义 SPI Provider:用 fullName 扩展 TRANSFORM 函数
驱动开发·excel
猫头_1 小时前
AI 流式传输工程指南:模型吐出半截 JSON,前端如何边收边渲染?
前端·javascript·llm
console.log('npc')2 小时前
第 1 章 项目概述与环境搭建
前端·人工智能·大模型
定栓2 小时前
Webpack迁到Vite第七节(二):全家桶移除 — Babel 全家桶深度分析
前端·webpack·node.js
IT_陈寒2 小时前
React组件莫名重渲染?你可能忘了这个小细节
前端·人工智能·后端
鶴哥只手遮天2 小时前
React 19.3.1 源码深度剖析-第 12 章(下)RSC 与 Flight 协议
前端·react.js·开源
deli0072 小时前
TCP 三次握手到底发几个包?丢包重传动画实测一遍
前端
盟接之桥2 小时前
盟接之桥谈线束数字化-按单入按单出:线束企业库存管理的破局之道
大数据·前端·网络·数据库·人工智能·制造