Vue3:将表格数据下载为excel文件

需求

将表格数据或者其他形式的数据下载为excel文件

技术栈

Vue3、ElementPlus、

实现

1、安装相关的库
  • 下载xlsx 和 file-saver 库
javascript 复制代码
npm install -S file-saver
npm install -S xlsx
  • 引入XLSX库和FileSaver库
javascript 复制代码
import XLSX from 'xlsx';
import FileSaver from 'file-saver';
2、添加导出按钮
  • 需要一个"导出"按钮,并给它绑定一个点击事件
    (1)点击该按钮可以将表格的数据下载为excel文件;
    (2)关于按钮的图标可以引用elementplus里的下载图标
  • 另外,可以添加触发提示,告知用户可以进行数据下载
    关于触发提示可以引用elementplus里面的el-tooltip组件
  • 大致效果如下:
  • 导出按钮、触发提示、表格的包含关系如下:
  • 相关代码:
javascript 复制代码
<!-- 表格 -->
<div class="TopCourse">
  <div class="navTop">
	<!-- 触发提示 -->
	<el-tooltip
	  class="box-item"
	  effect="dark"
	  content="下载全部数据"
	  placement="top-start"
	>
	  <!-- 下载按钮 -->
	  <el-button type="primary" :icon="Download" @click="userExport" />
	</el-tooltip>
  </div>

  <!-- 表格 -->
  <el-table
	id="myTable"
	:data="tableData"
	style="width: 95%"
	:header-cell-style="{ 'text-align': 'center' }"
	:cell-style="{ 'text-align': 'center' }"
  >
	<el-table-column prop="index" label="No." />
	<el-table-column prop="ID" label="ID" />
	
  </el-table>
</div>
	
3、函数:将数据下载为excel文件
  • 使用 SheetJS 库将表格数据转换为 Excel 文件格式;
  • 使用 file-saver 库将生成的 Excel 文件保存到本地
javascript 复制代码
// tableDataAllL:指excel数据的全部汇总(根据实际情况自己去补充)
var tableDataAll = [];
// 将数据下载为excel文件
function userExport() {
  const worksheet = XLSX.utils.json_to_sheet(tableDataAll);
  const workbook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
  const excelBuffer = XLSX.write(workbook, {
	bookType: "xlsx",
	type: "array",
  });
  const blob = new Blob([excelBuffer], {
	type: "application/vnd.ms-excel",
  });
  FileSaver.saveAs(blob, "tableDataAll"); // 下载文件 文件名
}
  • 以上函数可以直接引用,修改对应的部分即可
相关推荐
默_笙26 分钟前
🌃 HTTP 不认识你:JWT 登录鉴权的完整"酒店入住"指南
前端·javascript
Profile排查笔记43 分钟前
JavaScript 实现浏览器指纹生成:基础字段、Canvas 采样与 SHA-256 摘要
前端·人工智能·后端·自动化
不可能片场44 分钟前
Electron 子进程退化成 node 的 env 陷阱
前端·electron
搬砖记录员1 小时前
录屏总黑屏?90% 的人没关这个开关——浏览器硬件加速冲突排查指南
前端·音视频开发
promiseThen1 小时前
我用 7 条铁律管住 Cursor:让 AI 写代码不再「自由发挥」
前端·ai编程
梨想橙汁1 小时前
JS 核心语法:运算符流程控制、函数、数组与对象实战详解
前端·javascript
七牛开发者1 小时前
拆解 dsh:Turn 与 Step 如何组织 Agent 主循环
前端·javascript·人工智能
梨想橙汁1 小时前
JavaScript 零基础入门:引入方式、变量与数据类型,吃透原始与引用类型
前端·javascript
不可能片场1 小时前
puppeteer 调试实录:CDP 双层响应让取值永远 None
前端·electron
咖啡无伴侣1 小时前
2. 从零搭建企业级 Monorepo 工程化模板:ESLint 10 (基础骨架)+ Prettier 配置与避坑指南
前端·架构