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"); // 下载文件 文件名
}
  • 以上函数可以直接引用,修改对应的部分即可
相关推荐
Mintopia7 小时前
🚀 共绩算力:3分钟拥有自己的图像优化服务-CodeFormer:先进的图像算法优化、修复马赛克、提升图片清晰度等
前端·人工智能·ai编程
Lhuu(重开版7 小时前
html语法
前端·html
月弦笙音7 小时前
【vue3】这些不常用的API,却很实用
前端·vue.js·面试
小只笨笨狗~7 小时前
css-文字背景渐变色
前端·css·html
BingoGo7 小时前
CSS 也要支持 if 了 !!!CSS if() 函数来了!
前端·css
用户6600676685397 小时前
深入解析JavaScript数组:从内存原理到高效遍历实践
前端·javascript
有点笨的蛋7 小时前
CSS 定位彻底搞懂:五种 position 的真实差异与最佳实践
前端·css
液态不合群7 小时前
数字化转型改变了什么?从技术底层到业务本质的深度重构
前端·人工智能·低代码·重构
qiao若huan喜7 小时前
9、webgl 基本概念 + 复合变换 + 平面内容复习
前端·javascript·信息可视化·webgl