Después de buscar en diversos repositorios y páginas webs al concluir dimos con la resolución que te compartimos aquí.
Solución:
Con el 1.0.0
liberación de pandas – January 29, 2020
se agregó soporte para archivos binarios de Excel.
import pandas as pd
df = pd.read_excel('path_to_file.xlsb', engine='pyxlsb')
Notas:
- Necesitarás actualizar pandas –
pip install pandas --upgrade
- Necesitarás instalar
pyxlsb
–pip install pyxlsb
Hola, en realidad hay una manera. Simplemente use la biblioteca pyxlsb.
import pandas as pd
from pyxlsb import open_workbook as open_xlsb
df = []
with open_xlsb('some.xlsb') as wb:
with wb.get_sheet(1) as sheet:
for row in sheet.rows():
df.append([item.v for item in row])
df = pd.DataFrame(df[1:], columns=df[0])
ACTUALIZACIÓN: a partir de la versión 1.0 de pandas, read_excel() ahora puede leer archivos binarios de Excel (.xlsb) pasando engine=’pyxlsb’
Fuente: https://pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html
De hecho, Pyxlsb es una opción para leer archivos xlsb, sin embargo, es bastante limitada.
Sugiero usar el paquete xlwings que permite leer y escribir archivos xlsb sin perder el formato de hoja, fórmulas, etc. en el archivo xlsb. Existe una amplia documentación disponible.
import pandas as pd
import xlwings as xw
app = xw.App()
book = xw.Book('file.xlsb')
sheet = book.sheets('sheet_name')
df = sheet.range('A1').options(pd.DataFrame, expand='table').value
book.close()
app.kill()
‘A1’ en este caso es la posición inicial de la tabla de Excel. Para escribir en el archivo xlsb, simplemente escriba:
sheet.range('A1').value = df
Si sostienes algún reparo y capacidad de aumentar nuestro tutorial eres capaz de ejecutar una crítica y con mucho placer lo ojearemos.