【问题标题】:get computed value of excel sheet cell in Node.js在 Node.js 中获取 excel 工作表单元格的计算值
【发布时间】:2017-11-05 10:18:09
【问题描述】:

我正在使用 node.js 来处理我的带有 exceljs 模块的 Excel 表格。

我正在将值写入几个单元格,而其他单元格已经包含公式。我想触发这些公式并希望以编程方式将值存储在工作表中。

例如我有以下工作表结构:

我写了下面的代码来在单元格 A1 和 B1 中插入值。

var workbook = new Excel.Workbook();
workbook.xlsx.readFile(__base + 'test.xlsx')
  .then(function() {
    var worksheet = workbook.getWorksheet(2);
    var row = worksheet.getRow(1);
    row.getCell(1).value = 2; // A1's value set to 2
    row.getCell(2).value = 8; // B1's value set to 8
  };
  row.commit();
  workbook.xlsx.writeFile(__base + 'test.xlsx');                            
});

当我尝试获取 c1 的值时,它会返回结果为 0 的公式。下面是获取值的代码。

workbook.xlsx.readFile(__base + 'test.xlsx')
    .then(function() {
    var worksheet = workbook.getWorksheet(2);
    var row = worksheet.getRow(1);
    console.log(row.getCell(1).value);
    console.log(row.getCell(2).value);
    console.log(row.getCell(3).value);
});

输出:

如何获取计算值或如何以编程方式在 Excel 中触发计算并将其存储在单元格中?

单元格 C1 的输出结果应为控制台中的 10,即 A1+B1 (2+8)。

【问题讨论】:

标签: javascript node.js excel sails.js exceljs


【解决方案1】:

hot-formula-parser可以解析公式...与exceljs结合使用

这是可能的connecting code

【讨论】:

    【解决方案2】:

    exceljs 允许您直接修改文件而无需使用 Excel。
    不会在文件级别进行任何计算,结果值将是您上次打开 Excel 时计算的最新值。

    如果您打开 Excel,它会计算所有内容,并且值将是正确的。

    【讨论】:

    • 好的,我明白了。那么是否可以根据其公式计算单元格的值? exceljs有没有可能?因为我有一个要求,我需要在 excel 中写入值,并且需要在不打开工作表的情况下以编程方式在 SVN 中提交它。因此,如果我将获得计算值,那么我会将其存储在该特定单元格中,这将解决我的问题。
    • 真正的问题是“你应该吗?”任何使用 Excel 打开文件的人都会看到计算出的值。
    • 不,我认为通过 exceljs 是不可能的。
    • 我知道打开 excel 后可以看到计算值,但在我的情况下,没有人会打开工作表。工作表将进入 SVN,并通过 Jenkins 作业我在数据库中插入计算值。但无论如何感谢您的回答。会想办法的:)
    • 如果最后没人打开 Excel,Excel 不是存储的好选择。数据库更好。
    猜你喜欢
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多