最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue使用xlsx插件導(dǎo)出excel文件的詳細(xì)指南

 更新時(shí)間:2025年04月04日 09:08:00   作者:zoahxmy0929  
第三方庫(kù)xlsx提供了強(qiáng)大的功能來(lái)處理Excel文件,它可以簡(jiǎn)化導(dǎo)出Excel文件這個(gè)過(guò)程,下面小編就來(lái)為大家詳細(xì)講講Vue如何通過(guò)xlsx導(dǎo)出excel,需要的小伙伴可以了解下

安裝與引入

安裝

npm install xlsx
npm install file-saver
# 或者
yarn add xlsx
yarn add file-saver

引入

import * as XLSX from 'xlsx';
import FileSaver from 'file-saver'

基本功能

讀取 Excel 文件

// 讀取文件內(nèi)容
const workbook = XLSX.readFile('path/to/file.xlsx');

// 獲取第一個(gè)工作表
const firstSheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[firstSheetName];

// 將工作表轉(zhuǎn)換為 JSON 格式
const data = XLSX.utils.sheet_to_json(worksheet);
console.log(data);

寫(xiě)入 Excel 文件

// 創(chuàng)建工作簿
const workbook = XLSX.utils.book_new();

// 創(chuàng)建工作表
const data = [
  ['Name', 'Age', 'Email'],
  ['Alice', 25, 'alice@example.com'],
  ['Bob', 30, 'bob@example.com']
];
const worksheet = XLSX.utils.aoa_to_sheet(data);

// 將工作表添加到工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');

// 導(dǎo)出文件
XLSX.writeFile(workbook, 'output.xlsx');

高級(jí)功能

自定義樣式

// 創(chuàng)建樣式
const ws = XLSX.utils.aoa_to_sheet(data);
const wscols = [
  { wch: 15 },
  { wch: 10 },
  { wch: 30 }
];
ws['!cols'] = wscols;

// 添加樣式
const cell = ws['A1'];
cell.s = {
  font: { bold: true },
  fill: { fgColor: { rgb: 'FF0000' } }
};

合并單元格

// 合并單元格
ws['!merges'] = [
  { s: { r: 0, c: 0 }, e: { r: 0, c: 2 } } // 合并 A1:C1
];

添加水印

// 添加水印
XLSX.utils.sheet_add_aoa(ws, [['Watermark']], { origin: -1 });

使用示例

導(dǎo)出數(shù)據(jù)到 Excel 方法

import * as XLSX from 'xlsx';
import FileSaver from 'file-saver';

export function exportJsonToExcel(options) {
  // 默認(rèn)配置
  const defaultOptions = {
    sheetName: 'Sheet1',
    autoWidth: true,
    watermark: ''
  };
  const { header, data, filename, sheetName, autoWidth, watermark } = {
    ...defaultOptions,
    ...options
  };

  // 1. 創(chuàng)建工作簿
  const wb = XLSX.utils.book_new();

  // 2. 處理數(shù)據(jù)(添加表頭)
  const exportData = [header, ...data];

  // 3. 創(chuàng)建工作表
  const ws = XLSX.utils.aoa_to_sheet(exportData);

  // 4. 自動(dòng)設(shè)置列寬
  if (autoWidth) {
    const colWidths = header.map((_, colIndex) => {
      return {
        wch: Math.max(
          ...exportData.map(row => {
            const cellValue = row[colIndex];
            if (cellValue == null) return 10;
            return String(cellValue).replace(/[^\x00-\xff]/g, 'aa').length * 8 + 2;
          })
        )
      };
    });
    ws['!cols'] = colWidths;
  }

  // 5. 添加水印
  if (watermark) {
    if (!ws['!merges']) ws['!merges'] = [];
    ws['!merges'].push({
      s: { r: exportData.length + 1, c: 0 },
      e: { r: exportData.length + 1, c: header.length - 1 }
    });
    XLSX.utils.sheet_add_aoa(ws, [[watermark]], { origin: -1 });
  }

  // 6. 將工作表添加到工作簿
  XLSX.utils.book_append_sheet(wb, ws, sheetName);

  // 7. 導(dǎo)出文件
  const excelBuffer = XLSX.write(wb, {
    bookType: 'xlsx',
    type: 'array'
  });
  const blob = new Blob([excelBuffer], {
    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  });
  FileSaver.saveAs(blob, `${filename}.xlsx`);
}

參數(shù)說(shuō)明

header: 表頭數(shù)組,包含列名。

data: 數(shù)據(jù)數(shù)組,包含要導(dǎo)出的數(shù)據(jù)。

filename: 導(dǎo)出的 Excel 文件名。

sheetName: 工作表名稱(chēng),默認(rèn)為 Sheet1。

autoWidth: 是否自動(dòng)調(diào)整列寬,默認(rèn)為 true。

watermark: 水印文本,默認(rèn)為空字符串。

使用

import { exportJsonToExcel } from "@/utils/index";

// 導(dǎo)出Excel
const exportExcel = () => {
  const header = [
    "時(shí)間",
    "類(lèi)型",
    "地址",
    "ID",
  ];
  const data = tableData.value.map((item) => [
    item.time,
    item.type,
    item.address,
    item.id,
  ]);

  exportJsonToExcel({
    header,
    data,
    filename: "excel名",
  });
};

到此這篇關(guān)于Vue使用xlsx插件導(dǎo)出excel文件的詳細(xì)指南的文章就介紹到這了,更多相關(guān)Vue xlsx導(dǎo)出excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue組件與生命周期詳細(xì)講解

    Vue組件與生命周期詳細(xì)講解

    Vue的生命周期就是vue實(shí)例從創(chuàng)建到銷(xiāo)毀的全過(guò)程,也就是new Vue() 開(kāi)始就是vue生命周期的開(kāi)始。Vue 實(shí)例有?個(gè)完整的?命周期,也就是從開(kāi)始創(chuàng)建、初始化數(shù)據(jù)、編譯模版、掛載Dom -> 渲染、更新 -> 渲染、卸載 等?系列過(guò)程,稱(chēng)這是Vue的?命周期
    2022-10-10
  • vue3?組件與API直接使用的方法詳解(無(wú)需import)

    vue3?組件與API直接使用的方法詳解(無(wú)需import)

    這篇文章主要介紹了vue3?組件與API直接使用的方法(無(wú)需import),主要包括vue3自動(dòng)導(dǎo)入和API的自動(dòng)引入問(wèn)題,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Vue在頁(yè)面右上角實(shí)現(xiàn)可懸浮/隱藏的系統(tǒng)菜單

    Vue在頁(yè)面右上角實(shí)現(xiàn)可懸浮/隱藏的系統(tǒng)菜單

    這篇文章主要介紹了Vue在頁(yè)面右上角實(shí)現(xiàn)可懸浮/隱藏的系統(tǒng)菜單,實(shí)現(xiàn)思路大概是通過(guò)props將showCancel這個(gè)Boolean值傳遞到子組件,對(duì)父子組件分別綁定事件,來(lái)控制這個(gè)系統(tǒng)菜單的顯示狀態(tài)。需要的朋友可以參考下
    2018-05-05
  • vue3?typescript封裝axios過(guò)程示例

    vue3?typescript封裝axios過(guò)程示例

    這篇文章主要為大家介紹了vue3?typescript封裝axios過(guò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Vuex模塊化用法?跨模塊調(diào)用的方式

    Vuex模塊化用法?跨模塊調(diào)用的方式

    這篇文章主要介紹了Vuex模塊化用法?跨模塊調(diào)用的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-10-10
  • vue2.0.js的多級(jí)聯(lián)動(dòng)選擇器實(shí)現(xiàn)方法

    vue2.0.js的多級(jí)聯(lián)動(dòng)選擇器實(shí)現(xiàn)方法

    下面小編就為大家分享一篇vue2.0.js的多級(jí)聯(lián)動(dòng)選擇器實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • vue實(shí)現(xiàn)橫向時(shí)間軸

    vue實(shí)現(xiàn)橫向時(shí)間軸

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)橫向時(shí)間軸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Vue遞歸實(shí)現(xiàn)樹(shù)形菜單方法實(shí)例

    Vue遞歸實(shí)現(xiàn)樹(shù)形菜單方法實(shí)例

    學(xué)習(xí)vue有一段時(shí)間了,最近使用vue做了一套后臺(tái)管理系統(tǒng),其中使用最多就是遞歸組件,下面這篇文章主要給大家介紹了關(guān)于Vue利用遞歸實(shí)現(xiàn)樹(shù)形菜單的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-11-11
  • vue 項(xiàng)目接口管理的實(shí)現(xiàn)

    vue 項(xiàng)目接口管理的實(shí)現(xiàn)

    在vue開(kāi)發(fā)中,會(huì)涉及到很多接口的處理,當(dāng)項(xiàng)目足夠大時(shí),就需要定義規(guī)范統(tǒng)一的接口,本文就來(lái)介紹一下vue 項(xiàng)目接口管理,具有一定的參考價(jià)值,感興趣的小伙伴可以一起來(lái)了解一下
    2019-01-01
  • Vue中的directive指令快速使用

    Vue中的directive指令快速使用

    這篇文章主要介紹了Vue中的directive指令快速使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評(píng)論

曲沃县| 乌拉特中旗| 酒泉市| 华坪县| 尼勒克县| 务川| 蒲城县| 武汉市| 乳源| 开封县| 新乐市| 阳曲县| 石柱| 山西省| 北京市| 苍南县| 微博| 普兰店市| 铅山县| 东辽县| 玉田县| 兴文县| 胶州市| 宁武县| 林周县| 康定县| 鄂托克前旗| 左云县| 天水市| 渭南市| 泗阳县| 米林县| 长寿区| 登封市| 射阳县| 嘉黎县| 盘锦市| 泸州市| 宣化县| 黄山市| 商洛市|