因爲工做須要整理每週項目成員得週報,須要將不少人得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)python
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()app
合併文件包含三個工做表:完成任務,下週計劃,本週工時(包含了整年的數據,因此須要抽取)。ide
合併後得文件,如圖:excel