合併學校榮譽冊原始數據

幫老婆合併學校榮譽冊原始數據

 

#coding=utf-8
import xlrd
import xlwt
import os
import collections
from xlutils.copy import copy

def saveCSV(saveFileName,sheetIndex,rowValues,timeFormatCols):
    tem_excel=xlrd.open_workbook('origin_headers.xls',formatting_info=True)

    new_excel=copy(tem_excel)
    new_sheet=new_excel.get_sheet(sheetIndex)

    style=xlwt.XFStyle()
    font=xlwt.Font()
    font.name='宋體'
    font.bold=False
    font.height = 20 * 12  # 字體大小
    style.font=font

    borders=xlwt.Borders()
    borders.top=xlwt.Borders.THIN
    borders.bottom=xlwt.Borders.THIN
    borders.left=xlwt.Borders.THIN
    borders.right=xlwt.Borders.THIN
    style.borders=borders

    alignment=xlwt.Alignment()
    alignment.horz=xlwt.Alignment.HORZ_CENTER
    alignment.vert=xlwt.Alignment.VERT_CENTER
    style.alignment=alignment
    style.alignment.wrap = 1#自動換行

    index = 1
    startRow = 2
    if sheetIndex == 1:
        startRow = 3

    for row in range(startRow,len(rowValues)):
        if isinstance(rowValues[row][1], str):
            if rowValues[row][1].find("注:")>-1 or rowValues[row][1].find("說明:")>-1 or rowValues[row][1].strip(" ")=="":
                continue
        for cel in range(len(rowValues[0])):
            if cel == 0:
                new_sheet.write(row, cel, index,style)
                index += 1
            else:
                try:
                    if cel in timeFormatCols:
                        if isinstance(rowValues[row][cel],float):
                            style.num_format_str = 'YYYY/M/D'
                        # 設置列寬
                        new_sheet.col(cel).width = 256 * 15

                    new_sheet.write(row, cel, rowValues[row][cel],style)
                    style.num_format_str = 'General'
                except Exception as e:
                    print("saveCSV error: {}".format(str(e)))
                    pass

    new_excel.save(saveFileName)




def readExecl(fileName,sheetName,keyIndex):
    file = xlrd.open_workbook(fileName)

    # 輸出Excel中表的個數
    print(file.nsheets)
    values = []
    # 讀取某張表
    try:
        sheet = file.sheet_by_name(sheetName)
    except Exception as e:
        print("readExecl error: not found ,"+str(e))
        return values
    # 獲取表的行數
    nrows = sheet.nrows
    # 獲取表的列數
    ncols = sheet.ncols
    print("nrows: %d, ncols: %d ,sheetName:%s" % (nrows, ncols,sheetName))

    # 獲取第一行的數據
    values=[]
    startRow =2
    if sheetName=="二、子課題獲獎":
        startRow =3
    for i in range(startRow,nrows):
        row_value = sheet.row_values(i)
        print(row_value)
        if row_value[keyIndex]!="":
            values.append(row_value)
    return values

ROOTDIR="new_1_add/全區榮譽錄彙總/data"

def main():
    sheetNameDict=  collections.OrderedDict()
    sheetNameDict["一、獨立立項課題獲獎"]=1
    sheetNameDict["二、子課題獲獎"] = 1
    sheetNameDict["三、專著"] = 1
    sheetNameDict["四、教師公開發表的成果 "] = 1
    sheetNameDict["五、學術活動交流成果"] = 3
    sheetNameDict["六、教師論文獲獎"]=1
    sheetNameDict["七、案例、課件、教案獲獎"] = 1
    sheetNameDict["八、教師競賽獲獎情況"] = 1
    sheetNameDict["九、教師榮譽"] = 1
    sheetNameDict["十、單位集體榮譽"] = 3
    sheetNameDict["十一、學生作品發表情況"] = 1
    sheetNameDict["十二、學生習作獲獎情況"] = 1
    sheetNameDict["十三、學生藝術獲獎情況"] = 1
    sheetNameDict["十四、學生體育獲獎情況"] = 1
    sheetNameDict["十五、其它學科學生競賽獲獎"] = 1
    sheetNameDict["十六、學生獲得的榮譽稱號"] = 1



    timeFormat=[[6,8],[11,12],[8],[6,7],[8],
                [7],[7],[7],[5],[6],[6],[9],[9],[9],[9],[5]]

    sheetIndex=0
    for sheetName,keyIndex in sheetNameDict.items():
        values=[]
        for file in os.listdir(ROOTDIR):
            file_name="{}/{}".format(ROOTDIR,file)
            print("scan {}".format(file_name))
            values.extend(readExecl(file_name,sheetName,keyIndex))
        timeFormatCols=timeFormat[sheetIndex]
        saveCSV("origin_headers.xls",sheetIndex,values,timeFormatCols)
        sheetIndex+=1


if __name__ == '__main__':
    main()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章