我是靠谱客的博主 干净小馒头,最近开发中收集的这篇文章主要介绍Python自动化:批量合并某个文件夹内子文件夹的所有Excel,并新增两列分别备注文件路径和子sheet名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

批量合并某个文件夹内子文件夹的所有Excel,并新增两列分别备注文件路径和子sheet名

使用tips:
1、修改文件目录成自己想合并的总文件夹路径;如运行时间太久,可能是文件太大或者太多的原因,可考虑精准缩小文件夹范围。
2、生成文件将放于当前设置的文件目录/文件夹下的根目录。

完整代码:

import pandas as pd
import openpyxl 

from openpyxl import load_workbook
from openpyxl import worksheet

# 设置文件目录
import os
os.chdir( "xxx/xxx/投资")


# 新建工作簿
workbook = openpyxl.Workbook()
sheet_total = workbook.active

# 获取文件目录下的所有文件名及对应文件路径
lst = []
for dirpath, dirnames, filenames in os.walk('.'):
    for filename in filenames:
        lst.append(os.path.join(dirpath, filename))
        print(os.path.join(dirpath, filename))
print(lst)  
 
# 遍历所有文件,读取并合并文件内的内容
for name in lst:
    if "._" not in name and ".xlsx" in name:
        
        # 打开工作簿
        wb = load_workbook(name)
        all_sheets = wb.get_sheet_names()  # 获取所有子表sheet名称列表
        
        # 遍历该工作簿内所有子表sheet
        for sheetname in all_sheets:
            print('遍历文件“%s”的子表“%s”:'%(name,sheetname))
            c1 = name 
            c2 = sheetname
            workbook_temp = wb   # 已打开的工作簿
            sheet = workbook_temp[sheetname]    # 获取表单
            
            # 将表单中的内容,拼接进开头新建的工作簿活动表中
            for row in sheet.iter_rows(min_row=1, min_col=1, max_col=sheet.max_column, max_row=sheet.max_row):
                row_data = [col.value for col in row]
                row_data.insert(0, c1)  # 新增一列:文件名及文件路径
                row_data.insert(0, c2)  # 新增一列:工作簿内的子表sheet名称
                sheet_total.append(row_data)
            # break  # 调试只处理一个
            
    else:
        pass

# 保存当前新建的工作簿
workbook.save('汇总.xlsx')

最后

以上就是干净小馒头为你收集整理的Python自动化:批量合并某个文件夹内子文件夹的所有Excel,并新增两列分别备注文件路径和子sheet名的全部内容,希望文章能够帮你解决Python自动化:批量合并某个文件夹内子文件夹的所有Excel,并新增两列分别备注文件路径和子sheet名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部