def getSheetInfos(sheettitle,sheettree): arrerrorfiles,arrnewfiles,arrsuccessfiles,arrtreeinfo=[],[],[],[] filename=RETool.excludeNumbers(sheettitle)#文件名字可带日期 datename=RETool.getNumnbers(sheettitle)#文件名对应的日期 languageNames=ETTool.getAllElementNames(sheettree)#解析出这个表格中配置了多少个语言的文字 #遍历语言 for i,v in enumerate(languageNames): arrLangFile,arrfilepath,arroldtree=readConfig.arrLanguageFileName(v),[],[] for j,k in enumerate(arrLangFile):#遍历语言的对应文件,像法语French就对应着两个文件夹fr_fr,fr_se xfilename=readConfig.getOutputPath()+k+"/"+filename+".xml"#保存的文件名字 hintfilename=k+"/"+filename if(False==os.path.isdir(readConfig.getOutputPath()+k)):#不存在目录 arrerrorfiles.append(hintfilename) continue elif(os.path.isfile(xfilename)):#存在 rroot=ETTool.readETRoot(xfilename) if(rroot==None):#存在的.xml文件出现错误 arrerrorfiles.append(hintfilename) continue arrsuccessfiles.append(hintfilename) else:#不存在则新建 rroot=ETTool.createETRoot() arrnewfiles.append(hintfilename) arrfilepath.append(xfilename) arroldtree.append(rroot) arrtreeinfo.append(sheetLanguageInfo(v,ETTool.getElement(sheettree,v),arrfilepath,arroldtree)) return [filename,datename,arrerrorfiles,arrsuccessfiles,arrnewfiles,arrtreeinfo]
def parseMultipleFilessSheet(sheet, minrow, maxrow, mincol, maxcol, keycol,keyrow): lstrees,dictag,lasttag,endtag=[],{},None,None for tagrow in range(minrow,maxrow):#查找表格有多少个文件,并且记录每个文件的起始minrow,maxrow arrtag=[] try: cell = sheet.cell(row=tagrow,column=mincol-1) cellkey=sheet.cell(row=tagrow,column=mincol) except Exception as detaile: print(detaile) continue if(cell.column==None or cell.row==None or cell.value==None or cellkey.column==None or cellkey.row==None or cellkey.value==None): continue if(dictag.get(cell.value)!=None): continue if(lasttag==None or lasttag!=cell.value):#first one or different one arrtag.extend([cell.value,cell.row]) dictag[cell.value]=arrtag if(lasttag!=None): arrlasttag=dictag[lasttag] arrlasttag.extend([cell.row-1]) lasttag=cell.value endtag=cell.value if(endtag!=None): arrlasttag=dictag[endtag] arrlasttag.extend([maxrow]) for i,v in enumerate(dictag): arrtag=dictag[v] lstree=ETTool.createETRoot("root") parseSheetSimple.parseSimpleSheet(sheet,arrtag[1],arrtag[2],mincol,maxcol,keycol,keyrow,lstree) writeXml.writeXml("languageoutput/"+v+".xml",lstree) lstrees.append([v,lstree]) return lstrees
def parseSimpleSheet(sheet, minrow, maxrow, mincol, maxcol, keycol,keyrow,lstree,tagname=readConfig.defaultTagName): if(lstree==None): lstree=ETTool.createETRoot("root") for row in sheet.get_squared_range(mincol,minrow,maxcol,maxrow): for cell in row: if(cell.column==None or cell.row==None or cell.value==None):#not valid cell continue if((column_index_from_string(cell.column) - keycol)%2==0 or (column_index_from_string(cell.column)==keycol)):# 语言配置项所在的col和key所在的col相差是有规律的 continue keyname=sheet.cell(row=cell.row,column=keycol).value lanuagename=sheet.cell(row=keyrow,column=column_index_from_string(cell.column)).value if(keyname==None or lanuagename==None): #没有语言项 或 没有键值 continue let=ETTool.getElement(lstree,lanuagename) taget=ETTool.getElement(let,tagname) ETTool.setElementAttriByName(taget,readConfig.defaultKeyName,keyname,cell.value) writeXml.writeXml("languageoutput/xoutput.xml",lstree) return lstree