Node - exceljs:写入文件会破坏文件中的公式
Node - exceljs: writing to file breaks fomulas in the file
我有一个包含随机列的 excel (xlsx) 文件。其中一些列的公式映射到某些单元格的总和;例如:
=J8+F9-H9
在我的例子中,我有以下三列:
F: number
H: number
J: =sum of previous row's F and H cell's values.
我的目标是获取外部数据并将它们逐个单元格地存储在此工作簿中。为此,我正在使用 Node 模块 exceljs.
到目前为止,这是我的代码,我现在正在对值进行编码(稍后我将从另一个文件中获取)。
var workbook = new Excel.Workbook();
var filename = 'Bank Synoptic Journal.xlsx'
workbook
.xlsx
.readFile(filename)
.then(function() {
var worksheet = workbook.getWorksheet('Bank Synoptic');
var row = null;
row = worksheet.getRow(8);
row.getCell('J').value = Math.random();
row.commit();
for(var i=9; i<=305;i++) { //row
row = worksheet.getRow(i);
row.getCell('F').value = Math.random();
row.getCell('H').value = Math.random();
row.commit();
}
})
.then(function() {
return workbook.xlsx.writeFile(filename + '_modified.xlsx');
})
.then(function() {
console.log('Done!');
});
它将输出打印到一个新的 excel 文件中。我面临的问题是,对于单元格 'J' 即包含公式;这些细胞没有一致性地破裂:
- 一些单元格保留公式并进行计算
- 其他人没有更多的公式或计算(用'0'代替公式)
- 使用此注入机制不会自动完成重新计算
(快照)
我遗漏了什么或做错了什么导致了这个错误?
经过多次试验和错误后,我转到 Apache POI 并使用 Java 构建了脚本。
我下载了以下 JAR 并将其包含在我的项目中:
它操纵 rows/columns 并保持公式完整。打开修改后的 excel 文件后,您只需刷新(在 Windows 上:ctrl + alt + f9),它就会重新计算。
我有一个包含随机列的 excel (xlsx) 文件。其中一些列的公式映射到某些单元格的总和;例如:
=J8+F9-H9
在我的例子中,我有以下三列:
F: number
H: number
J: =sum of previous row's F and H cell's values.
我的目标是获取外部数据并将它们逐个单元格地存储在此工作簿中。为此,我正在使用 Node 模块 exceljs.
到目前为止,这是我的代码,我现在正在对值进行编码(稍后我将从另一个文件中获取)。
var workbook = new Excel.Workbook();
var filename = 'Bank Synoptic Journal.xlsx'
workbook
.xlsx
.readFile(filename)
.then(function() {
var worksheet = workbook.getWorksheet('Bank Synoptic');
var row = null;
row = worksheet.getRow(8);
row.getCell('J').value = Math.random();
row.commit();
for(var i=9; i<=305;i++) { //row
row = worksheet.getRow(i);
row.getCell('F').value = Math.random();
row.getCell('H').value = Math.random();
row.commit();
}
})
.then(function() {
return workbook.xlsx.writeFile(filename + '_modified.xlsx');
})
.then(function() {
console.log('Done!');
});
它将输出打印到一个新的 excel 文件中。我面临的问题是,对于单元格 'J' 即包含公式;这些细胞没有一致性地破裂:
- 一些单元格保留公式并进行计算
- 其他人没有更多的公式或计算(用'0'代替公式)
- 使用此注入机制不会自动完成重新计算
(快照)
我遗漏了什么或做错了什么导致了这个错误?
经过多次试验和错误后,我转到 Apache POI 并使用 Java 构建了脚本。
我下载了以下 JAR 并将其包含在我的项目中:
它操纵 rows/columns 并保持公式完整。打开修改后的 excel 文件后,您只需刷新(在 Windows 上:ctrl + alt + f9),它就会重新计算。