将多目录下的多份.xls文件合并为单份.xls文件并以文件名命名工作表
合并指定目录下多份XLS文件为单文件(按文件名作为工作表名)
我帮你整理了一个实用的Python脚本,完美解决你合并XLS文件的需求——每个源文件对应一个工作表,用原文件名做表名,还能完整保留所有无表头的单列数据:
准备工作
首先得安装必要的依赖库,打开命令提示符执行:
pip install pandas xlwt xlrd==1.2.0
注意:
xlrd需要指定1.2.0版本,因为2.0及以上版本不再支持读取.xls格式文件;xlwt负责生成最终的.xls输出文件。
完整代码实现
import os import pandas as pd def merge_xls_files(target_dir, output_file="merged_result.xls"): # 初始化Excel写入器,指定用xlwt引擎生成xls格式 writer = pd.ExcelWriter(output_file, engine='xlwt') # 遍历目标目录下的所有文件 for filename in os.listdir(target_dir): # 只处理后缀为.xls的文件(忽略大小写) if filename.lower().endswith(".xls"): file_full_path = os.path.join(target_dir, filename) # 读取文件:因为源文件无表头,设置header=None df = pd.read_excel(file_full_path, header=None) # 提取工作表名称:去掉文件名的.xls后缀 sheet_name = os.path.splitext(filename)[0] # 将数据写入对应工作表:不保留索引、不添加表头 df.to_excel(writer, sheet_name=sheet_name, index=False, header=False) # 保存并关闭写入器,完成合并 writer.save() print(f"合并任务完成!结果已保存到:{os.path.abspath(output_file)}") # ------------------- 使用示例 ------------------- # 替换成你要处理的目标目录路径,比如Windows下的"C:/test/xls_files",Mac/Linux下的"/home/user/xls_files" target_directory = "你的目标目录绝对路径" merge_xls_files(target_directory)
使用说明
- 把代码里的
target_directory替换成你实际要处理的文件夹路径,注意路径格式(Windows用反斜杠或者双反斜杠,Mac/Linux用正斜杠) - 运行脚本后,会在当前目录生成名为
merged_result.xls的文件,你也可以在调用merge_xls_files时自定义输出文件名,比如merge_xls_files(target_directory, "我的合并结果.xls") - 脚本会自动跳过目录下非
.xls的文件,只处理符合要求的文件
内容的提问来源于stack exchange,提问作者MEd
相关产品推荐
相关产品推荐

