openpyxl 显示“=”而不是公式

openpyxl showing '=' instead of formula

我正在使用 openpyxl 阅读包含大量公式的 Excel 电子表格。对于某些单元格,如果我访问单元格的值,例如sheet['M30'].value 我得到了预期的公式,例如 '=IFERROR(VLOOKUP(A29, other_wksheet, 9, FALSE)*E29, "")'。但奇怪的是,如果我尝试访问另一个单元格的值,例如sheet['M31'].value 我得到的只是 =,即使在 Excel 中该单元格与 M30 的公式基本相同:'=IFERROR(VLOOKUP(A30, other_wksheet, 9, FALSE)*E29, "")'

这发生在许多其他表格中,其中包含许多其他公式,我似乎找不到任何押韵或理由。我查看了文档,但没有加载 data_only=True,所以我不确定出了什么问题。

这听起来很像您正在使用 "shared formulae" 查看细胞。在这种情况下,多个单元格使用相同的公式。公式本身仅存储在其中一个单元格中,所有其他单元格都标记为公式,但仅包含一个引用。在 openpyxl 的 2.3 版本之前,所有这些单元格都将 return "=" 作为它们的值。但是,2.3 版现在对相关单元格的公式进行了必要的转换。 IE。 A1 的共享公式“=A1+1”将转换为 B1 的“=B1+1”。

如果您还没有使用它,请升级到 2.3。

如果不是这种情况,请提交包含示例文件的错误报告。