显示“=”而不是公式的openpyxl

我正在使用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, "")'

这是发生在其他一堆其他公式的一堆其他工作表,我似乎无法find任何押韵或原因。 我查看了文档,我没有加载data_only=True所以我不知道发生了什么问题。

这听起来很像你正在使用“共享公式”看单元格。 当这种情况下,几个单元格使用相同的公式。 公式本身只存储在其中一个单元格中,其他所有单元格都被标记为公式,但只包含一个引用。 直到版本2.3的openpyxl所有这些单元格将返回“=”作为它们的值。 但是,版本2.3现在执行从属单元公式的必要转换。 即。 对A1来说,一个共享公式“= A1 + 1”将被转换为“= B1 + 1”。

如果您尚未使用,请升级到2.3。

如果情况不是这样,那么请提交一份包含示例文件的错误报告。