欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue將el-table導(dǎo)出為excel文件的實(shí)現(xiàn)方法

 更新時(shí)間:2025年02月25日 10:48:18   作者:程序員小續(xù)  
在 Vue + Element UI 中,el-table 數(shù)據(jù)導(dǎo)出 Excel 文件,可以使用 xlsx(SheetJS)庫(kù)進(jìn)行處理,以下是詳細(xì)的實(shí)現(xiàn)方法,包括安裝依賴、代碼示例和優(yōu)化建議,需要的朋友可以參考下

1. 安裝依賴

首先,安裝 xlsx 庫(kù):

npm install xlsx file-saver --save
  • xlsx:用于解析和生成 Excel 文件。
  • file-saver:用于保存導(dǎo)出的 Excel 文件。

2. 代碼實(shí)現(xiàn)

完整示例

vue
復(fù)制編輯
<template>
  <div>
    <el-button type="primary" @click="exportExcel">導(dǎo)出 Excel</el-button>
    <el-table :data="tableData" border style="width: 100%">
      <el-table-column prop="id" label="ID" width="80"></el-table-column>
      <el-table-column prop="name" label="姓名" width="120"></el-table-column>
      <el-table-column prop="age" label="年齡" width="80"></el-table-column>
      <el-table-column prop="city" label="城市" width="150"></el-table-column>
    </el-table>
  </div>
</template>
 
<script>
import * as XLSX from "xlsx";
import { saveAs } from "file-saver";
 
export default {
  data() {
    return {
      tableData: [
        { id: 1, name: "張三", age: 25, city: "北京" },
        { id: 2, name: "李四", age: 30, city: "上海" },
        { id: 3, name: "王五", age: 28, city: "廣州" },
      ],
    };
  },
  methods: {
    exportExcel() {
      // 1. 提取表格數(shù)據(jù)
      const data = this.tableData.map((row) => ({
        ID: row.id,
        姓名: row.name,
        年齡: row.age,
        城市: row.city,
      }));
 
      // 2. 創(chuàng)建工作表
      const worksheet = XLSX.utils.json_to_sheet(data);
 
      // 3. 創(chuàng)建工作簿
      const workbook = XLSX.utils.book_new();
      XLSX.utils.book_append_sheet(workbook, worksheet, "表格數(shù)據(jù)");
 
      // 4. 生成 Excel 并下載
      const excelBuffer = XLSX.write(workbook, {
        bookType: "xlsx",
        type: "array",
      });
 
      const blob = new Blob([excelBuffer], {
        type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
      });
 
      saveAs(blob, "表格數(shù)據(jù).xlsx");
    },
  },
};
</script>

3. 代碼解析

exportExcel 方法

  1. 格式化數(shù)據(jù)

    • 先將 el-table 的 tableData 數(shù)據(jù)格式化成適合 Excel 的 JSON 結(jié)構(gòu)。
    • json_to_sheet 方法用于將 JSON 轉(zhuǎn)換為 Excel 可識(shí)別的表格。
  2. 創(chuàng)建工作表 & 工作簿

    • XLSX.utils.json_to_sheet(data) 創(chuàng)建 Excel 工作表。
    • XLSX.utils.book_new() 創(chuàng)建新的 Excel 文件(工作簿)。
    • XLSX.utils.book_append_sheet(workbook, worksheet, "表格數(shù)據(jù)") 將表格數(shù)據(jù)添加到工作簿。
  3. 生成 Excel 并觸發(fā)下載

    • XLSX.write(workbook, { bookType: "xlsx", type: "array" }) 生成 Excel 文件的二進(jìn)制數(shù)據(jù)。
    • new Blob([...], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }) 生成 Excel 文件 Blob。
    • saveAs(blob, "表格數(shù)據(jù).xlsx") 觸發(fā)瀏覽器下載。

4. 額外優(yōu)化

1. 自定義表頭

可以用 el-table-column 的 label 作為 Excel 表頭,而不是手動(dòng)寫:

exportExcel() {
  const headers = this.$refs.table.columns.map(col => col.label); // 獲取表頭
  const keys = this.$refs.table.columns.map(col => col.property); // 獲取字段
 
  const data = this.tableData.map(row => {
    let obj = {};
    keys.forEach((key, index) => {
      obj[headers[index]] = row[key];
    });
    return obj;
  });
 
  const worksheet = XLSX.utils.json_to_sheet(data);
  const workbook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(workbook, worksheet, "數(shù)據(jù)");
 
  const excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });
  const blob = new Blob([excelBuffer], {
    type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  });
 
  saveAs(blob, "表格數(shù)據(jù).xlsx");
}

然后在 el-table 中添加 ref="table"

2. 處理合并單元格

可以使用 XLSX.utils.sheet_add_aoa 進(jìn)行合并:

XLSX.utils.sheet_add_aoa(worksheet, [["ID", "姓名", "年齡", "城市"]], { origin: "A1" });

這樣可以在 A1 手動(dòng)插入表頭。

3. 設(shè)置列寬

worksheet["!cols"] = [
  { wch: 10 }, // ID列寬
  { wch: 20 }, // 姓名列寬
  { wch: 10 }, // 年齡列寬
  { wch: 15 }, // 城市列寬
];

5. 結(jié)論

  • 適用于 Vue 2.0 + Element UI 的 el-table
  • 可以導(dǎo)出 Excel,支持中文表頭
  • 支持自定義表頭、列寬、格式優(yōu)化
  • 減少人工操作,提高開發(fā)效率

如果你需要更復(fù)雜的 Excel 處理,比如 合并單元格、設(shè)置樣式、多個(gè) Sheet 導(dǎo)出,可以繼續(xù)優(yōu)化!

到此這篇關(guān)于Vue將el-table導(dǎo)出為excel文件的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Vue el-table導(dǎo)出為excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Electron中如何使用SQLite存儲(chǔ)筆記

    詳解Electron中如何使用SQLite存儲(chǔ)筆記

    這篇文章主要為大家介紹了Electron中如何使用SQLite存儲(chǔ)筆記示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Vue自定義表單驗(yàn)證(rule,value,callback)使用詳解

    Vue自定義表單驗(yàn)證(rule,value,callback)使用詳解

    這篇文章主要介紹了Vue自定義表單驗(yàn)證(rule,value,callback)使用詳解,今天我們講一講自定義驗(yàn)證規(guī)則具體使用場(chǎng)景和它的三個(gè)參數(shù)意思和使用,需要的朋友可以參考下
    2023-07-07
  • vue router動(dòng)態(tài)路由設(shè)置參數(shù)可選問題

    vue router動(dòng)態(tài)路由設(shè)置參數(shù)可選問題

    這篇文章主要介紹了vue-router動(dòng)態(tài)路由設(shè)置參數(shù)可選,文中給大家提到了vue-router 動(dòng)態(tài)添加 路由的方法,需要的朋友可以參考下
    2019-08-08
  • vue項(xiàng)目main.js使用方法詳細(xì)介紹

    vue項(xiàng)目main.js使用方法詳細(xì)介紹

    這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目main.js使用方法的相關(guān)資料,main.js文件是程序的入口文件,加載各種公共組件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • 基于vue2.0+vuex的日期選擇組件功能實(shí)現(xiàn)

    基于vue2.0+vuex的日期選擇組件功能實(shí)現(xiàn)

    這篇文章主要介紹了 基于vue2.0+vuex的日期選擇組件功能實(shí)現(xiàn),詳細(xì)介紹了使用vue編寫的日期組件,,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-03-03
  • Vue關(guān)于組件化開發(fā)知識(shí)點(diǎn)詳解

    Vue關(guān)于組件化開發(fā)知識(shí)點(diǎn)詳解

    在本篇文章里,小編給大家分享的是關(guān)于Vue關(guān)于組件化開發(fā)知識(shí)點(diǎn)詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • vue如何定義全局變量和全局方法實(shí)例代碼

    vue如何定義全局變量和全局方法實(shí)例代碼

    在項(xiàng)目中經(jīng)常會(huì)復(fù)用一些變量和函數(shù),比如用戶的登錄token,用戶信息等,這時(shí)將它們?cè)O(shè)為全局的就顯得很重要了,下面這篇文章主要給大家介紹了關(guān)于vue如何定義全局變量和全局方法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Vue3實(shí)現(xiàn)刷新頁(yè)面局部?jī)?nèi)容的示例代碼

    Vue3實(shí)現(xiàn)刷新頁(yè)面局部?jī)?nèi)容的示例代碼

    本文主要介紹了Vue3實(shí)現(xiàn)刷新頁(yè)面局部?jī)?nèi)容的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • vue3如何將html元素變成canvas(海報(bào)生成),進(jìn)行圖片保存/截圖

    vue3如何將html元素變成canvas(海報(bào)生成),進(jìn)行圖片保存/截圖

    這篇文章主要介紹了vue3實(shí)現(xiàn)將html元素變成canvas(海報(bào)生成),進(jìn)行圖片保存/截圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue實(shí)現(xiàn)商城購(gòu)物車功能

    vue實(shí)現(xiàn)商城購(gòu)物車功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)商城購(gòu)物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評(píng)論