2016-02-13 65 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。

如果不是這種情況,請提交一份包含示例文件的錯誤報告。