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"); // 下载文件 文件名
}
  • 以上函数可以直接引用,修改对应的部分即可
相关推荐
qwaesrdt3202几秒前
【如何使用大语言模型(LLMs)高效总结多文档内容】
前端
一个处女座的程序猿O(∩_∩)O40 分钟前
vue 如何实现复制和粘贴操作
前端·javascript·vue.js
赔罪1 小时前
HTML-列表标签
服务器·前端·javascript·vscode·html·webstorm
谦谦橘子1 小时前
手写React useEffect方法,理解useEffect原理
前端·javascript·react.js
九州~空城1 小时前
C++中map和set的封装
java·前端·c++
椒盐大肥猫1 小时前
axios拦截器底层实现原理
前端·javascript
夕水2 小时前
我的2024-人生须为有益事
前端·年终总结
明月看潮生2 小时前
青少年编程与数学 02-006 前端开发框架VUE 08课题、列表渲染
前端·javascript·vue.js·青少年编程·编程与数学
前端要努力2 小时前
30而立,月哥的2024年终总结,小亏几百万
前端·后端·面试
hawk2014bj2 小时前
Vue3 中的插槽
前端·javascript·vue.js