1

我有一个包含随机列的 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'而不是公式)
  • 使用此注入机制不会自动完成重新计算

(快照)

快照

用公式

没有公式

我错过了什么或做错了什么会导致这个错误?

4

1 回答 1

0

经过几次试验和错误后,我转向了Apache POI,因此使用 Java 构建了脚本。

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

用过的罐子

它操纵行/列并保持公式不变。打开修改后的 excel 文件后,您只需刷新(在 Windows 上:ctrl + alt + f9),它将重新计算。

于 2017-03-25T15:13:27.403 回答