Yesterday I've got a very cryptic error.
>>> from openpyxl import load_workbook
>>> wb = load_workbook('super-important.xlsx')
File ".../python3.9/site-packages/openpyxl/descriptors/base.py", line 128, in __set__
raise ValueError(self.__doc__)
ValueError: Value must be one of {'lessThanOrEqual', 'lessThan', 'equal', 'greaterThan', 'notEqual', 'greaterThanOrEqual'}
After I placed breakpoint inside openpyxl/descriptors/base.py
and run import with debugger I realized that it was complaining about some element of type openpyxl.worksheet.filters.CustomFilter
which had value = '**none**'
OOXML specification says that customFilter
criteria has Filter Comparison Operator and it should be one of
Valid value | Description |
---|---|
equal | Equal |
lessThan | Less Than |
lessThanOrEqual | Less Than Or Equal |
notEqual | Not Equal |
greaterThanOrEqual | Greater Than Or Equal |
greaterThan | Greater Than |
It seems that my file just does not comply with the OOXML specification.
So the value `**none**` might be supported internally by Excel but it isn't the specification. Supporting the specification is the only sane way to develop the library so I can't blame openpyxl in any way.
I've managed to work around this by perform Format -> Clear direct formatting (Ctrl+M)
in LibreOffice.