使用python和xlrd读取工作簿属性

时间:2012-10-30 13:22:33

标签: python xlrd

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

提前多多感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我找不到使用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
    }