2010-07-02 73 views

回答

4

我不确定你在看什么;对命名区域的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]现在我想遍历它,获取值,获取它的尺寸等。 “”“”

你打电话给someRangeName类的一个实例。现在我该怎么办?我尝试了dir(someRange)和help(someRange)并且帮助不大。您需要阅读documentation of that class。如果你想读取the demonstration script xlrdnameAPIdemo.py并试着在你的xls文件上运行它会有所帮助。请注意,“获取其维度”在逻辑上位于“迭代它,获取值”之前;便利方法Name.area2d可能是你需要的。

+0

好的约翰,所以我得到了这么多:'someRange = book.name_map [u'somerange'] [0]'现在我想遍历它,获取值,获得它的尺寸等。做?我尝试过'dir(someRange)'和'help(someRange)',它没有太大的帮助。谢谢。 – 2010-07-02 14:29:04

1

这不是小事,它在我的情况下,只有在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:A1:1(即整行或列)。

相关问题