如何使用Python合并Excel文件中的多个Sheet

在日常工作中,我们经常会遇到需要处理多个Excel工作表(Sheet)的情况。比如,一个Excel文件中包含了一个月内每天的数据,每个工作表代表一天。有时候,为了方便分析,我们需要将这些分散的数据合并到一个工作表中。手动复制粘贴不仅效率低下,而且容易出错。这时,我们可以使用Python的pandas库和openpyxl库来自动化这个过程。
D:\spiderdocs\mergesheet.py

全部代码

import wx
from openpyxl import load_workbook, Workbook

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, title="Excel Sheet Merger")
        frame.Show()
        return True

class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MyFrame, self).__init__(parent, title=title, size=(300, 200))
        panel = wx.Panel(self)
        vbox = wx.BoxSizer(wx.VERTICAL)

        self.button = wx.Button(panel, label="Select Excel File")
        self.button.Bind(wx.EVT_BUTTON, self.on_open_file)

        vbox.Add(self.button, 0, wx.ALL | wx.CENTER, 5)
        panel.SetSizer(vbox)

    def on_open_file(self, event):
        with wx.FileDialog(self, "Open Excel file", wildcard="Excel files (*.xlsx)|*.xlsx",
                           style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
            if fileDialog.ShowModal() == wx.ID_CANCEL:
                return

            path = fileDialog.GetPath()
            self.merge_sheets(path)

    def merge_sheets(self, filepath):
        wb = load_workbook(filepath)
        new_wb = Workbook()
        new_ws = new_wb.active
        new_ws.title = "Merged Sheet"

        for i, sheet_name in enumerate(wb.sheetnames[:5]):
            ws = wb[sheet_name]
            for row in ws.iter_rows(values_only=True):
                new_ws.append(row)

        save_path = filepath.replace('.xlsx', '_merged.xlsx')
        new_wb.save(save_path)
        wx.MessageBox(f"Merged file saved as: {save_path}", "Info", wx.OK | wx.ICON_INFORMATION)

if __name__ == '__main__':
    app = MyApp()
    app.MainLoop()

环境准备

首先,确保你的环境中安装了pandasopenpyxl库。如果没有安装,可以通过以下命令安装:

pip install pandas openpyxl

代码分析

下面是一个简单的Python脚本,用于合并一个Excel文件中的前5个工作表:

import pandas as pd

def merge_sheets(file_path, output_file, num_sheets=5):
    # 加载Excel文件
    xls = pd.ExcelFile(file_path)
    
    # 创建一个空的DataFrame用于存储合并后的数据
    merged_df = pd.DataFrame()
    
    # 循环读取前num_sheets个工作表
    for sheet_name in xls.sheet_names[:num_sheets]:
        # 读取每个工作表的数据
        df = pd.read_excel(xls, sheet_name=sheet_name)
        # 将读取的数据追加到merged_df中
        merged_df = pd.concat([merged_df, df], ignore_index=True)
    
    # 将合并后的数据保存到新的Excel文件
    merged_df.to_excel(output_file, index=False)

# 调用函数
file_path = 'path_to_your_excel_file.xlsx'
output_file = 'merged_excel_file.xlsx'
merge_sheets(file_path, output_file)

代码解释

  1. 导入库:首先,我们导入了pandas库,它是Python中用于数据处理和分析的强大工具。

  2. 定义函数:我们定义了一个名为merge_sheets的函数,它接受三个参数:file_path(Excel文件的路径)、output_file(输出文件的名称)、num_sheets(需要合并的工作表数量,默认为5)。

  3. 加载Excel文件:使用pd.ExcelFile函数加载Excel文件,这样我们可以访问文件中的所有工作表。

  4. 初始化DataFrame:创建一个空的DataFramemerged_df,用于存储合并后的数据。

  5. 循环读取工作表:通过xls.sheet_names获取所有工作表的名称,并循环读取前num_sheets个工作表。对于每个工作表,使用pd.read_excel函数读取数据,并使用pd.concat函数将其追加到merged_df中。

  6. 保存合并后的数据:最后,使用to_excel函数将合并后的数据保存到新的Excel文件中。

运行结果

在这里插入图片描述
在这里插入图片描述

注意事项

  • 确保file_pathoutput_file正确指向了你的文件路径和期望的输出文件。
  • 如果你的Excel文件中的工作表数量超过了5个,你可以通过修改num_sheets参数来调整需要合并的工作表数量。
  • 合并的数据将按照它们在原始文件中的顺序排列。

通过使用Python脚本自动化合并Excel工作表的过程,我们可以节省大量的时间和精力,特别是在处理大型数据集时。这种方法不仅提高了效率,而且减少了人为错误的可能性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/895540.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】详解MySQL数据类型

一、数据类型 各类型的数值范围: 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。 可以通过UNSIGNED来说明某个字段是无符号的。对于int类型可能存放不下的数据,尽量不使用unsigned,unsigned int 同样可…

国家信息安全水平考试(NISP一级)最新题库-第十六章

目录 另外免费为大家准备了刷题小程序和docx文档,有需要的可以私信获取 1 防火墙是一种较早使用、实用性很强的网络安全防御技术,以下关于防火墙说法错误的是() A.防火墙阻挡对网络的非法访问和不安全数据的传递;B.防…

强对流降水临近预报

强对流降水是一种最常见的灾害性天气,其突发性和局地性强、生命史短、灾害重等特点极易给人民生产和生活带来巨大的破坏和伤害。如果可以提前预知此类天气状态,则可以挽回巨大的生命财产损失,尤其是短时(0~12小时)和临…

基础篇:带你打开Vue的大门(二)

目录 学习目标: 核心技能目标 学习内容: 学习产出: 学习目标: 能够创建Vue实例并理解其基本选项。 理解el、data、methods等选项的作用。 掌握数据绑定: 理解单向数据绑定和双向数据绑定的区别。能够使用v-bind和…

MySQL进阶之(十二)MySQL事务日志-undo log

十二、MySQL事务日志-undo log 12.1 undo log 引入12.2 undo log 的作用01、回滚数据02、MVCC 12.3 undo log 的存储结构01、回滚段与 undo 页02、回滚段与事务03、回滚段中的数据分类 12.4 undo log 的类型12.5 undo log 的生命周期01、执行 insert 操作02、执行 update 操作0…

Kubernetes部署练习

Kubernetes详细笔记 文章目录 Kubernetes 一、Kubernetes介绍 1.1、应用部署方式演变1.2、kubernetes简介1.3、kubernetes组件1.4、kubernetes概念 二、集群环境搭建 2.1、环境规划 2.1.1、集群类型2.1.2、安装方式2.1.3、主机规划 2.2、环境搭建 2.2.1、主机安装2.2.2、环境初…

如何开启华为交换机 http

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

【计算机网络 - 基础问题】每日 3 题(四十七)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

极速体验:实用的前端性能优化技巧

本文将深入探讨一系列实用的前端性能优化方案,从基础知识到高级技巧,我们将揭示如何让你的网站在瞬息万变的互联网中脱颖而出,无论你是经验丰富的开发者还是刚入行的新手,这篇文章都将为你提供宝贵的见解和实践建议。 目录 &…

python解决解析汉诺塔问题

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

如何选择适合自己的IP地址切换器

在互联网活动中,IP地址切换器成为越来越多用户的必备工具。本文旨在帮助用户了解如何选择适合自己的IP地址切换器,以确保网络活动的顺利进行。 ​一、IP地址切换器的基本功能与优势 IP地址切换器,又称IP代理软件或IP更换器,是一种…

计算机通信与网络实验笔记

1.LINUX通过版本号判断是否为稳定版本 2.计网基础 (CD),默认二层以太网交换机。 (10)物理层是均分(除以),数据链路层及以上是不除的。 3.传输介质: (1&…

IDEA 中的代码调试指南

目录 前言1. 为什么进行代码调试1.1 找出错误1.2 优化代码1.3 提高对代码的理解 2. 如何在 IDEA 中进行代码调试2.1 设置断点2.1.1 普通断点2.1.2 条件断点 2.2 开始调试2.3 调试控制2.3.1 单步调试(Step Over)2.3.2 进入方法(Step Into&…

打印自然常数E

自然常数E 自然常数,符号e,为数学中一个常数,是一个无限不循环小数,且为超越数,其值约为2.718281828459045。它是自然对数函数的底数。 我们打印表达式(11/x)的x次方的值以及获取第一次大于2.718的正整数 新建C#控制…

今日指数项目集成SpringSecurity

项目集成SpringSecurity ​ 在第一章我们是基于SpringSecurity、JWT技术实现前后端无状态化认证授权,而我们当前的项目是前后端分离的架构,同样也可借助Security框架和Jwt实现前后端的无状态认证授权操作; 1、项目自定义认证过滤器 1.1 依…

DFF对比

第一种 单元1:电平触发触发器: 在CLK高电平时,输入D的变化才可以传递到输出Q;在CLK点评时,输出Q不变。 第一种的整体 将两个电平触发组合,得到单边沿触发 输出Q仅在CLK上升沿处发生变化。边沿触发 第二…

MySQL-27.多表查询-案例

一.数据准备 -- 分类表 create table category (id int unsigned primary key auto_increment comment 主键ID,name varchar(20) not null unique comment 分类名称,type tinyint unsigned not null comment 类型 1 菜品分类 2 套餐分类,sort …

Quartus Ⅱ仿真 1.半加器

真服了,csdn上一搜全是收费,服啦服啦,我就自己来写一个吧 仿真波形: 输出结果: 介绍: 半加器(Half Adder)是数字电路中的一种基本组件,用于实现两个一位二进制数的加…

AI 代写是变现最快的副业项目,没有之一

AI 时代可以做的副业项目很多,但是实事求是的讲,大部分副业变现周期都有点长,短则几个月,长则半年到一年。所以很多副业社群都强调要坚持,当一项副业你能坚持一个月,基本就熬走了 90% 的人。但是坚持这件事…

ubuntu 安装haproxy

####安装##### sudo apt update sudo apt install haproxy sudo haproxy -v sudo systemctl status haproxy sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-org####配置站点##### nano /etc/haproxy/haproxy.cfgfrontend www-httpbind *:5001mode httpdefault_ba…