2010-07-02 71 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(即整行或列)。

相關問題