dgorissen/pycel

AttributeError: 'Worksheet' object has no attribute 'formula_attributes'

Closed this issue · 3 comments

What actually happened

While running ExcelCompiler(filename=temp_file_name), I got the following error:
[ERROR] AttributeError: 'Worksheet' object has no attribute 'formula_attributes'

What was expected to happen

After ExcelCompiler(filename=temp_file_name) I should have been able to run column_values = excel.evaluate('sheet_name!J3:J7') and get the values.

Problem description

The init() function within the ExcelCompiler class makes use of the ExcelOpxWrapper class, which in turn makes use of the load() and load_array_formulas() functions. This last function - load_array_formulas() cannot be executed because of a bug in the following code:
for address, props in ws.formula_attributes.items():
Since openpyxl's latest updates (10.09.2021, v. 3.0.8, in this particular commit: openpyxl xommit) the formula_attributes mentioned above have been removed, which means that the ExcelCompiler does not work anymore, because the libraries seem to be incompatible at the moment.

Environment

Pycel 1.0b28; Python 3.8; OS: Mac and Linux

@karolinabirecka Thank you for the excellent bug report. Odd that they released a breaking change on patch level version of 3.0.8.

I took a quick cut at resolving the issue, but something else has changed below the hood. Will need to spend a bit more time.

Fixed in 1.0b29

I understand that formula_attributes support has been discontinued since 3.1.0.
Is it correct that formula_attributes has been changed to array_formulae?
If not, what should I use to do the right thing like formula_attributes?

Thank you in advance