EXl表格简单处理
环境:pycharm + xlrd+xlwt + datetime
说明:最近公司搬迁用了门禁作为考勤,而要求每天都要做员工考勤数据下发。而每次进出都会有考勤数据记录,导致大量重复数据需要处理,,这个工作耗时大量重复还必须做。而门禁系统或者中控考勤软件达不到自己的考勤表格要求。只有自己想办法。。
代码:
#导入包、模块 #读取 import xlrd #写入 import xlwt #格式化日期 from datetime import datetime attence,d=[],[] def dateTime(): #打开路径表格 workbook = xlrd.open_workbook(r'C:\Users\lengyazhou\Desktop\1.xls') #获取索引为0(第一个表格)的表格 rdsheet = workbook.sheet_by_index(0) #打印表格行数、列数 print(rdsheet.nrows,rdsheet.ncols) #获取每行的值 for i in range(rdsheet.nrows): #姓名(第i行,第2列的值) name=rdsheet.cell(i,2).value #编号 Num=rdsheet.cell(i,3).value #打卡时间 dktime =rdsheet.cell(i,4).value #格式化日期(2019-06-04 10:55:33形式的日期) if i!=0: dates=xlrd.xldate_as_tuple(dktime,0) #日期 date=datetime(*dates).strftime('%Y/%m/%d') #时间 time=datetime(*dates).strftime('%H:%M') else: date = "日期" time = "时间" #组合显示数据列表 lis=[Num,name,date,time] attence.append(lis) #筛选数据 def data(): for k,j in enumerate(attence): if k<2 : d.append(j) else : #判断或筛选同一天数据 if j[1]!=attence[k-1][1] : d.append(attence[k-1]) d.append(j) else: del j #最后一个数据 d.append(attence[-1]) #写入新表格 def wtExl(): #获取表格对象 wtbook=xlwt.Workbook() #增加表格名称为att,可以修改写入 wtsheet=wtbook.add_sheet("att",cell_overwrite_ok=True) #遍历写入数据 for l in range(len(d)): if 0<l<len(d)-1: if l%2==1: #遍历表格行数 for m in range(len(d)): #遍历表格列数 for n in range(len(d[0])): #写入m行 ,n列 ,数据为d[][]的值 wtsheet.write(m,n,d[m][n]) #保存路径文件名 wtbook.save("F:\\att\\att1.xls") #运行 dateTime() data() wtExl()
处理前部分表格(日期时间不分开,且重复无用数据):
处理后部分表格(日期,时间分开,保留第一次,最后一次记录):