【发布时间】:2010-07-02 03:22:51
【问题描述】:
xlrd 的文档在这里
http://www.python-excel.org/
提到现在可以在最新版本中使用,但没有说明如何。
【问题讨论】:
标签: python excel xlrd named-ranges
xlrd 的文档在这里
http://www.python-excel.org/
提到现在可以在最新版本中使用,但没有说明如何。
【问题讨论】:
标签: python excel xlrd named-ranges
我不确定您实际阅读的是什么; xlrd 对命名范围的访问已经有好几年了(在 0.6.0 版中;最新版本是 0.7.1 版),并且从头开始附带完整的文档。
This is the xlrd documentation link 在您提到的http://www.python-excel.org/ 页面上给出。点击 PageDown 两次,您应该会看到标题为命名引用、常量、公式和宏的部分。这提供了一个概述,并为您指出了 Book.name_* 方法和 Name 对象的文档,以及一个演示脚本。
请注意,这是文档的 SVN 主干版本,适用于未来版本;它可能会提到一种额外的便利方法,该方法在当前发布的 xlrd 版本中不可用(您可以从 PyPI 获得),其中包括相关的文档文件。
更新以响应“”“我已经走到了这一步:someRange = book.name_map[u'somerange'][0] 现在我想迭代它,获取值,获取它尺寸等。现在我该怎么办?我尝试了 dir(someRange) 和 help(someRange) 并没有太大帮助。"""
您调用的someRange 是Name 类的一个实例。您需要阅读documentation of that class。如果您要阅读 the demonstration script xlrdnameAPIdemo.py 并尝试在您的 xls 文件上运行它,将会有所帮助。请注意,“获取其尺寸”在逻辑上先于“迭代它,获取值”;方便的方法Name.area2d 可能是你需要的。
【讨论】:
someRange = book.name_map[u'somerange'][0] 现在我想遍历它,获取值,获取它的尺寸等等。现在我该怎么办?我试过dir(someRange) 和help(someRange) 并没有太大帮助。谢谢。
这不是微不足道的,在我的情况下,它只在 XLS 没有 XLSX 上有效(可能是因为在我的 XLSX name.evaluated == 0 上):
name = book.name_map['my_named_range'][0]
assert name.result.kind == xlrd.oREF
ref3d = name.result.value[0]
for sheet_index in range(ref3d.shtxlo, ref3d.shtxhi):
sheet = book.sheet_by_index(sheet_index)
for row in range(ref3d.rowxlo, min(ref3d.rowxhi, sheet.nrows)):
for col in range(ref3d.colxlo, min(ref3d.colxhi, sheet.ncols)):
cell = sheet.cell(row, col)
# TODO: Do something with that cell.
您希望限制工作表中的列数和行数,以防您的范围类似于A:A 或1:1(即整行或整列)。
【讨论】: