294 votes

xlrd.biffh.XLRDError : Fichier Excel xlsx ; non pris en charge

J'essaie de lire une feuille de calcul Excel activée par une macro à l'aide de la fonction pandas.read_excel avec la bibliothèque xlrd. Il fonctionne bien en local, mais lorsque j'essaie de le pousser dans PCF, j'obtiens cette erreur :

2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] df1=pd.read_excel(os.path.join(APP_PATH, os.path.join("Data", "aug_latest.xlsm")),sheet_name=None)

2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] return open_workbook(filepath_or_buffer)
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] File "/home/vcap/deps/0/python/lib/python3.8/site-packages/xlrd/__init__.py", line 170, in open_workbook
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] xlrd.biffh.XLRDError: Excel xlsx file; not supported

Comment puis-je résoudre cette erreur ?

2 votes

Cela répond-il à votre question ? pandas ne peut pas ouvrir le fichier xlsx

514voto

Chris Withers Points 321

Comme indiqué dans le e-mail de libération dont le lien se trouve sur le site Communiqué de presse et noté dans un grand avertissement orange qui apparaît sur la première page de la documentation et moins orangée, mais toujours présente, dans la région de l'Atlantique. readme sur le référentiel et le version sur pypi :

xlrd a explicitement supprimé le support pour tout ce qui n'est pas des fichiers xls.

Dans votre cas, la solution est de :

  • assurez-vous que vous êtes sur une version récente de Pandas, au moins 1.0.1, et de préférence la dernière version. La version 1.2 rendra son encore plus claire.
  • installer openpyxl : https://openpyxl.readthedocs.io/en/stable/
  • changez votre code Pandas pour être :

    df1 = pd.read_excel(
         os.path.join(APP_PATH, "Data", "aug_latest.xlsm"),
         engine='openpyxl',
    )

284voto

tryhard Points 1579

La version précédente, xlrd 1.2.0, peut sembler fonctionner, mais elle peut également vous exposer à des failles de sécurité potentielles. Après cet avertissement, si vous voulez toujours essayer, tapez la commande suivante :

pip install xlrd==1.2.0

64 votes

C'est absolument la mauvaise réponse. N'utilisez pas xlrd pour lire les fichiers xlsx, mais plutôt openpyxl.readthedocs.io/fr/stable .

4 votes

@tryhard Qu'entendez-vous par "failles de sécurité potentielles" ?

1 votes

@RicS - c'était dans mon édition. Les fichiers .xlsx sont des fichiers zip contenant du xml, zip et xml ont tous deux des problèmes de sécurité bien publiés que xlrd n'a pas réussi à résoudre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X