我试图建立一个报告,其中页眉和页脚部分是硬编码在Excel模板文件,我试图填写表格数据是在页脚和页眉之间。
在上面的屏幕截图中,我试图填充15和16之间的数据,这可以很容易地通过Excel JS实现。但问题发生时,试图合并16和17行的新添加的单元格,它给出了下面的错误!
例如:-工作表.合并单元格(A16:A17
);//提供:-错误:无法合并已合并的单元格
错误:无法合并已合并的单元格
下面的截图是我正在尝试实现的。基本上一个单一的循环将添加两行,除了两列,我需要合并单元格所有其他单元格垂直。
下面是我写的代码。我能够在行之间插入数据并得到一个输出文件,但当试图合并单元格时,我得到同样的错误。也尝试添加空行并在插入数据到行之前合并,但它也没有工作。
const filepath = path.join(__dirname, "./excel/template.xlsx");
const workbook = new Excel.Workbook();
workbook.xlsx.readFile(filepath).then(function () {
var worksheet = workbook.getWorksheet("Sheet1");
let row = 16;
let count = 1;
if (fitupData.length) {
var borderStyles = {
top: { style: "thin" },
left: { style: "thin" },
bottom: { style: "thin" },
right: { style: "thin" },
};
fitupData.forEach((item) => {
let firstRow = worksheet.insertRow(row, []);
let secondRow = worksheet.insertRow(row, []);
firstRow.border = borderStyles;
firstRow.alignment = { horizontal: "center" };
worksheet.getCell(`J${row}`).value = item.A2;
worksheet.getCell(`K${row}`).value = item.B2;
secondRow.values = [
count,
item.v1,
item.v2,
item.v3,
item.v4,
item.v5,
item.v6,
item.v7,
item.v8,
item.A1,
item.B1,
"Accepted",
"-",
item.v11,
"-",
"-",
item.v12,
];
// Merging cells dynamically
for (let i = 65; i <= 81; i++) {
//A to J
let col = String.fromCharCode(i);
if (["J", "K"].includes(col)) continue;
worksheet.mergeCells(`${col}${row}:${col}${row + 1}`);
}
row = row + 2;
count++;
});
}
const fileName = path.join(__dirname, "./excel/Report.xlsx");
workbook.xlsx
.writeFile(fileName)
.then(() => {
resolve(fileName);
})
.catch((err) => {
console.log(err);
});
如果我能够实现合并单元格,那么它将保存大量的时间和精力,在那里我可以使用相同的方法与其他报告不同的页眉和页脚。请帮助找出问题,或/和我做错了什么
先谢谢你了
1条答案
按热度按时间dldeef671#
我找到了解决这个问题的方法。