2014-03-24 110 views
25

由於cell.value函數返回用於單元格的公式,所以我遇到了麻煩,我需要提取Excel在提供後的結果操作。如何使用python的openpyxl模塊訪問單元格的實際值

謝謝。


好吧,我想我已經找到了解決辦法;顯然要訪問cell.internal值,您必須先在工作表中使用iter_rows(),這是一個「RawCell」列表。

for row in ws.iter_rows(): 

    for cell in row: 

     print cell.internal_value 

回答

4

嘗試使用cell.internal_value來代替。

+0

已經嘗試過..不知道的功能是不是從現在我在哪裏工作,或者模塊目前沒有實施。我收到錯誤消息:AttributeError:'Cell'對象沒有屬性'internal_value'。 所以我想知道是否有其他方式來完成這一點。 – user3455972

+0

@ user3455972,請將您的代碼發佈到某個地方 –

22

從代碼看起來像你使用優化閱讀器:read_only=True。您可以在打開工作簿時使用data_only=True標誌在提取公式及其結果之間進行切換。

internal_value是一個私有屬性,用於僅引用Excel使用的(無類型)值,即。數字在1900年代表與Python形式相反的日期。自從首次提出這個問題以來,它已從圖書館中刪除。

+0

這對我無效我得到一個無回報的價值 – Nikshep

+0

@Nikshep,請嘗試使用2.0.5並提交錯誤報告,如果您仍有問題。 –

+0

@CharlieClark是的,但http://stackoverflow.com/questions/32772954/how-to-save-in-openpyxl-without-losing-formulae – Pyderman

52

像查理·克拉克已經建議你可以設置Truedata_only當您加載工作簿:

from openpyxl import load_workbook 

wb = load_workbook("file.xlsx", data_only=True) 
sh = wb["Sheet_name"] 
print(sh["x10"].value) 

祝你好運:)

+0

謝謝data_only param很酷 – soField

+0

x10是什麼細胞? – Matthew

+0

'x10'表示帶有字母'X'的列和帶有數字10的行。 –

相關問題