2014-04-28 79 views
6

讀取在一個單元格中鍵入一個公式的結果,我打印一些式中的Excel工作表中的一個:Openpyxl 1.8.5:使用openpyxl

wsOld.cell(row = 1, column = 1).value = "=B3=B4" 

但我不能在執行一些其他邏輯使用其結果如:

if((wsOld.cell(row=1, column=1).value)='true'): 
    # copy the 1st row to another sheet 

即使當我試圖打印結果在命令行中,我最終印刷式:

>>> print(wsOld.cell(row=1, column=1)) 
>>> =B3=B4 

如何在單元格中獲得公式的結果而不是公式本身?

回答

12

openpyxl支持公式或公式的值。您可以在打開工作簿時選擇使用data_only標誌。但是,openpyxl不會也不會計算公式的結果。這裏有像pycel這樣的圖書館,它聲稱要這樣做。

+4

FWIW,如'openpyxl.load_workbook記錄()',你用'DATA_ONLY =真打開工作簿時獲得的價值'是「Excel讀取工作表上次存儲的值」。這依賴於.xls [x/m/...]文件的緩存功能(關於我在除微軟以外的任何地方都可以找到文檔)。 – Tibo

1

Openpyxl不支持excel 100%來計算公式。它僅支持非常基本的公式。如果要計算工作簿中的所有公式,則應使用xlwings庫。

1

我已經解決了使用openpyxl和熊貓的結合事項:

import pandas as pd 
import openpyxl 
from openpyxl import Workbook , load_workbook 


source_file = "Test.xlsx" 
# write to file 
wb = load_workbook (source_file) 
ws = wb.active 
ws.title = "hello world" 
ws.append ([10,10]) 
wb.save(source_file) 

# read from file 
df = pd.read_excel(source_file) 
sum_jan = df ["Jan"].sum() 
print (sum_jan)