当前位置: 首页 > news >正文

【脚本系列】如何使用 Python 脚本对同一文件夹中表头相同的 Excel 文件进行合并

目录

  • 🧰 准备工作
    • 🐍 安装所需环境
  • 📁 脚本说明
    • 一、核心 Python 脚本:`merge_excel.py`
      • ✅ 脚本代码:
  • ⚠️ 使用说明 & 注意事项
  • 💡 配套 shell 脚本:`merge_excel.zsh`
    • 步骤:
  • ✅ 效果演示
  • 📌 小结


在日常工作或数据处理场景中,我们经常会遇到这样一种需求:将一个文件夹中多个结构一致(表头相同)的 Excel 文件合并成一个总表,以便于后续的数据分析或汇总处理。

本篇文章将手把手带你使用 Python 实现这一任务。你将学会以下内容:

  • 扫描指定目录下所有合法 Excel 文件
  • 读取多个 Excel 文件为 DataFrame
  • 合并成一个总表并保存
  • 配套 shell 脚本实现一键执行

🧰 准备工作

🐍 安装所需环境

使用 pandasopenpyxl,如果你尚未安装,请先运行以下命令:

pip install pandas openpyxl xlrd

📁 脚本说明

一、核心 Python 脚本:merge_excel.py

这是我们本次任务的核心脚本,功能是:

从指定文件夹中读取所有 .xlsx.xls 文件(排除临时文件),合并后保存为 merged_result.xlsx

✅ 脚本代码:

import pandas as pd
import os
import warnings# 忽略一些可能出现但不影响程序运行的警告
warnings.simplefilter("ignore", UserWarning)# 设置需要合并的 Excel 文件所在的文件夹路径
folder_path = '/你的文件夹路径/'# 筛选 Excel 文件,排除以 ~ 或 .~ 开头的临时文件
excel_files = [f for f in os.listdir(folder_path)if f.endswith(('.xlsx', '.xls')) and not f.startswith('~') and not f.startswith('.~')]if not excel_files:print("❌ 没有找到有效的 Excel 文件")input("按回车键退出...")exit()data_frames = []for file in excel_files:file_path = os.path.join(folder_path, file)try:if file.endswith('.xlsx'):df = pd.read_excel(file_path, engine='openpyxl')elif file.endswith('.xls'):df = pd.read_excel(file_path, engine='xlrd')else:print(f"⚠️ 跳过不支持的文件:{file}")continuedata_frames.append(df)print(f"✅ 读取成功:{file}")except Exception as e:print(f"❌ 读取失败:{file},错误:{e}")# 合并所有 DataFrame 并输出
if data_frames:combined_df = pd.concat(data_frames, ignore_index=True)output_path = os.path.join(folder_path, 'merged_result.xlsx')combined_df.to_excel(output_path, index=False)print("\n✅ 合并完成,文件保存在:", output_path)
else:print("\n❗未成功读取任何表格")input("\n按回车键退出...")

⚠️ 使用说明 & 注意事项

  • 所有文件 必须有相同的表头结构(字段顺序和名称)。
  • 支持 .xlsx.xls 两种常见 Excel 格式。
  • 会自动忽略临时文件(如以 ~.~ 开头的缓存文件)。
  • 合并后结果保存在当前目录下的 merged_result.xlsx 文件中。

💡 配套 shell 脚本:merge_excel.zsh

为了简化执行过程,我们可以添加一个 shell 脚本,做到 双击或一键执行合并任务

#!/bin/zsh# 自动跳转到当前脚本所在目录
cd "$(dirname "$0")"# 执行 Python 脚本
python3 merge_excel.py

步骤:

  1. merge_excel.pymerge_excel.zsh 放在同一目录下。

  2. 终端执行一次:

    chmod +x merge_excel.zsh
    
  3. 之后双击或运行:

    ./merge_excel.zsh
    

✅ 效果演示

在你运行脚本后,控制台会逐个显示哪些文件读取成功,哪些文件出现问题,并最终提示:

✅ 合并完成,文件保存在:/xxx/merged_result.xlsx按回车键退出...

你可以直接打开该文件进行数据核查或分析。


📌 小结

通过这篇教程,我们实现了一个 可复用、可扩展 的 Excel 合并脚本,并学会了:

  • 如何读取多个 Excel 文件
  • 如何处理不同扩展名和引擎
  • 如何过滤临时文件
  • 如何生成合并结果文件
  • 如何用 shell 脚本简化执行
http://www.lryc.cn/news/587567.html

相关文章:

  • uniapp video视频全屏播放后退出,页面字体变大,样式混乱问题
  • 基于Spring Boot的生活用品电商网站的设计与实现
  • 国内隧道IP代理技术解析:原理、优势与实战应用
  • 算法学习笔记:21.动态规划——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • linux 文件搜索与文件内容查看
  • Imx6ull用网线与电脑连接
  • 游戏玩法的专利博弈
  • 11、鸿蒙Harmony Next开发:列表布局 (List)
  • Spark 和 Hadoop MapReduce 的基本概念及区别
  • Spring Boot项目结构解析:构建高效、清晰的代码框架
  • UE5多人MOBA+GAS 22、创建技能图标UI,实现显示蓝耗,冷却,以及数字显示的倒数计时还有雷达显示的倒数计时
  • 【解决办法】越疆Dobot CR5 桌面客户端DobotStudio Pro连不上机器人
  • iOS高级开发工程师面试——Objective-C 语言特性
  • WPF的三轴机械手控件动画
  • MEMS IMU如何赋能无人机与机器人精准感知?
  • gitlab-ci.yml
  • 厘米级精准定位+低功耗通信,飞睿智能UWB技术赋能机器人高效作业
  • 触想CX-3588主板在安保巡检领域的落地实践:解锁机器人自主智能
  • LeetCode--45.跳跃游戏 II
  • MMKV 存储json list数据(kotlin)
  • 各种开发语言主要语法对比
  • 嵌入式硬件篇---单稳态多谐施密特电路
  • 第八章排序 选择题
  • Linux 基础操作:vim 编辑器、网络配置与远程登录全解析
  • 算法-线性枚举
  • 【算法】贪心算法:摆动序列C++
  • 解决Qt中“known incorrect sRGB profile“警告的Photoshop修改方法
  • 【记录】BLE|百度的旧蓝牙随身音箱手机能配对不能连接、电脑能连接不能使用的解决思路(Wireshark捕获并分析手机蓝牙报文)
  • 一文读懂循环神经网络(RNN)—语言模型+n元语法(1)
  • Knife4j快速入门