当excel中有多个sheet都需要合并时,按照sheet名称,分别合并文件夹中所有excel,并将合并后的文件存放在待合并文件夹的上级目录中。
参考文档:pandas合并excel文件 V1.0 (合并excel中的某一个sheet表)
import os
import pandas as pd
# 美团优选
dir = r'D:\hebing' # 设置文件夹的路径,方便后面遍历文件夹内的所有表格
DFs = []
# 将第一个excel的所有sheet名称保存下来,便于分别汇总后保存
for root, dirs, files in os.walk(dir):
for file in files:
file_path = os.path.join(root, file)
# 将第一个excel的sheet名称保存下来,便于汇总后命名
if file == files[0]:
sheetnames = pd.read_excel(file_path, sheet_name=None).keys()
#按照不同的sheet名称,逐一合并每个sheet,并保存
for this_sheetname in sheetnames:
for root2, dirs2, file2s in os.walk(dir):
for file2 in file2s:
file_path2 = os.path.join(root2, file2)
df = pd.read_excel(file_path2, sheet_name=this_sheetname, header=0)
DFs.append(df)
alldata = pd.concat(DFs)
#默认将合并后的文件,存放在上级目录中,并用sheet名命名文件。
pathssss = os.path.join(os.path.dirname(dir), this_sheetname + '.xlsx')
alldata.to_excel(pathssss, sheet_name=this_sheetname, index=False, engine='openpyxl') # index:表示是否写行索引,默认为True
#保存一个合并好的文件后,将DFs[]清空
DFs = []