xlrd.biffh.XLRDError: Excel xlsx-Datei; nicht unterstützt [Duplikat]

Dec 11 2020

Ich versuche, ein pandas.read_excelmakrofähiges Excel-Arbeitsblatt mit der xlrd-Bibliothek zu lesen . Es läuft lokal gut, aber wenn ich versuche, dasselbe in PCF zu pushen, wird folgende Fehlermeldung angezeigt:

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

Wie kann ich diesen Fehler beheben?

Antworten

154 ChrisWithers Dec 12 2020 at 21:49

Wie in der Release-E-Mail angegeben , mit dem Release-Tweet verknüpft und in einer großen orangefarbenen Warnung vermerkt, die auf der Titelseite der Dokumentation angezeigt wird , und weniger orange, aber immer noch vorhanden, in der Readme- Datei im Repository und in der Release-Version auf pypi :

xlrd hat die Unterstützung für andere als xls-Dateien explizit entfernt.

In Ihrem Fall lautet die Lösung:

  • Stellen Sie sicher, dass Sie eine aktuelle Version von Pandas, mindestens 1.0.1, und vorzugsweise die neueste Version verwenden. 1.2 wird seine noch klarer machen.
  • installieren openpyxl:https://openpyxl.readthedocs.io/en/stable/
  • Ändern Sie Ihren Pandas-Code in:
    df1 = pd.read_excel(
         os.path.join(APP_PATH, "Data", "aug_latest.xlsm"),
         engine='openpyxl',
    )
    
65 tryhard Dec 11 2020 at 23:47

Die vorherige Version, xlrd 1.2.0, scheint zu funktionieren, kann Sie jedoch auch potenziellen Sicherheitslücken aussetzen. Wenn Sie diese Warnung aus dem Weg räumen möchten, geben Sie den folgenden Befehl ein, wenn Sie sie dennoch ausprobieren möchten:

pip install xlrd==1.2.0