python——合并同一个文件夹下所有excel文件

有以下,文件夹中的文件,共29个。

python——合并同一个文件夹下所有excel文件_第1张图片

 各个excel有多个sheet文件,不同excel文件当中同一个sheet文件的数据结构是相同的,如下:

python——合并同一个文件夹下所有excel文件_第2张图片 

现在需要将多个excel中的相同命名的sheet合并到同一个sheet当中,组合成一个excel文件。具体代码如下:

#使用os模块walk函数,搜索出某目录下的全部excel文件
def getFileName(filepath):
    file_list = []
    for root,dirs,files in os.walk(filepath):
        for filespath in files:
            print(os.path.join(root,filespath))
            file_list.append(os.path.join(root,filespath))
    return file_list

#合并excel
def MergeExcel(filepath,outfile):
    file_list=getFileName(filepath)
    result=collections.defaultdict(pd.DataFrame)
    #合并多个excel文件
    for each in file_list:
        #读取xlsx格式文件
        data=pd.read_excel(each,sheet_name=None,header=1)  #header:控制标题行在第几行,
                                                           #sheet_name=None使得返回一个类似字典的东西,key为sheetname,values为sheet中的数据
        for key in data:
            data_=data[key]
            result[key]=result[key].append(data_[data_['合同号'].notnull()]) #合同号是必须填项,去除合同号为空的记录
    #将合并的数据填写到新的excel文件当中
    writer = pd.ExcelWriter(filepath+outfile, 
                            #engine='xlsxwriter', options={'strings_to_urls': False}
                           )
    for i,j in result.items():
         j.to_excel(writer,i, index=False)
    writer.close()

#调取方法,合并数据
filepath='D:/dataset/chen/'
outfile2 = 'result.xlsx'
MergeExcel(filepath, outfile2)

合并之后的excel文件格式如下,命名相同的sheet合并在了一起。

python——合并同一个文件夹下所有excel文件_第3张图片

你可能感兴趣的:(pandas,pyhton,excel操作)