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

Python高效合并Excel多Sheet工作表,告别繁琐手动操作

Python高效合并Excel多Sheet工作表,告别繁琐手动操作

在日常办公中,我们经常会遇到一个Excel文件里包含多个工作表的情况,比如按日期、按部门分类的数据。如果要对这些数据进行汇总分析,手动复制粘贴不仅耗时,还容易出现疏漏。
在这里插入图片描述

今天就给大家分享一个实用的Python代码,能一键合并Excel中的所有工作表,让数据处理效率大幅提升。

完整代码

以下是实现该功能的完整代码,大家可以直接复制使用:

import pandas as pd
import osdef merge_excel_sheets(excel_file_path, output_file_path=None):"""读取 Excel 文件中的所有 sheet 页数据并汇总到一个 DataFrame 中参数:excel_file_path: Excel 文件路径output_file_path: 输出的 Excel 文件路径,默认为 None (不输出到文件)返回:汇总后的 DataFrame"""# 读取 Excel 文件中的所有 sheetxls = pd.ExcelFile(excel_file_path)sheet_names = xls.sheet_names# 创建一个空的 DataFrame 列表,用于存储每个 sheet 的数据dfs = []# 遍历每个 sheetfor sheet_name in sheet_names:# 读取当前 sheet 的数据df = pd.read_excel(excel_file_path, sheet_name=sheet_name)# 添加一列标识数据来源的 sheet 名称df['Sheet_Name'] = sheet_name# 将当前 sheet 的 DataFrame 添加到列表中dfs.append(df)# 将所有 DataFrame 合并成一个merged_df = pd.concat(dfs, ignore_index=True)# 如果指定了输出路径,则保存到文件if output_file_path:merged_df.to_excel(output_file_path, index=False)print(f"已将汇总数据保存到: {output_file_path}")return merged_df# 使用示例
if __name__ == "__main__":# 替换为你的 Excel 文件路径input_file = "范例1.xlsx"output_file = "merged_data.xlsx"# 确保输入文件存在if os.path.exists(input_file):# 汇总数据并保存到新文件result_df = merge_excel_sheets(input_file, output_file)# 打印汇总结果的前几行print("汇总数据预览:")print(result_df.head())# 打印每个 sheet 的行数统计print("\n各 Sheet 数据行数:")sheet_counts = result_df['Sheet_Name'].value_counts()for sheet, count in sheet_counts.items():print(f"{sheet}: {count} 行")print(f"\n总计: {len(result_df)} 行数据")else:print(f"文件不存在: {input_file}")

代码解析

1. 依赖库导入

代码开头导入了两个必要的库:

  • pandas:强大的数据处理库,用于读取Excel文件和处理数据
  • os:用于进行文件路径相关的操作,这里主要用来检查输入文件是否存在

2. 核心函数:merge_excel_sheets

这是实现数据合并的核心函数,我们来逐步解析其工作流程:

步骤1:获取所有工作表名称xls = pd.ExcelFile(excel_file_path)

sheet_names = xls.sheet_names通过pd.ExcelFile方法读取Excel文件,再通过sheet_names属性获取该文件中所有工作表的名称,为后续遍历做准备。

步骤2:遍历处理每个工作表for sheet_name in sheet_names:
    df = pd.read_excel(excel_file_path, sheet_name=sheet_name)df['Sheet_Name'] = sheet_namedfs.append(df)- 循环遍历每个工作表名称,使用`pd.read_excel`读取对应工作表的数据,得到一个DataFrame
  • 为当前DataFrame添加一个Sheet_Name列,记录该数据来自哪个工作表,方便后续溯源
  • 将处理好的DataFrame添加到列表dfs中暂存
步骤3:合并所有数据
merged_df = pd.concat(dfs, ignore_index=True)
使用`pd.concat`方法将列表中所有的DataFrame合并成一个,`ignore_index=True`表示合并后重新生成索引,避免索引重复。
步骤4:保存合并结果(可选)if output_file_path:
    merged_df.to_excel(output_file_path, index=False)print(f"已将汇总数据保存到: {output_file_path}")如果指定了输出文件路径,就将合并后的DataFrame保存为Excel文件,`index=False`表示不保存索引列。

3. 使用示例

代码最后部分是使用示例,主要做了这些事:

  • 定义输入文件和输出文件的路径
  • 检查输入文件是否存在,避免报错
  • 调用合并函数进行数据处理
  • 输出合并结果的预览、各工作表数据行数统计和总数据量

如何使用该代码

  1. 安装依赖库:首先确保安装了pandas库,如果没有安装,可运行以下命令:

    pip install pandas openpyxl
    

    openpyxl是pandas处理xlsx格式文件所需的依赖)

  2. 准备Excel文件:将需要合并的Excel文件准备好,记住其路径。

  3. 修改文件路径:在代码的if __name__ == "__main__":部分,将input_fileoutput_file替换为实际的文件路径,例如:

    input_file = "C:/data/各部门数据.xlsx"
    output_file = "C:/data/全公司数据汇总.xlsx"
    
  4. 运行代码:执行Python脚本,等待程序运行完成。运行成功后,会在控制台输出汇总数据预览和统计信息,同时在指定路径生成合并后的Excel文件。

有了这个代码,再也不用手动一个个复制粘贴工作表数据了,尤其适合需要经常处理多工作表Excel文件的办公人士。如果在使用过程中遇到问题,欢迎在评论区留言交流~

http://www.dtcms.com/a/403094.html

相关文章:

  • 自动跳转到wap网站外贸网站建设制作设计案例
  • 【Linux】 服务器无 sz 命令时的文件传输和日志查看方案
  • 【TVM 教程】设置 RPC 系统
  • 在ssh远程连接的autodl服务器(中国无root权限服务器)上使用copilt的Claude模型
  • Ansible 自动化运维:集中化管理服务器实战指南
  • 自动化运维工具 Ansible 集中化管理服务器
  • 【好玩的开源项目】使用Docker部署LMS轻量级音乐服务器
  • Netty从0到1系列之RPC通信
  • Coze源码分析-资源库-创建数据库-后端源码-安全与错误处理
  • LeetCode:52.腐烂的橘子
  • LeetCode算法日记 - Day 52: 求根节点到叶节点数字之和、二叉树剪枝
  • 四种方法解决——力扣189.轮转数组
  • ⸢ 伍-Ⅱ⸥ ⤳ 默认安全治理实践:水平越权检测 前端安全防控
  • 力扣856
  • Leetcode94.二叉数的中序遍历练习
  • 多种解法全解析——力扣217. 存在重复元素
  • 用python做的网站多吗二手书交易网站策划书
  • phpcms网站源码ui培训班多少钱
  • Android Studio 导入 opencv
  • 在线网站做成appdede网站地图样式修改
  • 全新尚界H5凭借HUAWEI XMC数字底盘引擎技术,让湿滑路面也“稳”操胜券
  • iOS 26 性能测试实战,如何评估启动速度、CPUGPU 负载、帧率与系统资源适配(uni-app 与 iOS 原生应用性能方案)
  • 腾讯会议→微课操作
  • html原生表格,实现左侧列固定
  • Idea提高开发效率的快捷键最佳学习方式
  • 做网站一定需要icp么中国建设协会官网
  • Selenium使用教程
  • 多线程——单例模式
  • 镜头调焦的 调整的是焦距还是像距?
  • (四)React+.Net+Typescript全栈(错误处理)