xlrd.biffh.XLRDError: archivo Excel xlsx; no compatible [duplicado]

Resuelto Vignesh K asked hace 3 años • 0 respuestas

Estoy intentando leer una hoja de cálculo de Excel habilitada para macros utilizando pandas.read_excella biblioteca xlrd. Está funcionando bien en local, pero cuando intento insertar lo mismo en PCF, aparece este error:

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

¿Cómo puedo resolver este error?

Vignesh K avatar Dec 11 '20 22:12 Vignesh K
Aceptado

Como se indica en el correo electrónico de lanzamiento , vinculado desde el tweet de lanzamiento y marcado con una advertencia naranja grande que aparece en la página principal de la documentación , y menos naranja, pero aún presente, en el archivo Léame en el repositorio y en el lanzamiento en pypi :

xlrd ha eliminado explícitamente el soporte para cualquier cosa que no sean archivos xls.

En su caso, la solución es:

  • asegúrese de tener una versión reciente de Pandas, al menos 1.0.1, y preferiblemente la última versión. 1.2 lo dejará aún más claro.
  • instalar openpyxl: https://openpyxl.readthedocs.io/en/stable/
  • cambia tu código Pandas para que sea:
    df1 = pd.read_excel(
         os.path.join(APP_PATH, "Data", "aug_latest.xlsm"),
         engine='openpyxl',
    )
    
Chris Withers avatar Dec 12 '2020 14:12 Chris Withers

Puede parecer que la versión anterior, xlrd 1.2.0, funciona, pero también podría exponerle a posibles vulnerabilidades de seguridad. Dejando de lado esa advertencia, si aún deseas intentarlo, escribe el siguiente comando:

pip install xlrd==1.2.0
tryhard avatar Dec 11 '2020 16:12 tryhard