Vue使用xlsx插件導(dǎo)出excel文件的詳細(xì)指南
安裝與引入
安裝
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);
寫入 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: 工作表名稱,默認(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í)間",
"類型",
"地址",
"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)文章希望大家以后多多支持腳本之家!
- 詳解Vue如何使用xlsx庫(kù)導(dǎo)出Excel文件
- Vue應(yīng)用中使用xlsx庫(kù)實(shí)現(xiàn)Excel文件導(dǎo)出的詳細(xì)步驟
- Vue3如何利用xlsx、xlsx-js-style導(dǎo)出Excel表格使用(適合新手)
- vue使用xlsx庫(kù)和xlsx-style庫(kù)導(dǎo)入導(dǎo)出excel、設(shè)置單元格背景色、文字居中、合并單元格、設(shè)置列寬
- 在Vue中使用xlsx組件實(shí)現(xiàn)Excel導(dǎo)出功能的步驟詳解
- vue中使用js-xlsx導(dǎo)出excel的實(shí)現(xiàn)方法
相關(guān)文章
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)菜單,實(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ò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
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ù)形菜單方法實(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開(kāi)發(fā)中,會(huì)涉及到很多接口的處理,當(dāng)項(xiàng)目足夠大時(shí),就需要定義規(guī)范統(tǒng)一的接口,本文就來(lái)介紹一下vue 項(xiàng)目接口管理,具有一定的參考價(jià)值,感興趣的小伙伴可以一起來(lái)了解一下2019-01-01

