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' 即包含公式;这些细胞没有一致性地破裂:

(快照)

我遗漏了什么或做错了什么导致了这个错误?

经过多次试验和错误后,我转到 Apache POI 并使用 Java 构建了脚本。

我下载了以下 JAR 并将其包含在我的项目中:

它操纵 rows/columns 并保持公式完整。打开修改后的 excel 文件后,您只需刷新(在 Windows 上:ctrl + alt + f9),它就会重新计算。