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"); // 下载文件 文件名
}
  • 以上函数可以直接引用,修改对应的部分即可
相关推荐
落日漫游9 分钟前
代码报错难排查?借助Gemini快速修复
前端
niconicoC9 分钟前
让 Three.js 场景更真实:我用高斯泼溅和 SparkJS 做了一个可交互的 3D Demo
前端·webgl
Darling噜啦啦13 分钟前
JavaScript 数组深度解析:从纯函数到二维数组陷阱,一文吃透前端数据结构核心
前端·javascript·数据结构
万少13 分钟前
一封邮件,让我重新打开了搁置半年的鸿蒙应用
前端·javascript·后端
wjj不想说话15 分钟前
你的小程序活动页,可能已经成了后台配置的杂物间
前端
梦想是准点下班16 分钟前
androidStudio打包,我又又又忘了
前端
槑有老呆17 分钟前
栈队列链表,三个故事就懂了
前端
ViavaCos34 分钟前
pnpm v11 的安全策略,让我踩了个坑
前端
To_OC36 分钟前
从一段定时器代码,重新捋清 JS 同步、异步与 Promise
前端·javascript·代码规范
持敬chijing37 分钟前
Web渗透之前后端漏洞-XSS漏洞原理攻击防御全流程
前端·安全·web安全·网络安全·网络攻击模型·安全威胁分析·xss