0
点赞
收藏
分享

微信扫一扫

python批量合并excel文件,后缀名为xls

E_topia 2022-05-04 阅读 79
python

最近处理的一个项目需要用到批量合并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文件合并

举报

相关推荐

0 条评论