1、在工具类中创建一个脚本文件
import XLSXS from "xlsx-js-style";
export function exportExcel(tableValueData, tableTitleData, fileName, tableHeader) {
const header = [];
const body = [];
let strMaxNum = {};
tableValueData.forEach((e, i) => {
let styleArr = [];
e.forEach((ele, ei) => {
if (!ele) ele = 0;
let styleObj = {
v: ele,
t: "s",
s: {
alignment: {
vertical: "center",
horizontal: "center",
},
border: {
top: { style: "thin" },
left: { style: "thin" },
bottom: { style: "thin" },
right: { style: "thin" },
},
},
};
styleArr.push(styleObj);
strMaxNum[ei] = strMaxNum[ei]
? strMaxNum[ei] > ele.toString().length
? strMaxNum[ei]
: ele.toString().length
: ele.toString().length;
});
body.push(styleArr);
});
let cols = [];
let title1 = [];
tableTitleData.forEach((item, index) => {
let obj = {
v: item,
t: "s",
s: {
alignment: {
vertical: "center",
horizontal: "center",
},
border: {
top: { style: "thin" },
left: { style: "thin" },
bottom: { style: "thin" },
right: { style: "thin" },
},
},
};
title1.push(obj);
let resultMaxNum = Number(item.length) > strMaxNum[index] ? Number(item.length) : strMaxNum[index];
let colsObj = { wch: resultMaxNum * 2 + 5 };
cols.push(colsObj);
if (index == 0) {
header.push({
v: tableHeader,
t: "s",
s: {
font: {
bold: true,
sz: 14,
name: "宋体",
},
alignment: {
vertical: "center",
horizontal: "center",
},
border: {
top: { style: "thin" },
left: { style: "thin" },
bottom: { style: "thin" },
right: { style: "thin" },
},
},
});
} else {
header.push({
v: '',
t: "s",
s: {
font: {
bold: true,
sz: 14,
name: "宋体",
},
alignment: {
vertical: "center",
horizontal: "center",
},
border: {
top: { style: "thin" },
left: { style: "thin" },
bottom: { style: "thin" },
right: { style: "thin" },
},
},
});
}
});
body.unshift(title1);
body.unshift(header);
const sheet = XLSXS.utils.aoa_to_sheet(body);
sheet["!cols"] = cols;
const rows = [{ hpx: 20 }, { hpx: 16 }, { hpx: 18 }];
sheet["!rows"] = rows;
let mergeNum = tableTitleData.length - 1;
const merges = [{ s: { r: 0, c: 0 }, e: { r: 0, c: mergeNum } }];
sheet["!merges"] = merges;
const workbook = XLSXS.utils.book_new();
XLSXS.utils.book_append_sheet(workbook, sheet, tableHeader);
XLSXS.writeFile(workbook, `${fileName}.xlsx`);
}
2、在需要的地方引入使用
exportExcel(arr1,arr2,var1,var2)