import os,xlwt
import pandas as pd
import selectUsecols as su
import mergeExcel as me
import mergeEXCEL1 as mee
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet',cell_overwrite_ok=True)
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = '宋体'
worksheet.write(0,0,'工作序列',style)
worksheet.write(0,1,'参与人姓名',style)
workbook1 = xlwt.Workbook(encoding = 'ascii')
worksheet1 = workbook1.add_sheet('My Worksheet',cell_overwrite_ok=True)
style1 = xlwt.XFStyle() # 初始化样式
font1 = xlwt.Font() # 为样式创建字体
font1.name = '宋体'
worksheet1.write(0,0,'日期',style)
worksheet1.write(0,1,'每天工时',style)
file_name=r'C:\Users\caoming\Desktop\20200914数据处理'
excel_name='test1.xls'
excel_name1='test2.xls'
test1=os.path.join(file_name,excel_name)
test2=os.path.join(file_name,excel_name1)
data1=pd.read_excel(test1)
data2=pd.read_excel(test2)
canyuren=su.hee(test1,[1])
os.makedirs(file_name + '\\nameFenBiao')#创建文件夹
os.makedirs(file_name + '\\zhongjian')#创建文件夹
os.makedirs(file_name + '\\last')#创建文件夹
for name in canyuren:
name_list1=data1[data1['参与人姓名']==name]#将表1中的内容按照姓名分表取出df
name_list2=data2[data2['参与人姓名']==name]#将表2中的内容按照姓名分表取出df
write1=pd.ExcelWriter(file_name+'\\'+name+'1'+'.xls')
write2 = pd.ExcelWriter(file_name+'\\'+name+'2'+'.xls')
name_list1.to_excel(write1,index=False)
name_list2.to_excel(write2, index=False)
write1.save()#按照名字分表
write1.close()
write2.save()#按照名字分表
write2.close()
yuefen=su.hee(write1,[3])
dada1 = pd.read_excel(write1)
dada2 = pd.read_excel(write2)
os.makedirs(file_name + '\\nameFenBiao\\'+ name)#创建文件夹
os.makedirs(file_name + '\\zhongjian\\' + name)#创建文件夹
for yue in yuefen:
yuefen_list1 = dada1[dada1['月份'] == yue]
yuefen_list2 = dada2[dada2['年月'] == yue]
write3 = pd.ExcelWriter(file_name + '\\' +name+ yue + '1' + '.xls')
write4 = pd.ExcelWriter(file_name + '\\' + name+ yue + '2' + '.xls')
yuefen_list1.to_excel(write3, index=False)
yuefen_list2.to_excel(write4, index=False)
write3.save()#按照月份分表
write3.close()
write4.save()#按照月份分表
write4.close()
os.makedirs(file_name + '\\nameFenBiao\\'+ name+'\\'+ yue)#创建文件夹
bbb1=yuefen_list1.values.tolist()
bbb2=yuefen_list2.values.tolist()
n=len(bbb1)
n1=len(bbb2)
for i in range(n):
renri=bbb1[i][2]
for tian in range(renri):
worksheet.write(tian+1, 0, bbb1[i][0], style)
worksheet.write(tian+1, 1, bbb1[i][1], style)
workbook.save(file_name + '\\nameFenBiao\\'+ name+'\\'+ yue +'\\'+ str(i) + '.xls')
me.hlo(file_name + '\\nameFenBiao\\' + name + '\\' + yue,
file_name + '\\nameFenBiao\\' + name + '\\' + yue + '\\' + '合成' + '.xls')
os.remove(file_name + '\\nameFenBiao\\' + name + '\\' + yue + '\\' + str(i) + '.xls')
for tian1 in range(renri):
worksheet.write(tian1+1, 0, None)
worksheet.write(tian1+1, 1, None)
# worksheet.write(tian+1, 2, bbb2[tian][1])合成
# worksheet.write(tian+1, 3, bbb2[tian][2])
for nn in range(n1):
worksheet1.write(nn+1, 0, bbb2[nn][1], style)
worksheet1.write(nn+1, 1, bbb2[nn][2], style)
workbook1.save(file_name + '\\nameFenBiao\\'+ name+'\\'+ yue +'\\' + '合成1' + '.xls')
for nn in range(n1):
worksheet1.write(nn+1, 0, None)
worksheet1.write(nn+1, 1, None)
mee.hlo(file_name + '\\nameFenBiao\\' + name + '\\' + yue ,file_name + '\\zhongjian\\'+ name+ '\\' + yue + '合成2' + '.xls')
me.hlo(file_name + '\\' +'zhongjian'+ '\\'+ name,file_name+ '\\'+'last'+'\\' + name+ '.xls')
os.remove(write3)
os.remove(write4)
os.remove(write1)
os.remove(write2)
此代码用到的函数如下:
(1)selectUsecols,去重
import pandas as pd
def hee(path,b:[int]):
wb=pd.read_excel(path,usecols=b)
wbb=wb.values.tolist()
result=[]
for bbb in wbb:
result.append(bbb[0])
# print(set(result))
# bbb=pd.unique(result)
bbb=list(set(result))
return bbb
(2)mergeExcel 纵向合成excel
import os
import pandas as pd
import numpy as np
def hlo(path,path1):
dir = path#设置工作路径
#新建列表,存放文件名(可以忽略,但是为了做的过程能心里有数,先放上)
filename_excel = []
#新建列表,存放每个文件数据框(每一个excel读取后存放在数据框)
frames = []
for root, dirs, files in os.walk(dir):#os.walk(dir)在目录树中游走输出在目录中的文件名,, 返回的是一个三元组(root,dirs,files)
# root所指的是当前正在遍历的这个文件夹的本身的地址
# dirs是一个list ,内容是该文件夹中所有的目录的名字(不包括子目录)
# files同样是list, 内容是该文件夹中所有的文件(不包括子目录)
for file in files:
#print(os.path.join(root,file))
filename_excel.append(os.path.join(root,file))#os.path.join连接括号内的两个路径
df = pd.read_excel(os.path.join(root,file)) #excel转换成DataFrame
frames.append(df)
#合并所有数据
result = pd.concat(frames,axis=0)
#查看合并后的数据
bb=result.head()
cc=result.shape
result.to_excel(path1,index = False)#保存合并的数据到电脑D盘的merge文件夹中,并把合并后的文件命名为a12.csv
(3)mergeEXCEL1 横向合成excel
import os
import pandas as pd
import numpy as np
def hlo(path,path1):
dir = path#设置工作路径
#新建列表,存放文件名(可以忽略,但是为了做的过程能心里有数,先放上)
filename_excel = []
#新建列表,存放每个文件数据框(每一个excel读取后存放在数据框)
frames = []
for root, dirs, files in os.walk(dir):#os.walk(dir)在目录树中游走输出在目录中的文件名,, 返回的是一个三元组(root,dirs,files)
# root所指的是当前正在遍历的这个文件夹的本身的地址
# dirs是一个list ,内容是该文件夹中所有的目录的名字(不包括子目录)
# files同样是list, 内容是该文件夹中所有的文件(不包括子目录)
for file in files:
#print(os.path.join(root,file))
filename_excel.append(os.path.join(root,file))#os.path.join连接括号内的两个路径
df = pd.read_excel(os.path.join(root,file)) #excel转换成DataFrame
frames.append(df)
#合并所有数据
result = pd.concat(frames,axis=1)
#查看合并后的数据
bb=result.head()
cc=result.shape
result.to_excel(path1,index = False)#保存合并的数据到电脑D盘的merge文件夹中,并把合并后的文件命名为a12.csv