更新成果报表导出功能

This commit is contained in:
ForeverSmiYng 2026-03-10 11:21:24 +08:00
parent 2a2c0fe2d7
commit 1910f15564

View File

@ -728,6 +728,7 @@ async function generateTemplate(data) {
data.contracts[4].reserve = null; data.contracts[4].reserve = null;
// data.contracts[5].addtional = null; // data.contracts[5].addtional = null;
// data.contracts[5].reserve = null; // data.contracts[5].reserve = null;
console.log(data)
try { try {
// 获取模板 // 获取模板
let templateExcel = 'template20260226001test010'; let templateExcel = 'template20260226001test010';
@ -740,9 +741,6 @@ async function generateTemplate(data) {
let fm_sheet = workbook.getWorksheet('封面'); let fm_sheet = workbook.getWorksheet('封面');
let ml_sheet = workbook.getWorksheet('目录'); let ml_sheet = workbook.getWorksheet('目录');
let yz01_sheet = workbook.getWorksheet('预总01表'); let yz01_sheet = workbook.getWorksheet('预总01表');
let f01_sheet = workbook.getWorksheet('辅01表');
let f02_sheet = workbook.getWorksheet('辅02表');
let f03_sheet = workbook.getWorksheet('辅03表');
yz01_sheet.headerFooter.oddHeader = yz01_sheet.headerFooter.oddHeader.replace(/×××/g, data.name); yz01_sheet.headerFooter.oddHeader = yz01_sheet.headerFooter.oddHeader.replace(/×××/g, data.name);
// 更新封面 // 更新封面
@ -786,61 +784,26 @@ async function generateTemplate(data) {
} }
} }
// 更新辅01表的列数
let f01Mod = (data.contracts.length) % 3;
let f01Num = (data.contracts.length - f01Mod) / 3;
switch (f01Mod) {
case 0:
f01_sheet.spliceColumns(11, 14);
break;
case 1:
f01_sheet.spliceColumns(11, 8);
break;
case 2:
f01_sheet.spliceColumns(19, 6);
break;
}
if (f01Num == 0) {
f01_sheet.spliceColumns(1, 10);
} else {
if (f01Num > 1) {
for (let i = 0; i < f01Num - 1; i++) {
insertAndCopyColumn(10 * (i + 1) + 1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], f01_sheet);
}
}
for (let i = 0; i < f01Num; i++) {
f01_sheet.mergeCells(1, i * 10 + 1, 2, i * 10 + 1);
f01_sheet.mergeCells(1, i * 10 + 2, 2, i * 10 + 2);
f01_sheet.mergeCells(1, i * 10 + 3, 2, i * 10 + 3);
f01_sheet.mergeCells(1, i * 10 + 10, 2, i * 10 + 10);
f01_sheet.mergeCells(1, i * 10 + 4, 1, i * 10 + 5);
f01_sheet.getRow(1).getCell(i * 10 + 4).value = data.contracts[i * 3].name;
f01_sheet.mergeCells(1, i * 10 + 6, 1, i * 10 + 7);
f01_sheet.getRow(1).getCell(i * 10 + 6).value = data.contracts[i * 3 + 1].name;
f01_sheet.mergeCells(1, i * 10 + 8, 1, i * 10 + 9);
f01_sheet.getRow(1).getCell(i * 10 + 8).value = data.contracts[i * 3 + 2].name;
}
}
if (f01Mod > 0) {
f01_sheet.mergeCells(1, f01Num * 10 + 1, 2, f01Num * 10 + 1);
f01_sheet.mergeCells(1, f01Num * 10 + 2, 2, f01Num * 10 + 2);
f01_sheet.mergeCells(1, f01Num * 10 + 3, 2, f01Num * 10 + 3);
f01_sheet.mergeCells(1, f01Num * 10 + 2 * f01Mod + 4, 2, f01Num * 10 + 2 * f01Mod + 4);
f01_sheet.mergeCells(1, f01Num * 10 + 4, 1, f01Num * 10 + 5);
f01_sheet.getRow(1).getCell(f01Num * 10 + 4).value = data.contracts[f01Num * 3].name;
if (f01Mod == 2) {
f01_sheet.mergeCells(1, f01Num * 10 + 6, 1, f01Num * 10 + 7);
f01_sheet.getRow(1).getCell(f01Num * 10 + 6).value = data.contracts[f01Num * 3 + 1].name;
}
}
// 按合同段更新目录及相关表 // 按合同段更新目录及相关表
let ml_slotRow = 14; let ml_slotRow = 14;
let ml_number = 1; let ml_number = 1;
let allServices = []; let allServices = [];
let allAddtional = {}; let allAddtional = {};
let allReserve = {}; let allReserve = {};
let allMajors = {};
data.scale?.forEach(sci => {
allMajors[sci.major] = { [data.contracts.length]: sci };
});
data.contracts.forEach((ci, index) => { data.contracts.forEach((ci, index) => {
// 记录allMajors
ci.scale?.forEach(sci => {
if (allMajors[sci.major]) {
allMajors[sci.major][index] = sci;
} else {
allMajors[sci.major] = { [index]: sci };
}
});
ci.method1 = []; ci.method1 = [];
ci.method2 = []; ci.method2 = [];
ci.method3 = []; ci.method3 = [];
@ -934,6 +897,7 @@ async function generateTemplate(data) {
ml_sourceRows.push(ml_sheet.getRow(13)); ml_sourceRows.push(ml_sheet.getRow(13));
sheet_5 = copyWorksheet(workbook, '预i-5表', `${index + 1}-5表`); sheet_5 = copyWorksheet(workbook, '预i-5表', `${index + 1}-5表`);
sheet_5.headerFooter.oddHeader = sheet_5.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-5 表/g, `${index + 1}-5 表`).replace(/第i合同/g, ci.name); sheet_5.headerFooter.oddHeader = sheet_5.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-5 表/g, `${index + 1}-5 表`).replace(/第i合同/g, ci.name);
sheet_5.getRow(3).getCell(3).value = '/';
sheet_5.getRow(3).getCell(4).value = '/'; sheet_5.getRow(3).getCell(4).value = '/';
sheet_5.getRow(3).getCell(5).value = '/'; sheet_5.getRow(3).getCell(5).value = '/';
sheet_5.getRow(3).getCell(6).value = numberFormatter((ci.method5.addtional?.reduce((a, b) => a + b.m5.fee, 0) || 0) + (ci.method5.reserve?.fee || 0), 2); sheet_5.getRow(3).getCell(6).value = numberFormatter((ci.method5.addtional?.reduce((a, b) => a + b.m5.fee, 0) || 0) + (ci.method5.reserve?.fee || 0), 2);
@ -1105,7 +1069,7 @@ async function generateTemplate(data) {
}); });
let det1 = m1PI.map(m => m.major); let det1 = m1PI.map(m => m.major);
let det2 = m2PI.map(m => m.major); let det2 = m2PI.map(m => m.major);
let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => a - b).map(m => { let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => majorList[a].order - majorList[b].order).map(m => {
let d1index = det1.indexOf(m); let d1index = det1.indexOf(m);
let d2index = det2.indexOf(m); let d2index = det2.indexOf(m);
return { return {
@ -1127,8 +1091,8 @@ async function generateTemplate(data) {
targetRow.getCell(7).value = numberFormatter(m.mth1.proportion, 2); targetRow.getCell(7).value = numberFormatter(m.mth1.proportion, 2);
targetRow.getCell(8).value = numberFormatter(m.mth1.basicFee, 2); targetRow.getCell(8).value = numberFormatter(m.mth1.basicFee, 2);
targetRow.getCell(9).value = numberFormatter(m.mth1.fee, 2); targetRow.getCell(9).value = numberFormatter(m.mth1.fee, 2);
targetRow.getCell(10).value = ''; targetRow.getCell(10).value = '/';
targetRow.getCell(11).value = ''; targetRow.getCell(11).value = '/';
cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => { cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => {
targetRow.getCell(1).value = num_2_1++; targetRow.getCell(1).value = num_2_1++;
targetRow.getCell(2).value = serviceX.code + '-' + pi + '-' + (mindex + 1); targetRow.getCell(2).value = serviceX.code + '-' + pi + '-' + (mindex + 1);
@ -1145,8 +1109,8 @@ async function generateTemplate(data) {
targetRow.getCell(5).value = numberFormatter(m.mth2.majorCoe, 3); targetRow.getCell(5).value = numberFormatter(m.mth2.majorCoe, 3);
targetRow.getCell(6).value = numberFormatter(m.mth2.processCoe, 3); targetRow.getCell(6).value = numberFormatter(m.mth2.processCoe, 3);
targetRow.getCell(7).value = numberFormatter(m.mth2.proportion, 2); targetRow.getCell(7).value = numberFormatter(m.mth2.proportion, 2);
targetRow.getCell(8).value = ''; targetRow.getCell(8).value = '/';
targetRow.getCell(9).value = ''; targetRow.getCell(9).value = '/';
targetRow.getCell(10).value = numberFormatter(m.mth2.basicFee, 2); targetRow.getCell(10).value = numberFormatter(m.mth2.basicFee, 2);
targetRow.getCell(11).value = numberFormatter(m.mth2.fee, 2); targetRow.getCell(11).value = numberFormatter(m.mth2.fee, 2);
cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => { cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => {
@ -1167,7 +1131,7 @@ async function generateTemplate(data) {
} else { } else {
let det1 = sobj.method1 ? sobj.method1.det.map(m => m.major) : []; let det1 = sobj.method1 ? sobj.method1.det.map(m => m.major) : [];
let det2 = sobj.method2 ? sobj.method2.det.map(m => m.major) : []; let det2 = sobj.method2 ? sobj.method2.det.map(m => m.major) : [];
let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => a - b).map(m => { let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => majorList[a].order - majorList[b].order).map(m => {
let d1index = det1.indexOf(m); let d1index = det1.indexOf(m);
let d2index = det2.indexOf(m); let d2index = det2.indexOf(m);
return { return {
@ -1189,8 +1153,8 @@ async function generateTemplate(data) {
targetRow.getCell(7).value = numberFormatter(m.mth1.proportion, 2); targetRow.getCell(7).value = numberFormatter(m.mth1.proportion, 2);
targetRow.getCell(8).value = numberFormatter(m.mth1.basicFee, 2); targetRow.getCell(8).value = numberFormatter(m.mth1.basicFee, 2);
targetRow.getCell(9).value = numberFormatter(m.mth1.fee, 2); targetRow.getCell(9).value = numberFormatter(m.mth1.fee, 2);
targetRow.getCell(10).value = ''; targetRow.getCell(10).value = '/';
targetRow.getCell(11).value = ''; targetRow.getCell(11).value = '/';
cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => { cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => {
targetRow.getCell(1).value = num_2_1++; targetRow.getCell(1).value = num_2_1++;
targetRow.getCell(2).value = serviceX.code + '-' + (mindex + 1); targetRow.getCell(2).value = serviceX.code + '-' + (mindex + 1);
@ -1207,8 +1171,8 @@ async function generateTemplate(data) {
targetRow.getCell(5).value = numberFormatter(m.mth2.majorCoe, 3); targetRow.getCell(5).value = numberFormatter(m.mth2.majorCoe, 3);
targetRow.getCell(6).value = numberFormatter(m.mth2.processCoe, 3); targetRow.getCell(6).value = numberFormatter(m.mth2.processCoe, 3);
targetRow.getCell(7).value = numberFormatter(m.mth2.proportion, 2); targetRow.getCell(7).value = numberFormatter(m.mth2.proportion, 2);
targetRow.getCell(8).value = ''; targetRow.getCell(8).value = '/';
targetRow.getCell(9).value = ''; targetRow.getCell(9).value = '/';
targetRow.getCell(10).value = numberFormatter(m.mth2.basicFee, 2); targetRow.getCell(10).value = numberFormatter(m.mth2.basicFee, 2);
targetRow.getCell(11).value = numberFormatter(m.mth2.fee, 2); targetRow.getCell(11).value = numberFormatter(m.mth2.fee, 2);
cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => { cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => {
@ -1295,7 +1259,7 @@ async function generateTemplate(data) {
cusInsertRowFunc(ci.services.length + 3 + endRows, [sheet_1.getRow(3)], sheet_1, (targetRow) => { cusInsertRowFunc(ci.services.length + 3 + endRows, [sheet_1.getRow(3)], sheet_1, (targetRow) => {
targetRow.getCell(1).value = ci.services.length + endRows; targetRow.getCell(1).value = ci.services.length + endRows;
targetRow.getCell(2).value = ''; targetRow.getCell(2).value = '';
targetRow.getCell(3).value = '小计'; targetRow.getCell(3).value = '基本、可选工作小计';
targetRow.getCell(4).value = numberFormatter(m1Sum, 2); targetRow.getCell(4).value = numberFormatter(m1Sum, 2);
targetRow.getCell(5).value = numberFormatter(m2Sum, 2); targetRow.getCell(5).value = numberFormatter(m2Sum, 2);
targetRow.getCell(6).value = numberFormatter(m3Sum, 2); targetRow.getCell(6).value = numberFormatter(m3Sum, 2);
@ -1312,7 +1276,7 @@ async function generateTemplate(data) {
targetRow.getCell(5).value = ''; targetRow.getCell(5).value = '';
targetRow.getCell(6).value = ''; targetRow.getCell(6).value = '';
targetRow.getCell(7).value = ''; targetRow.getCell(7).value = '';
targetRow.getCell(8).value = numberFormatter(ci.addtional.fee, 2); targetRow.getCell(8).value = '';
}); });
ci.addtional.det.forEach((addobj, addindex) => { ci.addtional.det.forEach((addobj, addindex) => {
endRows++; endRows++;
@ -1390,6 +1354,17 @@ async function generateTemplate(data) {
} }
}); });
}); });
endRows++;
cusInsertRowFunc(ci.services.length + 3 + endRows, [sheet_1.getRow(3)], sheet_1, (targetRow) => {
targetRow.getCell(1).value = ci.services.length + endRows;
targetRow.getCell(2).value = '';
targetRow.getCell(3).value = '附加工作小计';
targetRow.getCell(4).value = '';
targetRow.getCell(5).value = '';
targetRow.getCell(6).value = '';
targetRow.getCell(7).value = '';
targetRow.getCell(8).value = numberFormatter(ci.addtional.fee, 2);
});
} }
if (ci.reserve) { if (ci.reserve) {
endRows++; endRows++;
@ -1520,12 +1495,12 @@ async function generateTemplate(data) {
if (sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment) { if (sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment) {
sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment.horizontal = 'center'; sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment.horizontal = 'center';
sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment.wrapText = true; sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment.wrapText = true;
if (i != 1 && i != endRows) sheet_1.getRow(ci.services.length + 3 + i).getCell(9).style.font.size = 22; if (i != 1 && i != endRows && sheet_1.getRow(ci.services.length + 3 + i).getCell(2).value) sheet_1.getRow(ci.services.length + 3 + i).getCell(9).style.font.size = 22;
} }
} }
}); });
allServices.sort((a, b) => a.id - b.id); allServices.sort((a, b) => serviceList[a.id].order - serviceList[b.id].order);
allServices.forEach((s, sindex) => { allServices.forEach((s, sindex) => {
const serviceX = serviceList[s.id]; const serviceX = serviceList[s.id];
cusInsertRowFunc(3 + sindex, [yz01_sheet.getRow(2)], yz01_sheet, (targetRow) => { cusInsertRowFunc(3 + sindex, [yz01_sheet.getRow(2)], yz01_sheet, (targetRow) => {
@ -1750,10 +1725,171 @@ async function generateTemplate(data) {
workbook.removeWorksheet('预i-4表'); workbook.removeWorksheet('预i-4表');
workbook.removeWorksheet('预i-4-1表'); workbook.removeWorksheet('预i-4-1表');
workbook.removeWorksheet('预i-5表'); workbook.removeWorksheet('预i-5表');
f01_sheet.orderNo = ml_number + 2 + 11;
f02_sheet.orderNo = ml_number + 3 + 11;
f03_sheet.orderNo = ml_number + 4 + 11;
// 编辑辅01/02/03表内容
// 辅01表
if (Object.keys(allMajors).length) {
let f01_sheet = workbook.getWorksheet('辅01表');
let f01Mod = (data.contracts.length + 1) % 3;
let f01Num = (data.contracts.length + 1 - f01Mod) / 3;
switch (f01Mod) {
case 0:
f01_sheet.spliceColumns(11, 14);
break;
case 1:
f01_sheet.spliceColumns(11, 8);
break;
case 2:
f01_sheet.spliceColumns(19, 6);
break;
}
if (f01Num == 0) {
f01_sheet.spliceColumns(1, 10);
} else {
if (f01Num > 1) {
for (let i = 0; i < f01Num - 1; i++) {
insertAndCopyColumn(10 * (i + 1) + 1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], f01_sheet);
}
}
for (let i = 0; i < f01Num; i++) {
f01_sheet.mergeCells(1, i * 10 + 1, 2, i * 10 + 1);
f01_sheet.mergeCells(1, i * 10 + 2, 2, i * 10 + 2);
f01_sheet.mergeCells(1, i * 10 + 3, 2, i * 10 + 3);
f01_sheet.mergeCells(1, i * 10 + 10, 2, i * 10 + 10);
f01_sheet.mergeCells(1, i * 10 + 4, 1, i * 10 + 5);
f01_sheet.getRow(1).getCell(i * 10 + 4).value = data.contracts[i * 3].name;
f01_sheet.mergeCells(1, i * 10 + 6, 1, i * 10 + 7);
f01_sheet.getRow(1).getCell(i * 10 + 6).value = data.contracts[i * 3 + 1].name;
f01_sheet.mergeCells(1, i * 10 + 8, 1, i * 10 + 9);
if (f01Mod == 0 && i == f01Num - 1) {
f01_sheet.getRow(1).getCell(i * 10 + 8).value = '项目小计';
} else {
f01_sheet.getRow(1).getCell(i * 10 + 8).value = data.contracts[i * 3 + 2].name;
}
}
}
if (f01Mod > 0) {
f01_sheet.mergeCells(1, f01Num * 10 + 1, 2, f01Num * 10 + 1);
f01_sheet.mergeCells(1, f01Num * 10 + 2, 2, f01Num * 10 + 2);
f01_sheet.mergeCells(1, f01Num * 10 + 3, 2, f01Num * 10 + 3);
f01_sheet.mergeCells(1, f01Num * 10 + 2 * f01Mod + 4, 2, f01Num * 10 + 2 * f01Mod + 4);
f01_sheet.mergeCells(1, f01Num * 10 + 4, 1, f01Num * 10 + 5);
f01_sheet.getRow(1).getCell(f01Num * 10 + 4).value = f01Mod == 1 ? '项目小计' : data.contracts[f01Num * 3].name;
if (f01Mod == 2) {
f01_sheet.mergeCells(1, f01Num * 10 + 6, 1, f01Num * 10 + 7);
f01_sheet.getRow(1).getCell(f01Num * 10 + 6).value = '项目小计';
}
}
let num_f01 = 1;
Object.keys(allMajors).sort((a, b) => majorList[a].order - majorList[b].order).forEach(majorid => {
let scaleX = allMajors[majorid];
let code;
let name;
let hasCost;
let hasArea;
if (majorid == -1) {
code = '';
name = '总投资';
hasCost = true;
hasArea = false;
} else {
code = majorList[majorid].code;
name = majorList[majorid].name;
hasCost = majorList[majorid].hasCost;
hasArea = majorList[majorid].hasArea;
}
cusInsertRowFunc(3 + num_f01, [f01_sheet.getRow(3)], f01_sheet, (targetRow) => {
let rowNum = num_f01++;
for (let i = 0; i < f01Num; i++) {
targetRow.getCell(i * 10 + 1).value = rowNum;
targetRow.getCell(i * 10 + 2).value = code;
targetRow.getCell(i * 10 + 3).value = name;
if (hasCost) {
targetRow.getCell(i * 10 + 4).value = numberFormatter(scaleX[i * 3]?.cost, 2);
targetRow.getCell(i * 10 + 6).value = numberFormatter(scaleX[i * 3 + 1]?.cost, 2);
targetRow.getCell(i * 10 + 8).value = numberFormatter(scaleX[i * 3 + 2]?.cost, 2);
} else {
targetRow.getCell(i * 10 + 4).value = '/';
targetRow.getCell(i * 10 + 6).value = '/';
targetRow.getCell(i * 10 + 8).value = '/';
}
if (hasArea) {
targetRow.getCell(i * 10 + 5).value = numberFormatter(scaleX[i * 3]?.area, 3);
targetRow.getCell(i * 10 + 7).value = numberFormatter(scaleX[i * 3 + 1]?.area, 3);
targetRow.getCell(i * 10 + 9).value = numberFormatter(scaleX[i * 3 + 2]?.area, 3);
} else {
targetRow.getCell(i * 10 + 5).value = '/';
targetRow.getCell(i * 10 + 7).value = '/';
targetRow.getCell(i * 10 + 9).value = '/';
}
}
if (f01Mod > 0) {
targetRow.getCell(f01Num * 10 + 1).value = rowNum;
targetRow.getCell(f01Num * 10 + 2).value = code;
targetRow.getCell(f01Num * 10 + 3).value = name;
for (let i = 0; i < f01Mod; i++) {
if (hasCost) {
targetRow.getCell(f01Num * 10 + 4 + i * 2).value = numberFormatter(scaleX[f01Num * 3 + i]?.cost, 2);
} else {
targetRow.getCell(f01Num * 10 + 4 + i * 2).value = '/';
}
if (hasArea) {
targetRow.getCell(f01Num * 10 + 5 + i * 2).value = numberFormatter(scaleX[f01Num * 3 + i]?.area, 3);
} else {
targetRow.getCell(f01Num * 10 + 5 + i * 2).value = '/';
}
}
}
});
});
f01_sheet.spliceRows(3, 1);
// f01_sheet.getRow(2).height = 27;
f01_sheet.orderNo = ml_number + 2 + 11;
} else {
workbook.removeWorksheet('辅01表');
}
// 辅02/03表
if (data.serviceCoes?.length) {
let f02_sheet = workbook.getWorksheet('辅02表');
let num_f02 = 1;
data.serviceCoes.sort((a, b) => serviceList[a.serviceid].order - serviceList[b.serviceid].order).forEach(scoei => {
let serviceCoeX = serviceList[scoei.serviceid];
cusInsertRowFunc(2 + num_f02, [f02_sheet.getRow(2)], f02_sheet, (targetRow) => {
targetRow.getCell(1).value = num_f02++;
targetRow.getCell(2).value = serviceCoeX.code;
targetRow.getCell(3).value = serviceCoeX.name;
targetRow.getCell(4).value = numberFormatter(serviceCoeX.defCoe, 3);
targetRow.getCell(5).value = numberFormatter(scoei.coe, 3);
targetRow.getCell(6).value = scoei.remark;
});
});
f02_sheet.spliceRows(2, 1);
f02_sheet.orderNo = ml_number + 3 + 11;
} else {
workbook.removeWorksheet('辅02表');
}
if (data.majorCoes?.length) {
let f03_sheet = workbook.getWorksheet('辅03表');
let num_f03 = 1;
data.majorCoes.sort((a, b) => majorList[a.majorid].order - majorList[b.majorid].order).forEach(mcoei => {
let majorCoeX = majorList[mcoei.majorid];
cusInsertRowFunc(2 + num_f03, [f03_sheet.getRow(2)], f03_sheet, (targetRow) => {
targetRow.getCell(1).value = num_f03++;
targetRow.getCell(2).value = majorCoeX.code;
targetRow.getCell(3).value = majorCoeX.name;
targetRow.getCell(4).value = numberFormatter(majorCoeX.defCoe, 3);
targetRow.getCell(5).value = numberFormatter(mcoei.coe, 3);
targetRow.getCell(6).value = mcoei.remark;
});
});
f03_sheet.spliceRows(2, 1);
f03_sheet.orderNo = ml_number + 4 + 11;
} else {
workbook.removeWorksheet('辅03表');
}
// 统一设置页眉页脚字体
workbook._worksheets.forEach(sheet => { workbook._worksheets.forEach(sheet => {
if (sheet) { if (sheet) {
if (sheet.headerFooter.oddHeader) sheet.headerFooter.oddHeader = sheet.headerFooter.oddHeader.replace(/&([CLR])&/g, '&$1&"宋体"&'); if (sheet.headerFooter.oddHeader) sheet.headerFooter.oddHeader = sheet.headerFooter.oddHeader.replace(/&([CLR])&/g, '&$1&"宋体"&');