如何使用XLRD,Python找到和访问名称范围(Global,ND每件工作表)?
-
02-10-2019 - |
题
文档 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),但没有多大帮助。”“”
你在打什么 someRange
是 Name
班级。您需要阅读 该课程的文档. 。如果您阅读会有所帮助 演示脚本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
(即,整个行或列)。