I am printing some formula in one of the Excel sheets:

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

But I cannot use its result in implementing some other logic, as:

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

Even when I am trying to print the result in the command line, I end up printing the formula:

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

How can I get the result of the formula in a cell and not the formula itself?


openpyxl support either the formula or the value of the formula. You can select which using the data_only flag when opening a workbook. However, openpyxl does not and will not calculate the result of a formula. There are libraries out there like pycel which purport to do this.

  • 8
    FWIW, as documented in openpyxl.load_workbook(), the value that you get when opening a Workbook with data_only=True is "the value stored the last time Excel read the sheet". This relies on a caching feature of .xls[x/m/...] files (about which I find documentation everywhere except at Microsoft). – Tibo Feb 26 '15 at 7:35

Openpyxl doesn't support excel 100% for calculating the formula. It supports only very basic formulas. If you want to calculate all formula in workbook you should use xlwings library.


I have solved the matter using a combination of openpyxl and pandas:

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])

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

Your Answer

