节点 – exceljs:写入文件打破文件中的公式

我有一个包含随机列的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构build脚本。

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

罐子使用的

它操纵行/列,并保持公式不变。 一旦你打开修改的Excel文件,你所要做的就是刷新(在Windows上:ctrl + alt + f9),它将重新计算。