由于工作需要整理每周项目成员得周报,需要将很多人得excel合并到同一个文件里面。且项目成员过多,手动打开每一个文件去复制内容,就是一个大量重复性工作,且对于自己得提升毫无用处。于是产生了用代码实现excel合并得想法。
			初学python,代码还不够完善,如果大家看到,请指出不足之处,谢谢!

import os,pandas as pd,re #1.获取文件夹下要合并的文件名 dirpath = '文件夹地址' #工作表3特殊处理 需要开始下标和结束下标 begin = 231 end = 238 excel_names = os.listdir(dirpath) #2.获取文件内容 sheet_1_merge = [] sheet_2_merge = [] sheet_3_merge = pd.DataFrame([0,0,0,0,0,0,0]) for excel_name in excel_names: #绝对路径 excel_path = dirpath+excel_name #dropna(axis=0, how='all')行全部为空得删除 #获取工作表1内容 sheet_1=pd.read_excel(excel_path, sheet_name=1, header=None)[2:][range(9)].dropna(axis=0, how='all') sheet_1_merge.append(sheet_1) # 获取工作表2内容 sheet_2=pd.read_excel(excel_path, sheet_name=2, header=None)[2:][range(1,7)].dropna(axis=0, how='all') sheet_2_merge.append(sheet_2) # 获取工作表3内容 sheet_3 = list(pd.read_excel(excel_path,sheet_name=3,header=None)[begin:end][1]) excel_name = re.findall('\d-(.*).xlsx', excel_name)[0] sheet_3_merge.insert(1,excel_name,sheet_3) print(sheet_1,'\n',sheet_2,'\n',sheet_3) #保存合并内容 #axis=0,ignore_index=True合并行 忽略原来的下标 sheet_1_merge = pd.DataFrame(pd.concat(sheet_1_merge,axis=0,ignore_index=True)) sheet_2_merge = pd.DataFrame(pd.concat(sheet_2_merge,axis=0,ignore_index=True)) #columns主要是为了按照已有得排序,方便整理 sheet_3_merge = pd.DataFrame(sheet_3_merge,columns=['李1','李2,'李3','彭4','杨5','夏6',...,'杜34','叶35']) writer = pd.ExcelWriter('C:/Users/zhuozhe/Desktop/merge.xlsx') sheet_1_merge.to_excel(excel_writer=writer,sheet_name='merge_1') sheet_2_merge.to_excel(excel_writer=writer,sheet_name='merge_2') sheet_3_merge.to_excel(excel_writer=writer,sheet_name='merge_3') writer.save() writer.close()


合并文件包含三个工作表:完成任务,下周计划,本周工时(包含了全年的数据,所以需要抽取)。

合并后得文件,如图: