2016-04-30 73 views
0

我有一個將xlrd.Cell對象作爲參數的函數。但是,該功能還需要訪問「擁有」該單元的對象xlrd.Sheet。如果不需要,我寧願不必傳遞它來自的表單對象。 API是否提供了一種方法來獲取擁有單元格的表單?xlrd API:獲取較低級別對象的所有者(例如,從Cell對象獲取Sheet對象)

如果可能的話,訪問來自工作表對象的xlrd.Book對象也很有用。

我仔細研究了API,它看起來並不像這些可用,但我因爲忽略這樣的事情而臭名昭着。

回答

1

xlrd.Cell對象的定義是:

# Type:  Cell 
# String Form:number:42.0 
# File:  c:\python27\lib\site-packages\xlrd\sheet.py 
# Source: 
class Cell(BaseObject): 

    __slots__ = ['ctype', 'value', 'xf_index'] 

    def __init__(self, ctype, value, xf_index=None): 
     self.ctype = ctype 
     self.value = value 
     self.xf_index = xf_index 

    def __repr__(self): 
     if self.xf_index is None: 
      return "%s:%r" % (ctype_text[self.ctype], self.value) 
     else: 
      return "%s:%r (XF:%r)" % (ctype_text[self.ctype], self.value, self.xf_index) 

所以有在Cell對象到父Worksheet沒有引用。您可以輕鬆地擴展xlrd.Worksheetxlrd.Cell類以添加此類引用,但您可以將父級工作表以及函數傳遞給您的函數,並省去麻煩。