据我了解,Microsoft Office Excel 中带有公式的单元格在以 Office Open XML 格式(特别是 SpreadsheetML)进行序列化和保存时可以包含计算值。这很可能适用于其他类型的依赖项和来自其他单元格的值的函数(如图表、数据透视表等)。我很可能做错了什么,但是当通过外部工具处理这个 XML 文档(SpreadsheetML)时,不使用 MS 提供的任何 .Net 组件或类似 API,而只是直接操作 XML,我遇到了一个问题,当我修改Excel 工作表之一的某些内容仍将使用包含公式的单元格中最后生成的值。因此,当用户打开生成的电子表格时,他会看到修改后的数据,但所有计算字段都已过时。现在(这些天)我在互联网上唯一能找到的是:
http://openxmldeveloper.org/discussions/formats/f/14/p/1561/4164.aspx
这确实不是一个可取的解决方案,特别是如果它适用于任何类型的计算单元格和对象(图表等),因为当您不确切知道所有工作表的结构时,这意味着部分重新实现一些 SpreadsheetML 处理器。
我希望在 Excel 中肯定会有一个选项,或者在一个 SpreadsheetML 部分中进行配置,以强制重新计算或将单元格标记为脏,但我还没有找到。
假设脚本会有所帮助,但我对该领域的了解不足并没有给我带来任何成功的结果,因为我不确定如何将脚本包含到 SpreadsheetML 工作表中。虽然我找到了一些如何触发重新计算以及如何添加打开事件侦听器的示例。