xlrd.biffh.XLRDError: archivo xlsx de Excel; no admitido [duplicado]
Estoy tratando de leer una hoja de cálculo de Excel habilitada para macros usando pandas.read_excel
la 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 solucionar este error?
Respuestas
Como se indica en el correo electrónico de lanzamiento , vinculado al tweet de lanzamiento y con una advertencia grande de color naranja que aparece en la página principal de la documentación , y menos naranja, pero aún presente, en el archivo Léame del repositorio y el lanzamiento de pypi :
xlrd ha eliminado explícitamente el soporte para cualquier cosa que no sean archivos xls.
En tu 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 hará aún más claro.
- instalar
openpyxl
:https://openpyxl.readthedocs.io/en/stable/ - cambia tu código de Pandas para que sea:
df1 = pd.read_excel( os.path.join(APP_PATH, "Data", "aug_latest.xlsm"), engine='openpyxl', )
La versión anterior, xlrd 1.2.0, puede parecer que funciona, pero también podría exponerlo a posibles vulnerabilidades de seguridad. Con esa advertencia fuera del camino, si aún desea intentarlo, escriba el siguiente comando:
pip install xlrd==1.2.0