有以下,文件夹中的文件,共29个。
各个excel有多个sheet文件,不同excel文件当中同一个sheet文件的数据结构是相同的,如下:
现在需要将多个excel中的相同命名的sheet合并到同一个sheet当中,组合成一个excel文件。具体代码如下:
import os
import os.path
import pandas as pd
import collections
#使用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合并在了一起。