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')
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值