文档 xlrd 这里http://www.python-excel.org/提到现在在最新版本中可以使用,但并未说出如何。

有帮助吗?

解决方案

我不确定您实际在阅读什么; XLRD访问命名范围已有多年了(以0.6.0;最新版本为0.7.1),并带有完整的文档。

这是XLRD文档链接 这是在 http://www.python-excel.org/ 您提到的页面。两次打pagedown,您应该看到一个部分 命名参考,常数,公式和宏. 。这给出了概述,并指出您的文档 Book.name_* 方法和 Name 对象,以及演示脚本。

请注意,这是文档的SVN中继版本,适用于将来的版本;它可能提到一种额外的便利方法,该方法在当前发布版本的XLRD中不可用(您可以从中获得 PYPI),其中包括相关文档文件。

更新 为了回应“”我走了这么远:somerange = book.name_map [u'somerange'] [0],现在我想迭代它,抓取价值,获得它的尺寸等。现在我该怎么办?尝试了dir(Somerange)并提供帮助(Somerange),但没有多大帮助。”“”

你在打什么 someRangeName 班级。您需要阅读 该课程的文档. 。如果您阅读会有所帮助 演示脚本xlrdnameapidemo.py 并尝试通过XLS文件运行。请注意,“获取其尺寸”在逻辑上先于“迭代它,抓取值”;便利方法 Name.area2d 可能是您需要的。

其他提示

这不是微不足道的,在我的情况下仅在xls no 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 (即,整个行或列)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top