vue element-ui表格(el-table)数据导出execl文件

本文介绍如何使用ElementUI的el-table组件结合xlsx和file-saver插件实现出表格数据导出为Excel文件的功能。文章提供了完整的代码示例,包括导出工具文件的创建和页面引用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

功能实现:element UI 的el-table数据导出为execl文件
使用到插件:xlsx、file-saver


一、插件安装

npm install --save xlsx file-saver

二、使用示例

1.创建导出execl工具文件

exportExecl.js 代码如下:


import FileSaver from 'file-saver'
const XLSX = require('xlsx')

/**
 * el-table数据导出execl文件
 * 
 * @param {*} id:el-table元素id
 * @param {*} fileName :导出文件名称
 * @returns 
 */
function exportExecl(id,fileName){
    let excelName = fileName||'导出表格.xlsx';
      var xlsxParam = { raw: true };
      let tables=document.getElementById(id);
       if(!tables) return
        tables = document.getElementById(id).cloneNode(true);
      // 移除固定列,防止重复生成表格 
      if (tables.querySelector('.el-table__fixed') !== null) {
        tables.removeChild(tables.querySelector('.el-table__fixed'))
      }
      let table_book = XLSX.utils.table_to_book(tables,xlsxParam);
      var table_write = XLSX.write(table_book, {
          bookType: "xlsx",
          bookSST: true,
          type: "array"
      });
      try {
          FileSaver.saveAs(
              new Blob([table_write], { type: "application/octet-stream" }),
              excelName
          );
      } catch (e) {
             console.log(e, table_write);
      }
      return table_write;

}
export default exportExecl

2.页面引用

页面代码如下:

<el-table id="table"></el-table>
<el-button @click="handleExport">导出</el-button>
 import exportExecl from "@/utils/exportExecl.js";
 export default {
    methods:{
    //导出
      handleExport(){
           exportExecl("table", "模板.xlsx");
      }
    }
 }
### 实现 Element UI `el-table` 组件的数据导出功能 为了实现从 `el-table` 组件中导出数据的功能,可以采用以下方法: #### HTML 结构 定义一个用于展示表格的 `<el-table>` 和一个触发导出操作的按钮。 ```html <template> <div> <!-- 表格 --> <el-table :data="pageData.records" style="width: 100%" v-loading="loading" id="out-table"> <!-- 列配置... --> </el-table> <!-- 导出按钮 --> <el-button type="primary" @click="exportExcel">导出 Excel</el-button> </div> </template> ``` 此部分代码展示了如何设置带有特定 ID 的表格以及关联到点击事件处理程序的按钮[^2]。 #### JavaScript 方法 在 Vue 组件内部编写逻辑来执行实际的导出动作。这里假设已经引入了一个名为 `exportExecl` 的工具函数,该函数负责将指定 DOM 节点内的内容转换成 Excel 文件并下载。 ```javascript <script setup> import { ref } from 'vue'; // 假设这是导入自某个实用库中的辅助函数 import exportExecl from '@/utils/exportExecl.js'; const loading = ref(false); const pageData = { records: [ // 初始化记录列表... ] }; function exportExcel() { const tableId = '#out-table'; // 获取要导出的目标表格的选择器 const fileName = '模板.xlsx'; // 设置文件名 try { exportExecl(tableId, fileName); // 执行导出操作 } catch (error) { console.error('导出失败:', error.message || '未知错误'); } } </script> ``` 上述脚本片段说明了怎样通过调用外部定义好的 `exportExecl()` 函数完成具体的导出流程,并且包含了异常捕获机制以应对可能发生的错误情况[^3]。 #### 工具函数 (`@/utils/exportExecl.js`) 如果项目里还没有准备好这个工具类,则可以根据需求自行开发或者寻找第三方插件集成进来。通常这类工具会依赖于一些流行的库比如 SheetJS 或者 FileSaver 来简化跨浏览器兼容性和提高效率。 ```javascript // 这只是一个示意性的例子;具体实现取决于所选技术栈和个人偏好 async function exportExecl(selector, filename) { const $table = document.querySelector(selector); if (!$table) throw new Error(`未找到匹配的选择器 ${selector}`); let wb; // 构建工作簿对象... /* 使用 sheetjs 库作为示例 */ import XLSX from 'xlsx'; wb = XLSX.utils.table_to_book($table); // 创建 Blob 对象并通过 URL.createObjectURL 下载文件 const wbout = XLSX.write(wb, { bookType:'xlsx', type:'array' }); try { const blob = new Blob([wbout], {type:"application/octet-stream"}); const url = window.URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; a.download = filename; document.body.appendChild(a); a.click(); setTimeout(() => { window.URL.revokeObjectURL(url); document.body.removeChild(a); }, 0); } finally { // 清理资源... } } export default exportExecl; ``` 这段伪代码给出了一个简单的基于 SheetJS 的解决方案框架,它能够读取给定的 HTML 表格并将之转化为 Excel 文档供用户保存至本地磁盘上[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pixle0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值