The front-end exports the XLSX utility functions

Table width adaptive, multi-sheet

First install XLSX, see exportExcel parameters

import { WorkSheet } from 'xlsx'; function jsonToArray (key: string[], jsonData: object[]) { return jsonData.map((v: { [x: string]: any }) => key.map((j: string | number) => { return v[j]; })); } function autoWidthFunc (ws: WorkSheet, data: any[]) { // set worksheet max width per col const colWidth = data.map((row: any[]) => row.map(val => { // if null/undefined if (val == null) { return { wch: 10 }; } else if (val.toString().charCodeAt(0) > 255) { // if chinese return { wch: val.toString().length * 2 }; } else { return { wch: val.toString().length }; }})); // start in the first row const result = colWidth[0]; for (let i = 1; i < colWidth.length; i++) { for (let j = 0; j < colWidth[i].length; j++) { if (result[j].wch < colWidth[i][j].wch) { result[j].wch = colWidth[i][j].wch; } } } ws['!cols'] = result; } type dataItem = { sheetData: []; sheetName: string; }; const exportExcel = ({ key, data, title, filename, autoWidth }: { key: string[]; data: dataItem[]; title: string[]; filename: string; autoWidth: boolean; }) => { import('xlsx').then(XLSX => { const wb = XLSX.utils.book_new(); data.forEach(item => { const arr = jsonToArray(key, item.sheetData); arr.unshift(title); const ws = XLSX.utils.aoa_to_sheet(arr); if (autoWidth) { autoWidthFunc(ws, arr); } XLSX.utils.book_append_sheet(wb, ws, item.sheetName); }); XLSX.writeFile(wb, filename + '.xlsx'); }); }; export default exportExcel;Copy the code