예제 #1
0
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
예제 #3
0
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