Vue 3 中导出 Excel 文件

在 Vue 3 中导出 Excel 文件,通常可以使用一些流行的 JavaScript 库,如 SheetJS (xlsx) 或者 exceljs。这里我将分别介绍如何使用这两个库来在 Vue 3 应用中导出 Excel 文件。

方法 1:使用 SheetJS (xlsx)

  1. 安装 SheetJS

    首先,你需要安装 xlsx 库。在你的 Vue 项目中运行以下命令:

    npm install xlsx

2.在 Vue 组件中使用 xlsx

然后,你可以在 Vue 组件中导入并使用 xlsx 来创建和导出 Excel 文件。

复制代码
<template>
  <button @click="exportToExcel">导出 Excel</button>
</template>
 
<script setup>
import * as XLSX from 'xlsx';
 
const exportToExcel = () => {
  // 创建工作表数据
  const data = [
    ["姓名", "年龄", "职业"],
    ["张三", 28, "工程师"],
    ["李四", 35, "设计师"],
    ["王五", 29, "教师"]
  ];
 
  // 创建工作表
  const ws = XLSX.utils.aoa_to_sheet(data);
 
  // 创建工作簿并添加工作表
  const wb = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
 
  // 导出 Excel 文件
  XLSX.writeFile(wb, "example.xlsx");
};
</script>

方法 2:使用 exceljs

  1. 安装 exceljs

    在你的 Vue 项目中安装 exceljs

    npm install exceljs

复制代码
  2.在 Vue 组件中使用 exceljs
复制代码
<template>
  <button @click="exportToExcel">导出 Excel</button>
</template>
 
<script setup>
import ExcelJS from 'exceljs';
 
const exportToExcel = async () => {
  // 创建工作簿和工作表
  const workbook = new ExcelJS.Workbook();
  const worksheet = workbook.addWorksheet('My Sheet');
  
  // 添加数据到工作表
  worksheet.addRow(['姓名', '年龄', '职业']);
  worksheet.addRow(['张三', 28, '工程师']);
  worksheet.addRow(['李四', 35, '设计师']);
  worksheet.addRow(['王五', 29, '教师']);
  
  // 设置列宽等(可选)
  worksheet.columns.forEach(column => { column.width = 20; });
  
  // 导出 Excel 文件到浏览器或保存到服务器(示例:浏览器下载)
  workbook.xlsx.writeBuffer().then((buffer) => {
    const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'example.xlsx';
    a.click();
    URL.revokeObjectURL(url); // 释放内存中的 URL 对象资源。
  });
};
</script>
复制代码
以上两种方法都可以在 Vue 3 中实现 Excel 文件的导出。你可以根据自己的需求选择合适的库。如果你需要处理更复杂的 Excel 文件(如包含图片、公式等),exceljs 可能提供更多灵活性和功能。而 xlsx 则因其简单易用而受到许多开发者的喜爱。
相关推荐
Bs_MoneyMagnet1 小时前
基于springboot+vue的滑雪场票务与装备租赁系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
AlienZHOU6 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
Captaincc9 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
计算机魔术师10 小时前
德国Wiki被黑后两周,OpenAI终于把模型失控的账本摊开了
前端
kyriewen11 小时前
我让 AI 当面试官面了我一轮:第 3 个追问我就卡住了(附 10 道追问清单)
前端·面试·ai编程
IT_陈寒11 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
前端snow11 小时前
ai agent --- 多agent框架之图编排引擎-langgraph
前端
竹林81811 小时前
OmniPic Studio v3.2.1 核心技术架构与全平台发版解析文档
前端·浏览器
JamesZhang8007811 小时前
页面内存只涨不跌? 一次泄漏排查, 牵出 WeakMap 的诞生
前端
Z小明12 小时前
第 6 章 组件进阶
前端·vue.js