完整代码如下,有时间再总结细节:
#coding=utf-8
import xlrd
import xlwt
from xlutils.copy import copy
from copy import deepcopy
class DataOutput_Helper:
'''It's a data structure about scenario.
there are many methods provioded to make output the excel data easily'''
def __init__(self,project,gvalue,lvalue,ip,mode,paraName,inputP,outputP,formula,scen):
self.__project=project
self.__gvalue=gvalue
self.__lvalue=lvalue
self.__ip=ip
self.__mode=mode
self.__paraName=paraName
self.__inputP=inputP
self.__outputP=outputP
self.__formula=formula
self.__scen=scen
print self.__scen
def get_scen_num(self):
return len(self.__scen.keys())
def get_scen_name(self):
return self.__scen.keys()
def get_rawdata_by_index(self,scenName,index):
return [self.__ip[index],self.__mode[index],self.__paraName[index],self.__inputP[index],self.__outputP[index],self.__formula[index],\
self.__scen[scenName]['param'][index],self.__scen[scenName]['period'][index]]
def get_data_num(self,scenName):
m=0
for n in range(len(self.__scen[scenName]['param'])):
if self.__scen[scenName]['param'][n]!='' or self.__scen[scenName]['period'][n]!='':
m+=1
return m
def get_project_name(self):
return self.__project
def get_data_by_index(self,scenName,index):
if self.__scen[scenName]['param'][index]=='' and self.__scen[scenName]['period'][index]=='':
return None
elif self.__mode[index]>1:
master=self.__ip[index]+str(self.__mode[index])
elif self.__mode[index]==1:
master=self.__ip[index]
paralist=[]
for n in self.__scen[scenName]['param'][index].split(','):
paralist.append(n.split('='))
formula_re=self.__formula[index]
for n in range(len(paralist)):
formula_re=formula_re.replace(paralist[n][0],str(paralist[n][1]))
for n in range(len(self.__gvalue)):
formula_re=formula_re.replace(self.__gvalue[n][0],str(self.__gvalue[n][1]))
for n in range(len(self.__lvalue)):
formula_re=formula