node.js - js xlsx readFile 无缘无故地偏移列
问题描述
读取 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。
我真的不明白为什么当我不先“重新保存”我的文件时会发生变化。你有什么想法吗?
[编辑] 我将 xlsx 包与节点 js 一起使用,然后我使用 xlsx-calc 包在工作表上进行计算。这是我首先得到循环引用错误的地方。
非常感谢你的帮助!
解决方案
对于那些感兴趣的人,使用最新版本的包 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
是一个引用共享公式的索引。使用最新版本的软件包解决了该问题。
推荐阅读
- javascript - 当我删除一个 iframe 元素时,其中的回调是否也被删除了?
- iperf - iperf 服务器,仅记录 [sum] 结果
- trustpilot - Trustpilot API 查询给定日期范围的评论
- android - 如何在颤振中创建自定义形状小部件
- angular - ngrx 效果说明:@Effect
- php - 我创建了一个聊天应用程序,用于自动获取消息,我使用 setinterval 函数和 ajax 请求来获取数据
- javascript - 重新加载后如何更改同一刀片文件中的表单标签信息
- python - 使用python selenium提取页面源的最快方法是什么
- entity-framework - 使用聚合函数应用 GroupBy 扩展方法的正确方法
- google-bigquery - bigquery 不加载 JSON