有没有办法使用 xlrd 读取 excel 文件属性?我指的不是单元格表示属性,而是一般工作簿属性。
提前非常感谢。
除了用户名(最后一个保存工作表的人),由 open_workbook 返回的 Book 实例似乎没有任何属性。
我递归地转储了这本书(如果是 xlrd.BaseObject,则转储它的字典)并且无法以这种方式找到任何东西。测试文件肯定有作者、公司和一些自定义元数据。
FWIW:LibreOffice 似乎也无法找到作者和公司(或不显示它们),但它确实在属性中显示了自定义元数据。
我找不到使用 xlrd 执行此操作的方法,但如果您只需要读取 .xlsx 文件,则可以将它们视为 Zipfile 并读取属性 XML 文件。您可以通过将 .xlsx 扩展名更改为 .zip 并在 Windows 上打开文件来看到这一点。下面是读取自定义属性的示例。
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
}