Vue项目中el-table导出Excel

1、安装相关的依赖;(xlsx,file-saver)
npm install --save xlsx file-saver
2、在main.js里引入
import FileSaver from 'file-saver'

import * as XLSX from 'xlsx'

Vue.prototype.$FileSaver = FileSaver; //设置全局

Vue.prototype.$XLSX = XLSX; //设置全局
3、设置表格的id
<el-table
    id="out-table"
    :header-cell-style="{
    background: 'rgba(245,248,253,1)',
    color: '#554'
    }"
    :row-style="{ height: '30px' }"
    :cell-style="{ padding: '0px'}"
    border
    :data="tableData"
    v-loading="loading"
    stripe
>
<el-table>
4、导出按钮(触发)
<el-button
    size="small"
    type="primary"
    icon="el-icon-download"
    @click="exportData"
>导出</el-button>
5、下载处理
methods: {
    //导出功能
    exportData(){
      let excelName = '导出表格名称.xlsx';
      var xlsxParam = { raw: true };//转换成excel时,使用原始的格式
      // 克隆节点
      let tables = document.getElementById("out-table").cloneNode(true);
      // 判断是否为固定列,解决(为固定列时,会重复生成表格)
      if (tables.querySelector('.el-table__fixed') !== null) {
        tables.removeChild(tables.querySelector('.el-table__fixed'))
      }
      //在这之前可以修改tables添加东西
      let table_book = this.$XLSX.utils.table_to_book(tables,xlsxParam);
      var table_write = this.$XLSX.write(table_book, {
          bookType: "xlsx",
          bookSST: true,
          type: "array"
      });
      //在这可以操作table_write设置导出表格样式
      try {
          this.$FileSaver.saveAs(
              new Blob([table_write], { type: "application/octet-stream" }),
              excelName
          );
      } catch (e) {
          if (typeof console !== "undefined") console.log(e, table_write);
      }
      return table_write;
      
    }
}

Vue3中的`el-table`组件是Element UI库中的表格组件,提供了一种灵活的方式来展示数据。要将`el-table`的数据导出Excel文件,通常需要结合`vue-excel-export`这个插件来实现。以下是一个简单的步骤概述: 1. 安装插件: 在项目中安装`vue-excel-export`,可以通过npm或yarn: ```bash npm install vue-excel-export --save # 或者 yarn add vue-excel-export ``` 2. 引入并配置插件: 在`main.js`或适当的地方引入并注册插件: ```javascript import VueExcelExport from 'vue-excel-export'; Vue.use(VueExcelExport, { fileName: 'table_data', // 自定义文件名 sheetName: 'Table Data', // 自定义sheet名称 autoColumnWidth: true, // 是否自动调整列宽 excludeHeader: false, // 是否包含表头 }); ``` 3. 生成表格: 在`el-table`组件上使用`@export-excel`事件监听导出操作: ```html <el-table :data="tableData" @export-excel="handleExport"> <!-- ...你的table列和配置... --> </el-table> ``` 4. 处理导出函数: ```javascript methods: { handleExport({ columns, data }) { const workBook = new ExcelJS.Workbook(); const worksheet = workBook.addWorksheet('Sheet 1'); columns.forEach((column) => { worksheet.columns.push(column); }); data.forEach((row) => { worksheet.addRow(row); }); workBook.xlsx.writeFile('export.xlsx'); // 保存到本地 }, } ``` 5. 使用`this.$excel.export()`: 如果想在某个按钮点击事件中触发导出,可以这样使用: ```javascript exportExcelBtnClick() { this.$excel.export({ columns: this.tableColumns, data: this.tableData, }); }, ``` 相关问题-- 1. `vue-excel-export`插件的作用是什么? 2. 如何在`el-table`中设置导出Excel的默认文件名和sheet名称? 3. 导出时如何自定义工作簿和工作表的内容?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值