js xlsx readFile无理由偏移列

时间:2019-07-29 14:03:25

标签: node.js js-xlsx

读取Excel文件时,我有一个奇怪的行为。 当我打开文件并将其保存在我的Excel版本中时,可以使用xlsx正确读取文件。 但是,当我不触摸它并用xlsx读取它时,某些公式会发生偏移。 这是一个示例:我阅读了我的excel文件,并专注于单元格O124。 在打开并保存它之前(不做任何修改),这是我在O124单元中得到的:

    { t: 'n', v: 18202.970297029704, f: 'O124*(1+P144)*(1+P$146)', w: '18,203',

当然,这里有一个循环引用(在O124上)。 P144和P146也移位。 但是,当我打开它并使用Excel将其保存时(我正在使用Excel 2019),我可以看到公式为N124而不是O124(因此没有循环引用)。 这是他的结果:

    { t: 'n', v: 18202.970297029704, f: 'N124*(1+O144)*(1+O$146)', w: '18,203',

我正确安装了N124,O144和O146。

当我不首先“重新保存”文件时,我真的不明白为什么会有移位。 你有什么主意吗?

[EDIT]我将xlsx包与节点js一起使用,然后使用xlsx-calc包在工作表上进行计算。这是我首先遇到循环引用错误的地方。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,使用最新版本的xlsx软件包(0.14.4)可以解决此问题。 确实,正如该软件包的开发人员所回答的,这是由于excel中共享了公式。 在文件的xml中,我们有:

    <c r="N123" s="20">
        <f t="shared" ref="M123:O125" si="201">M123*(1+N143)*(1+N$146)</f>
        <v>12208.016586040083</v>
      </c>


      <c r="O124" s="20">
        <f t="shared" si="201"/>
        <v>18202.970297029704</v>

si是引用共享公式的索引。最新版本的软件包已解决了该问题。