gpt4 book ai didi

xlsm - 使用exceljs包npm读写xlsm文件

转载 作者:行者123 更新时间:2023-12-04 11:24:19 24 4
gpt4 key购买 nike

我有一个 xlsm 文件,其中已经有很少的数据,需要在自动化过程中写入一些数据并创建一个新的 xlsm 文件。使用以下代码创建文件,但它已损坏且无法打开。文件大小减少,例如从 8kb 到 7kb。不确定在写入文件时遗漏了什么。

var Excel = require('exceljs');
var workbook = new Excel.Workbook();

workbook.xlsx.readFile('Book.xlsm')
.then(function () {
var worksheet = workbook.getWorksheet(1);
var row = worksheet.getRow(1);
console.log(row.getCell(1).value + " - First value"); // Get A1 value
row.getCell(3).value = "c"; //Set value to A3
row.commit();
return workbook.xlsx.writeFile('new.xlsm');
})

注意:刚刚创建了 Book.xlsm,其中包含一些值列 a,b 和值 1,2。尝试使用“c”设置 A3 并另存为 new.xlsm

如果有任何其他没有这个问题的 npm 包也很好。

最佳答案

我认为目前exeljs不适合使用的软件包 xlsm文件。这种情况下更强大的软件包是 xlsx .

这是一个小代码片段,将演示阅读现有 xlsm文件,向其中添加其他数据并写入新的 xlsm文件。您可以在 NodeJS 环境中对其进行测试。

请注意,使用 xlsm 时您传递的文件 bookVBA: true选项 readFile方法,默​​认为 false .见 parsing options详情。

const XLSX = require('xlsx');

try {

const workbook = XLSX.readFile('./test.xlsm', { bookVBA: true });
let worksheet = workbook.Sheets['Sheet1'];
XLSX.utils.sheet_add_aoa(worksheet, [
['text in A1', 'text in B1', 5000],
['text in A2', 'text in B2', 'text in C2'],
[null, new Date(), 'text in C3', 'text in D3']
]);
XLSX.writeFile(workbook, './output.xlsm');
console.log('Completed ...');

} catch (error) {
console.log(error.message);
console.log(error.stack);
}

supported output formats详情。

关于xlsm - 使用exceljs包npm读写xlsm文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52883780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com