2016-02-13 70 views
1

我正在使用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, "")'openpyxl显示'='而不是公式

这发生在一堆其他工作表与一堆其他公式,我似乎无法找到任何押韵或原因。我浏览了文档,并且我没有加载data_only=True,所以我不确定发生了什么问题。

+0

你使用的是什么'openpyxl'版本?谢谢。 – alecxe

回答

0

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

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

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