【发布时间】:2022-03-12 04:27:05
【问题描述】:
上下文
我使用 xlsxwriter 将一些数据从 python 代码写入 xlsx 文件。
我需要使用计算特定列(包含时间值)平均值的公式填充单元格。
问题描述
我注意到,当我尝试使用 Excel 打开文档时,它会自动在我的范围前添加一个“@”符号,这导致我的公式计算失败...
如果我手动删除这个额外的“@”,公式将按预期完美运行。
不得不像这样手动修复我的公式真的很烦人,因为我有很多类似的平均计算因此而被破坏。
我读到是 Excel 添加了它,所以似乎无法通过 xlsxwriter API 以编程方式从我的 python 代码中防止这种不良行为。
问题
有人知道是否有办法阻止 Excel 对我的公式进行任何修改?
到目前为止我已经尝试过什么
我已经尝试 "protect" 我的所有工作表(将它们设为只读),但它似乎只适用于用户,不适用于 Excel...
示例
这是我的问题的一个示例(为了让这种纯文本负载更容易理解)。
从我的python代码中,如果我写下以下公式:
=AVERAGE(TIMEVALUE(B2:B8))
打开文档后,Excel自动将公式更改为:
=AVERAGE(TIMEVALUE(@B2:B8))
这使得计算的结果变成:
#VALUE!
如果我通过手动恢复我的公式(手动编辑单元格并删除“@”)撤消 Excel 所做的操作,我会得到预期的计算平均值。
【问题讨论】:
-
@BigBen 是的,我已经找到了那种答案,但它在 VBA 中。
-
@Fareanor
@是隐式交集运算符。 BigBen 的观点是,您的问题的解决方案是写信给.Formula2而不是.Formula。如果 xlswriter (还)不支持,那是 xlswriter 的失败,而不是 Excel。
标签: xlsxwriter python python excel xlsxwriter