xlrd.biffh.XLRDError: plik Excel xlsx; nieobsługiwane [duplikat]

Dec 11 2020

Próbuję odczytać arkusz programu Excel z włączoną obsługą makr, używając pandas.read_excelz biblioteką xlrd. Działa dobrze w lokalnym, ale kiedy próbuję włożyć to samo do PCF, pojawia się ten błąd:

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

Jak mogę rozwiązać ten błąd?

Odpowiedzi

154 ChrisWithers Dec 12 2020 at 21:49

Jak zauważono w e-mailu z wydaniem , do którego prowadzi link z tweeta dotyczącego wydania i zaznaczono dużym pomarańczowym ostrzeżeniem, które pojawia się na pierwszej stronie dokumentacji , a mniej pomarańczowym, ale nadal obecnym, w pliku readme w repozytorium i wydaniu na pypi :

xlrd wyraźnie usunął obsługę czegokolwiek innego niż pliki xls.

W Twoim przypadku rozwiązaniem jest:

  • upewnij się, że korzystasz z najnowszej wersji Pand, co najmniej 1.0.1, a najlepiej w najnowszej wersji. 1.2 sprawi, że będzie jeszcze jaśniejszy.
  • zainstalować openpyxl:https://openpyxl.readthedocs.io/en/stable/
  • zmień swój kod Pandy na:
    df1 = pd.read_excel(
         os.path.join(APP_PATH, "Data", "aug_latest.xlsm"),
         engine='openpyxl',
    )
    
65 tryhard Dec 11 2020 at 23:47

Poprzednia wersja, xlrd 1.2.0, może wydawać się działać, ale może również narazić Cię na potencjalne luki w zabezpieczeniach. Po usunięciu tego ostrzeżenia, jeśli nadal chcesz spróbować, wpisz następujące polecenie:

pip install xlrd==1.2.0