Vue使用xlsx組件輕松實(shí)現(xiàn)Excel導(dǎo)出的完整代碼
一、5分鐘快速上手
1. 安裝核心依賴
npm install xlsx file-saver --save
2. 基礎(chǔ)導(dǎo)出模板(復(fù)制即用)
<template>
<button @click="exportExcel">導(dǎo)出Excel</button>
</template>
<script>
import { saveAs } from 'file-saver';
import XLSX from 'xlsx';
export default {
methods: {
exportExcel() {
// 示例數(shù)據(jù)
const data = [
['姓名', '年齡', '部門'],
['張三', 28, '技術(shù)部'],
['李四', 32, '產(chǎn)品部']
];
// 創(chuàng)建工作簿
const ws = XLSX.utils.aoa_to_sheet(data);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, '員工信息');
// 生成文件并保存
const buffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
const blob = new Blob([buffer], { type: 'application/octet-stream' });
saveAs(blob, '員工列表.xlsx');
}
}
}
</script>
二、高級(jí)功能拓展
1. 復(fù)雜數(shù)據(jù)結(jié)構(gòu)處理
// 對(duì)象數(shù)組轉(zhuǎn)換(自動(dòng)匹配表頭)
const employees = [
{ name: '王五', age: 25, department: '設(shè)計(jì)部' },
{ name: '趙六', age: 30, department: '市場(chǎng)部' }
];
const ws = XLSX.utils.json_to_sheet(employees);
2. 多Sheet頁(yè)導(dǎo)出
const ws1 = XLSX.utils.aoa_to_sheet(/* 數(shù)據(jù)源1 */); const ws2 = XLSX.utils.aoa_to_sheet(/* 數(shù)據(jù)源2 */); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws1, '第一季度'); XLSX.utils.book_append_sheet(wb, ws2, '第二季度');
3. 表格樣式調(diào)整(需xlsx-style擴(kuò)展版)
// 設(shè)置列寬
ws['!cols'] = [{ width: 20 }, { width: 15 }, { width: 25 }];
// 添加標(biāo)題樣式
const titleCell = { v: '員工統(tǒng)計(jì)表', s: { font: { bold: true, sz: 18 }, alignment: { horizontal: 'center' } } };
三、性能優(yōu)化方案
1. 大數(shù)據(jù)量分塊處理
// 使用Web Worker處理百萬(wàn)級(jí)數(shù)據(jù)
const worker = new Worker('./excel.worker.js');
worker.postMessage(largeData);
2. 前端分頁(yè)導(dǎo)出
let currentPage = 1;
const pageSize = 10000;
function exportByPage() {
const pageData = getData(currentPage, pageSize);
// 追加到現(xiàn)有文件...
currentPage++;
}
3. 二進(jìn)制流加速
// 使用Stream模式處理文件
const writer = XLSX.stream.to_csv(wb, { FS: ',' });
const readable = new ReadableStream({ ... });
四、常見(jiàn)問(wèn)題排雷
1. 中文文件名亂碼
saveAs(blob, '\uFEFF' + encodeURIComponent('中文名稱.xlsx'));
2. 日期格式處理
// 轉(zhuǎn)換日期為Excel數(shù)字格式
XLSX.SSF.format('yyyy-mm-dd', new Date());
3. 瀏覽器兼容方案
// IE兼容處理
if (window.navigator.msSaveBlob) {
navigator.msSaveBlob(blob, filename);
}
五、最佳實(shí)踐建議
- 數(shù)據(jù)預(yù)處理:在服務(wù)端完成復(fù)雜計(jì)算,前端只做格式轉(zhuǎn)換
- 內(nèi)存管理:及時(shí)清理不再使用的Worksheet對(duì)象
- 錯(cuò)誤捕獲:添加try-catch處理可能的導(dǎo)出異常
- 進(jìn)度提示:添加加載動(dòng)畫提升用戶體驗(yàn)
掌握這些技巧后,相信你能輕松應(yīng)對(duì)各種Excel導(dǎo)出需求。
到此這篇關(guān)于Vue使用xlsx組件輕松實(shí)現(xiàn)Excel導(dǎo)出的完整示例代碼的文章就介紹到這了,更多相關(guān)Vue xlsx實(shí)現(xiàn)Excel導(dǎo)出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)移動(dòng)端圖片上傳功能
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端圖片上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
vue3.0 搭建項(xiàng)目總結(jié)(詳細(xì)步驟)
這篇文章主要介紹了vue3.0 搭建項(xiàng)目總結(jié)(詳細(xì)步驟),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
使用elementUI表單校驗(yàn)函數(shù)validate需要注意的坑及解決
這篇文章主要介紹了使用elementUI表單校驗(yàn)函數(shù)validate需要注意的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
vue實(shí)現(xiàn)前端保持篩選條件到url并進(jìn)行同步參數(shù)設(shè)計(jì)
這篇文章主要為大家介紹了vue實(shí)現(xiàn)前端保持篩選條件到url并進(jìn)行同步參數(shù)設(shè)計(jì)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

