我有一个对象列表,其中包含电子表格中的“名称/范围”。在处理电子表格时,我需要更新与范围相关的值。
保存此信息的类如下所示:class varName:
name = None
refersTo = None
refersToR1C1 = None
value = None
def __init__(self, name, refersTo, refersToR1C1, value):
self.name = name
self.refersTo = refersTo
self.refersToR1C1 = refersToR1C1
self.value = value
我创建列表如下:staticNames = {}
wbNames = wb.Names
for name in wbNames:
(nSheet, nAddr) = name.RefersTo.split("!")
print "Name: %s Refers to: %s Refers to R1C1: %s Value: %s " %(name.Name , name.RefersTo, name.RefersToR1C1, wSheets(nSheet.replace('=', '') ).Range(nAddr).value )
##print wSheets(nSheet.replace('=', '') ).Range(nAddr).value
staticNames[name.Name] = varName( name.Name , name.RefersTo, name.RefersToR1C1, wSheets(nSheet.replace('=', '') ).Range(nAddr).value )
看来效果不错。我可以在debug中看到列表和包含的对象。当我回去根据处理电子表格来更新列表中的对象时,我会迷失方向。
我调用此函数:def updateStaticNames( ws, r, c, val_in, staticNames ):
for sName in staticNames:
if sName.refersToR1C1() == "=" + ws.Name +"!R" + str(r) + "C" + str(c) :
sName.value = val_in
return None
staticNames是指包含Name/Range对象的列表。
我希望sName包含varName类型的对象。可惜里面有一根绳子。我做错什么了?