Rétrograde la version d’openpyxl pour charger les données France Relance
Problème
La version 3.1.x de la bibliothèque openpyxl semble plus stricte sur la validation
des fichiers XLSX, et refuse maintenant de charger en particulier le fichier
France_Relance_Synthèse_déploiement_PV.xlsx
.
Traceback (most recent call last):
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 301, in read
self.read_worksheets()
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 237, in read_worksheets
ws_parser.bind_all()
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/worksheet/_reader.py", line 465, in bind_all
self.bind_cells()
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/worksheet/_reader.py", line 368, in bind_cells
for idx, row in self.parser.parse():
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/worksheet/_reader.py", line 163, in parse
obj = prop[1].from_tree(element)
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/descriptors/serialisable.py", line 87, in from_tree
obj = desc.expected_type.from_tree(el)
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/descriptors/serialisable.py", line 87, in from_tree
obj = desc.expected_type.from_tree(el)
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/descriptors/serialisable.py", line 87, in from_tree
obj = desc.expected_type.from_tree(el)
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/descriptors/serialisable.py", line 103, in from_tree
return cls(**attrib)
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/worksheet/filters.py", line 184, in __init__
self.val = val
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/worksheet/filters.py", line 165, in __set__
raise ValueError("Value must be either numerical or a string containing a wildcard")
ValueError: Value must be either numerical or a string containing a wildcard
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/ronan/dev/anct/insitu/insitu/importer/helpers.py", line 77, in try_to_import_datasets
importer.load()
File "/home/ronan/dev/anct/insitu/insitu/importer/importers.py", line 301, in load
self.wb = load_workbook(
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 346, in load_workbook
reader.read()
File "/home/ronan/.virtualenvs/insitu/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 307, in read
raise ValueError(
ValueError: Unable to read workbook: could not read worksheets from ../datasets/France_Relance_Synthèse_déploiement_PV.xlsx.
This is most probably because the workbook source files contain some invalid XML.
Une autre personne qui soulève le problème ici : https://foss.heptapod.net/openpyxl/openpyxl/-/issues/2055
Solution
Peut-être que le fichier source est invalide, mais avant on arrivait à le charger, donc on rétrograde la version d’openpyxl…