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

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項(xiàng)目每次發(fā)版后要清理瀏覽器緩存問(wèn)題解決辦法

    Vue項(xiàng)目每次發(fā)版后要清理瀏覽器緩存問(wèn)題解決辦法

    最近項(xiàng)目更新頻繁,每次一更新客戶(hù)都說(shuō)還跟之前的一樣,一查原因是因?yàn)榭蛻?hù)沒(méi)有清空瀏覽器的緩存,所以為了方便客戶(hù)看到最新版本,開(kāi)始調(diào)研再發(fā)布新版本后自動(dòng)清理緩存,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目每次發(fā)版后要清理瀏覽器緩存問(wèn)題的解決辦法,需要的朋友可以參考下
    2024-02-02
  • Vue3使用router,params傳參為空問(wèn)題

    Vue3使用router,params傳參為空問(wèn)題

    這篇文章主要介紹了Vue3使用router,params傳參為空問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 詳解Vue學(xué)習(xí)筆記進(jìn)階篇之列表過(guò)渡及其他

    詳解Vue學(xué)習(xí)筆記進(jìn)階篇之列表過(guò)渡及其他

    本篇文章主要介紹了詳解Vue學(xué)習(xí)筆記進(jìn)階篇之列表過(guò)渡及其他,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • vue滾動(dòng)插件better-scroll使用詳解

    vue滾動(dòng)插件better-scroll使用詳解

    這篇文章主要為大家詳細(xì)介紹了vue滾動(dòng)插件better-scroll,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Vue.js中的組件系統(tǒng)

    Vue.js中的組件系統(tǒng)

    這篇文章主要介紹了Vue.js之組件系統(tǒng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • 詳細(xì)解讀VUE父子組件的使用

    詳細(xì)解讀VUE父子組件的使用

    這篇文章主要介紹了詳細(xì)解讀VUE父子組件的使用,今天來(lái)講一種子父組件深度耦合的方式,使我們不用額外的創(chuàng)建新的組件,也可以達(dá)到一些效果,下面與你們分享一下
    2023-05-05
  • Vue路由跳轉(zhuǎn)與接收參數(shù)的實(shí)現(xiàn)方式

    Vue路由跳轉(zhuǎn)與接收參數(shù)的實(shí)現(xiàn)方式

    這篇文章主要介紹了Vue路由跳轉(zhuǎn)與接收參數(shù)的實(shí)現(xiàn)方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • vue和react項(xiàng)目中key的作用示例詳解

    vue和react項(xiàng)目中key的作用示例詳解

    這篇文章主要為大家介紹了vue和react項(xiàng)目中key的作用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Vue框架中如何調(diào)用模擬數(shù)據(jù)你知道嗎

    Vue框架中如何調(diào)用模擬數(shù)據(jù)你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Vue框架中如何調(diào)用模擬數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 解決element ui select下拉框不回顯數(shù)據(jù)問(wèn)題的解決

    解決element ui select下拉框不回顯數(shù)據(jù)問(wèn)題的解決

    這篇文章主要介紹了解決element ui select下拉框不回顯數(shù)據(jù)問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02

最新評(píng)論