實現功能:分標題行導出數據過多,一個sheet表里表格條數有限制,需要分sheet顯示。
步驟1:安裝插件包
npm install exceljs
npm install xlsx
步驟2:引用包
? ? import XLSX from 'xlsx';
?? ?import ExcelJS from 'exceljs';
步驟3:舉例按關鍵代碼說明
//通用方法
async xlsxExport(titles,columns,data,pageSize){let workbook = new ExcelJS.Workbook(); let pageNo = Math.ceil(data.length*1.0/pageSize);for(var p=0;p<pageNo;p++){//創建Sheet表const worksheet = workbook.addWorksheet('Sheet'+(p+1)); for(let t=1;t<=titles.length;t++){ //判斷單元格是否已合并if(!worksheet.getRow(t).getCell(1).isMerged){worksheet.mergeCells( t, 0 ,t, columns.length );}//合并單元格填充值worksheet.getRow(t).getCell(1).value=titles[t-1];//單元格增加樣式if(t==1){worksheet.getRow(t).getCell(1).alignment = { vertical: 'middle', horizontal: 'center' };worksheet.getRow(t).getCell(1).font = { bold: true, size: 16 };}else{ worksheet.getRow(t).getCell(1).alignment = {vertical: 'middle', horizontal: 'left' };}}//填充標題列worksheet.addRow(columns);let pdata = [];//組織當前sheet的數據結構data.forEach(item=>{if(item[0]>=p*pageSize && item[0]<=(p+1)*pageSize){pdata.push(item);}});worksheet.addRows(pdata);}//所有sheet填充完,寫入xlsx文件并下載const buffer = await workbook.xlsx.writeBuffer();const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });// 創建下載鏈接const url = URL.createObjectURL(blob);const link = document.createElement('a');link.href = url;link.download = titles[0]+".xlsx";document.body.appendChild(link);link.click();document.body.removeChild(link);URL.revokeObjectURL(url); }
步驟4:舉例應用
let str2 = `ROWS,A,B,C`;
let titles=["excel導出實例",`當前日期:${this.currTime}];
let columns=["序號","A對應的列標題","B對應的列標題","C對應的列標題"];
let data =[{[對應str2的值]},{[對應str2的值]}];//對應數據值
let pageSize = 1000;//對應sheet表顯示條數
await this.xlsxExport(titles,columns,data,pageSize);