Solución:
Encontré este mismo problema y el uso de pyxlsb lo hace por mí:
from pyxlsb import open_workbook
with open_workbook('HugeDataFile.xlsb') as wb:
for sheetname in wb.sheets:
with wb.get_sheet(sheetname) as sheet:
for row in sheet.rows():
values = [r.v for r in row] # retrieving content
csv_line=",".join(values) # or do your thing
Los paquetes de Excel python más populares, openpyxl y xlrd, no tienen soporte para xlsb
formato (entradas del rastreador de errores: openpyxl, xlrd).
Así que me temo que no hay una forma nativa de Python = /. Sin embargo, dado que está utilizando Windows, debería ser fácil programar la tarea con herramientas externas.
Sugeriría echar un vistazo a Convertir XLS a XLSB de forma programada. Mencionas Python en el título, pero el asunto de la pregunta no implica que estés fuertemente acoplado a él, por lo que podrías optar por el camino puro de C #.
Si se siente realmente cómodo solo con Python, una de las respuestas allí sugiere una herramienta de línea de comandos con un nombre elegante de Convert-XLSB. Puede escribirlo como una herramienta externa de Python con subprocess
.
Sé que esta no es una buena respuesta, pero no creo que haya una forma mejor / más fácil a partir de ahora.
En mi experiencia anterior, estaba manejando la conversión de xlsb usando oficina libre utilidad de línea de comando,
En ruby, simplemente ejecuto el comando del sistema para llamar a libreoffice para convertir el formato xlsb a csv:
`libreoffice --headless --convert-to csv your_csv_file.xlsb --outdir /path/csv`
y para cambiar la codificación, uso la línea de comando para usar iconv, usando ruby:
`iconv -f ISO-8859-1 -t UTF-8 your_csv_file.csv > new_file_csv.csv`