批量为指定文件夹内所有.xlsx文件添加M1、M2、M3工作表
批量处理Excel文件添加工作表解决方案
要实现批量遍历指定文件夹的.xlsx文件并添加工作表,你可以借助glob模块快速匹配目标文件,再将单文件操作封装为循环执行的逻辑,以下是完整实现代码:
from openpyxl import load_workbook from glob import glob import os def add_sheets_to_excel(file_path, save_to_original=True): try: # 加载Excel工作簿 wb = load_workbook(file_path) # 定义要添加的工作表名称 sheet_names = ['M1', 'M2', 'M3'] # 先检查工作表是否已存在,避免重复创建报错 existing_sheets = wb.sheetnames for sheet_name in sheet_names: if sheet_name not in existing_sheets: wb.create_sheet(sheet_name) # 选择保存方式:覆盖原文件或保存为新文件 if save_to_original: wb.save(file_path) print(f"已处理并覆盖原文件:{file_path}") else: # 生成新文件名,在原文件名后加"_modified" dir_name, file_name = os.path.split(file_path) name, ext = os.path.splitext(file_name) new_file_path = os.path.join(dir_name, f"{name}_modified{ext}") wb.save(new_file_path) print(f"已处理并保存为新文件:{new_file_path}") except Exception as e: print(f"处理文件{file_path}时出错:{str(e)}") # 指定目标文件夹路径 target_folder = r'C:\Users\alex\mob' # 匹配文件夹下所有.xlsx文件 excel_files = glob(os.path.join(target_folder, '*.xlsx')) # 批量处理每个文件 for file in excel_files: add_sheets_to_excel(file, save_to_original=True) # 设为False则保存为新文件
关键说明:
- 用
glob模块的*.xlsx匹配规则,快速筛选目标文件夹下的所有Excel文件 - 增加了工作表存在检查,避免重复创建同名工作表导致报错
- 通过
save_to_original参数控制保存方式:True覆盖原文件,False生成带_modified后缀的新文件 - 加入异常处理,单个文件处理失败不会中断整个批量任务,同时输出错误信息
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

