Node - exceljs:写入文件中断文件

时间:2017-03-23 04:57:16

标签: node.js excel npm excel-formula exceljs

我有一个包含随机列的excel(xlsx)文件。其中一些列的公式映射到某些单元格的总和;例如:

=J8+F9-H9

在我的情况下,我有以下三列:

F: number
H: number
J: =sum of previous row's F and H cell's values.

我的目标是获取外部数据并将其逐个单元存储在此工作簿中。为此,我使用节点模块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&#39;即包含公式的;这些细胞正在崩溃,没有任何共谋:

  • 一些单元格保留公式并进行计算
  • 其他人没有更多的公式或计算完成(有&#39; 0&#39;而不是公式)
  • 使用此注入机制不会自动重新计算

(快照)

snapshot

with formula

no formula

导致此错误的我遗失或做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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

jars-used

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