Lee las propiedades del libro de trabajo usando python y xlrd

¿Hay alguna manera de leer las propiedades del archivo excel usando xlrd? Me refiero no a las propiedades de presentación de celda, sino a las propiedades generales del libro.

Muchas gracias por adelantado.

Aparte del nombre de usuario (la última persona que guardó la hoja de trabajo), la instancia de Libro tal como la devolvió open_workbook no parece tener ninguna propiedad.

De manera recursiva, dejé el Libro (descargando su dictamen si era un xlrd.BaseObject) y no pude encontrar nada de esa manera. Los archivos de prueba seguramente tenían un autor, compañía y algunos metadatos personalizados.

FWIW: LibreOffice tampoco parece poder encontrar autor y compañía (o no los muestra), pero muestra metadatos personalizados en las propiedades.

No pude encontrar una manera de hacer esto con xlrd, pero si solo tiene que leer archivos .xlsx, puede tratarlos como un archivo Zip y leer los archivos XML de propiedades. Puedes ver esto cambiando la extensión .xlsx a .zip y abriendo el archivo en Windows. A continuación se muestra un ejemplo de lectura de propiedades personalizadas definidas.

from lxml import etree as ET import zipfile def get_custom_properties(filename): zip = zipfile.ZipFile(filename) props = zip.open('docProps/custom.xml') text = props.read() xml = ET.fromstring(text) # Works on my example document, but I don't know if every # child node will always have exactly one nested node return { child.attrib['name']: child[0].text for child in xml }