4

有没有办法使用 xlrd 读取 excel 文件属性?我指的不是单元格表示属性,而是一般工作簿属性。

提前非常感谢。

4

2 回答 2

1

除了用户名(最后一个保存工作表的人),由 open_workbook 返回的 Book 实例似乎没有任何属性。

我递归地转储了这本书(如果是 xlrd.BaseObject,则转储它的字典)并且无法以这种方式找到任何东西。测试文件肯定有作者、公司和一些自定义元数据。

FWIW:LibreOffice 似乎也无法找到作者和公司(或不显示它们),但它确实在属性中显示了自定义元数据。

于 2012-11-26T10:17:19.680 回答
1

我找不到使用 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
    }
于 2017-10-24T20:51:59.353 回答