翼度科技»论坛 编程开发 python 查看内容

使用Python合并Excel文件中的多个Sheet的实现过程

9

主题

9

帖子

27

积分

新手上路

Rank: 1

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

全部代码
  1. import wx
  2. from openpyxl import load_workbook, Workbook

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

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

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

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

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

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

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

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

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

  36. if __name__ == '__main__':
  37.     app = MyApp()
  38.     app.MainLoop()
复制代码
环境准备

首先,确保你的环境中安装了
  1. pandas
复制代码
  1. openpyxl
复制代码
库。如果没有安装,可以通过以下命令安装:
  1. pip install pandas openpyxl
复制代码
代码分析

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

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

  18. # 调用函数
  19. file_path = 'path_to_your_excel_file.xlsx'
  20. output_file = 'merged_excel_file.xlsx'
  21. merge_sheets(file_path, output_file)
复制代码
代码解释


  • 导入库:首先,我们导入了
    1. pandas
    复制代码
    库,它是Python中用于数据处理和分析的强大工具。
  • 定义函数:我们定义了一个名为
    1. merge_sheets
    复制代码
    的函数,它接受三个参数:
    1. file_path
    复制代码
    (Excel文件的路径)、
    1. output_file
    复制代码
    (输出文件的名称)、
    1. num_sheets
    复制代码
    (需要合并的工作表数量,默认为5)。
  • 加载Excel文件:使用
    1. pd.ExcelFile
    复制代码
    函数加载Excel文件,这样我们可以访问文件中的所有工作表。
  • 初始化DataFrame:创建一个空的
    1. DataFrame
    复制代码
    1. merged_df
    复制代码
    ,用于存储合并后的数据。
  • 循环读取工作表:通过
    1. xls.sheet_names
    复制代码
    获取所有工作表的名称,并循环读取前
    1. num_sheets
    复制代码
    个工作表。对于每个工作表,使用
    1. pd.read_excel
    复制代码
    函数读取数据,并使用
    1. pd.concat
    复制代码
    函数将其追加到
    1. merged_df
    复制代码
    中。
  • 保存合并后的数据:最后,使用
    1. to_excel
    复制代码
    函数将合并后的数据保存到新的Excel文件中。

运行结果




注意事项


  • 确保
    1. file_path
    复制代码
    1. output_file
    复制代码
    正确指向了你的文件路径和期望的输出文件。
  • 如果你的Excel文件中的工作表数量超过了5个,你可以通过修改
    1. num_sheets
    复制代码
    参数来调整需要合并的工作表数量。
  • 合并的数据将按照它们在原始文件中的顺序排列。
通过使用Python脚本自动化合并Excel工作表的过程,我们可以节省大量的时间和精力,特别是在处理大型数据集时。这种方法不仅提高了效率,而且减少了人为错误的可能性。
以上就是使用Python合并Excel文件中的多个Sheet的实现过程的详细内容,更多关于Python合并多个Sheet的资料请关注脚本之家其它相关文章!

来源:https://www.jb51.net/python/328927ri2.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具