如何用Pandas将指定Excel文件合并为多工作表文件?
批量合并Excel文件为多工作表文件的实现方案
前置准备
首先安装所需的Python库:
pip install openpyxl
完整代码实现
import openpyxl import os # 配置参数 source_dir = "./" # 替换为你的Excel文件所在目录 output_filename = "合并结果.xlsx" # 初始化目标工作簿 target_workbook = openpyxl.Workbook() target_workbook.remove(target_workbook.active) # 删除默认创建的空白工作表 # 遍历目标文件并合并 for num in range(1, 11): if num == 5: continue # 跳过5_mock文件 file_name = f"{num}_mock.xlsx" file_path = os.path.join(source_dir, file_name) if not os.path.exists(file_path): print(f"跳过不存在的文件:{file_name}") continue # 加载源文件 source_workbook = openpyxl.load_workbook(file_path) source_sheet = source_workbook.active # 在目标工作簿中创建新工作表,以文件名命名 new_sheet = target_workbook.create_sheet(title=file_name.replace(".xlsx", "")) # 复制单元格内容与格式(如需仅复制内容,可简化下方代码) for row in source_sheet.iter_rows(values_only=False): for cell in row: # 复制单元格值 new_sheet[cell.coordinate].value = cell.value # 复制格式(字体、填充、边框、对齐方式) new_sheet[cell.coordinate].font = openpyxl.styles.Font(**{k: v for k, v in vars(cell.font).items() if not k.startswith('_')}) new_sheet[cell.coordinate].fill = cell.fill.copy() new_sheet[cell.coordinate].border = cell.border.copy() new_sheet[cell.coordinate].alignment = cell.alignment.copy() print(f"已完成文件合并:{file_name}") # 保存最终结果 target_workbook.save(output_filename) print(f"合并完成,结果已保存至:{output_filename}")
代码说明
- 路径配置:将
source_dir替换为你的Excel文件实际存放路径 - 跳过指定文件:通过
if num ==5: continue实现跳过5_mock.xlsx - 工作表命名:新工作表以原文件名(去掉后缀)命名,便于区分
- 格式保留:代码中保留了原单元格的格式(字体、填充等),如果不需要格式,可将复制部分替换为以下简化版本,提升运行速度:
for row in source_sheet.iter_rows(values_only=True): new_sheet.append(row) - 异常处理:代码中加入了文件存在性检查,避免因文件缺失导致报错
内容的提问来源于stack exchange,提问作者Megan
相关产品推荐
相关产品推荐

