import Excel from 'exceljs' export function exportExcelWithTotal(sheetName, columns, title, conditional, headerArr, data, totalRow, numFmts, merge) { var workbook = new Excel.Workbook() var sheet = workbook.addWorksheet(sheetName) sheet.columns = columns const maxColCode = String.fromCharCode(64 + columns.length) // 处理标题 sheet.mergeCells(`A1:${maxColCode}2`) sheet.getCell('A1').value = title sheet.getCell('A1').alignment = { vertical: 'middle', horizontal: 'center' } sheet.getCell('A1').font = { name: 'SimSun', family: 4, size: 13, bold: true } sheet.mergeCells(`A3:${maxColCode}3`) sheet.getCell('A3').value = conditional sheet.getCell('A3').alignment = { vertical: 'middle', horizontal: 'right' } // 列头 sheet.getRow(4).values = headerArr sheet.getRow(4).font = { name: 'SimSun', family: 4, size: 11, bold: true } sheet.getRow(4).alignment = { vertical: 'middle', horizontal: 'left' } sheet.addRows(data) numFmts.forEach(element => { sheet.getColumn(element.colIndex).numFmt = element.format }) sheet.addRow(totalRow) sheet.getRow(data.length + 5).font = { name: 'SimSun', family: 4, size: 11, bold: true } if (merge) { sheet.mergeCells(merge) } sheet.eachRow((row, number) => { if (number > 3) { row.eachCell(cell => { cell.alignment = { vertical: 'center', horizontal: 'left' } cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } } }) } }) workbook.xlsx .writeBuffer({ base64: true }) .then(function(xls64) { var data = new Blob([xls64], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) if ('msSaveOrOpenBlob' in navigator) { window.navigator.msSaveOrOpenBlob(data, `${sheetName} ${title}.xlsx`) } else { var a = document.createElement('a') var url = URL.createObjectURL(data) a.href = url a.download = `${sheetName} ${title}.xlsx` document.body.appendChild(a) a.click() setTimeout(function() { document.body.removeChild(a) window.URL.revokeObjectURL(url) }, 0) } }) }