幫老婆合併學校榮譽冊原始數據
#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()