我是靠谱客的博主 干净小馒头,最近开发中收集的这篇文章主要介绍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名所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复