最近处理的一个项目需要用到批量合并excel表格,我就用python拼了一个代码,可以实现传入一个根目录,然后将该目录下所有的后缀名为xls的excel表格进行合并,将结果输出在根目录下
第三方库配置
pip install xlwd
pip install pandas
思路:
首先根据提供的根目录获取到当前目录下的所有文件夹
然后挨个文件夹查找后缀名为xls的的文件
之后遍历读入这些文件,再用pandas做一个拼接
思路捋清了之后,代码实现的部分并不难,我就之间上代码了,里面也有注释,容易理解
import xlrd
import pandas as pd
import os
# 获取根目录下所有的文件夹,并返回
def get_Dirs(base_path):
paths = []
for root,dirs,filenames in os.walk(base_path):
paths.append(r"{}".format(root))
return paths
# 找到所有文件后缀名为xls的,组合成文件路径,存放在列表里返回
def get_all_file(base_path):
# lt = []
box = []
for p in get_Dirs(base_path):
for f in os.listdir(p):
if f.endswith('.xls'):
# print(f)
filepath = os.path.join(p,f)
box.append(r'{}'.format(filepath))
# print(box)
# lt.append(box)
return box
# 将每个文件的数据进行读入,汇总,最后输出
def save(base_path):
new_list = []
sheet_num = 0
file_list = get_all_file(base_path)
# 遍历每一个文件,进行数据读入
for file in file_list:
wb = xlrd.open_workbook(file)
sheet_names = wb.sheet_names()
sheet_num += len(sheet_names) #计算合并的表格的总数
for sn in sheet_names:
dataframe = pd.read_excel(file, sheet_name=sn, header=0)
new_list.append(dataframe)
# 拼接
df = pd.concat(new_list)
df.to_excel(base_path + '\\' + '合并文件.xlsx',index=False)
print("数据汇总表已生成!")
if __name__ == '__main__':
base_path = 'D:\\test'
save(base_path)
效果展示视频
python实现批量excel文件合并