文章的开始我们先研究一下WPS的表格合并,这是一个收费功能。

可以看到,他按照相同的列名,将表格按行合并。
Pandas作为一个强大的数据分析工具,此功能轻而易举。那么我们就来实现一个将某个文件夹下所有Excel文件合并的程序,包括子文件夹、 包括单文件的多Sheet。
首先,我们先看下此次模拟数据,我们C盘下有个文件夹叫demo,其下有两个文件和一个文件夹。

其中,测试数据1文件中有两个Sheet有示例数据,其他所有文件均只有一个Sheet有数据。

demo1下也有两个文件,他们只有Sheet1有数据且和上述图中示例数据相同。

这样合并结果应是示例数据重复5次(4个文件的Sheet1数据+测试数据1的Sheet2数据)。
1. 安装依赖
# 必选依赖pip install pandas# 操作Excel时,必选依赖pip install "pandas[excel]"
2. 读取文件夹下所有Excel文件的路径
import osroot_dir = r"C:\demo"def get_file_paths(root_dir): file_paths = [] for root, dirs, files in os.walk(root_dir): for file in files: if ("xls" in file) or ("xlsx" in file): file_path = os.path.join(root, file) file_paths.append(file_path) return file_paths# ['C:\\demo\\测试数据1.xlsx',# 'C:\\demo\\测试数据2.xlsx',# 'C:\\demo\\demo1\\测试数据3.xlsx',# 'C:\\demo\\demo1\\测试数据4.xlsx']print(get_file_paths(root_dir))
3. 遍历所有文件,遍历Sheet,读出内容并合并
df = pd.DataFrame()for file_path in get_file_paths(root_dir): excel_file = pd.ExcelFile(file_path) for sheet_name in excel_file.sheet_names: df_temp = pd.read_excel(file_path, sheet_name=sheet_name) df = pd.concat([df, df_temp])df.to_excel(r"C:\demo\合并结果.xlsx")
打开合并结果文件可以看到,非常简洁的几行代码,就完成了多层次,多Sheet的表格合并功能!

4. 总结
Pandas库是Python最强的数据分析库之一,使用它可以很方便汇总和统计数据,提高工作效率。在日常工作中,您有什么繁琐的Excel操作需求呢?欢迎交流!