首页 > 编程语言 >Python合并多个Excel文件中的指定sheet

Python合并多个Excel文件中的指定sheet

时间:2023-10-28 16:23:08浏览次数:45  
标签:sheet name Python excel Excel file time path

本文将介绍一个用于合并多个Excel文件中指定sheet的Python代码。这个功能可以方便地整理和分析数据。我们将逐步解释代码的每个部分,并提供示例用法。

导入库

首先,我们导入了需要使用的三个库:ospandastime。这些库分别用于操作文件和文件夹、处理Excel文件以及计算程序执行时间。

import os
import pandas as pd
import time

定义函数

我们定义了一个名为merge_excel_sheets的函数,用于将多个Excel文件中的指定sheet合并到一个新的Excel文件中。该函数接受三个参数:folder_path(文件夹路径)、excel_list(包含要合并的Excel文件和sheet名的列表)和output_file(输出文件路径)。

def merge_excel_sheets(folder_path, excel_list, output_file):
    start_time = time.time()

    with pd.ExcelWriter(output_file) as writer:
        for excel_name, sheet_name in excel_list:
            file_path = os.path.join(folder_path, excel_name)
            df = pd.read_excel(file_path, sheet_name=sheet_name)

            sheet_name_combined = f"{excel_name[:-5]}-{sheet_name}"
            df.to_excel(writer, sheet_name=sheet_name_combined, index=False)

    end_time = time.time()
    execution_time = end_time - start_time
    print(f"程序执行时间:{execution_time}秒")

在函数内部,我们首先记录程序开始执行的时间。然后,我们使用pd.ExcelWriter创建一个空的Excel Writer对象,用于写入合并后的数据。

start_time = time.time()

with pd.ExcelWriter(output_file) as writer:

接下来,我们使用一个循环来处理每个Excel文件和sheet。对于每个文件和sheet,我们构造完整的文件路径,并使用pd.read_excel读取数据并存储为DataFrame对象。

for excel_name, sheet_name in excel_list:
    file_path = os.path.join(folder_path, excel_name)
    df = pd.read_excel(file_path, sheet_name=sheet_name)

然后,我们构造合并后的sheet名称,格式为"原文件名-原sheet名",并使用df.to_excel将DataFrame对象中的数据写入到指定的sheet中。

sheet_name_combined = f"{excel_name[:-5]}-{sheet_name}"
df.to_excel(writer, sheet_name=sheet_name_combined, index=False)

最后,我们计算程序执行的时间,并将其打印出来。

end_time = time.time()
execution_time = end_time - start_time
print(f"程序执行时间:{execution_time}秒")

示例用法

我们提供了一个示例用法,包括文件夹路径、要合并的Excel文件和sheet的列表,以及输出文件路径。通过调用merge_excel_sheets函数,我们可以执行合并操作。

folder_path = "E:\\工作内容"
excel_list = [
    ("一店9月.xlsx", "原始数据"),
    ("二店9月.xlsx", "原始"),
    ("三店9月.xlsx", "原始数据"),
    ("四店9月.xlsx", "原始数据"),
    ("五店9月-离职.xlsx", "原始数据")
]
output_file = os.path.join(folder_path, "output.xlsx")

merge_excel_sheets(folder_path, excel_list, output_file)

完整代码

import os
import pandas as pd  # 导入pandas库
import time  # 导入时间库,用于计算程序执行时间

def merge_excel_sheets(folder_path, excel_list, output_file):
    start_time = time.time()  # 记录程序开始执行的时间

    # 创建一个空的Excel Writer对象,用于写入合并后的数据
    with pd.ExcelWriter(output_file) as writer:
        # 循环处理每个Excel文件和sheet
        for excel_name, sheet_name in excel_list:
            # 根据文件名和文件夹路径,构造完整的文件路径
            file_path = os.path.join(folder_path, excel_name)
            # 读取指定Excel文件中指定sheet的数据,并存储为DataFrame类型的对象
            df = pd.read_excel(file_path, sheet_name=sheet_name)

            # 构造合并后的sheet名称,格式为"原文件名-原sheet名"
            sheet_name_combined = f"{excel_name[:-5]}-{sheet_name}"
            # 将DataFrame对象中的数据写入到指定sheet中
            df.to_excel(writer, sheet_name=sheet_name_combined, index=False)

    end_time = time.time()  # 记录程序结束执行的时间
    execution_time = end_time - start_time  # 计算程序执行的时间
    print(f"程序执行时间:{execution_time}秒")  # 输出程序执行的时间

# 示例用法
folder_path = "E:\\工作内容"
excel_list = [
    ("一店9月.xlsx", "原始数据"),
    ("二店9月.xlsx", "原始"),
    ("三店9月.xlsx", "原始数据"),
    ("四店9月.xlsx", "原始数据"),
    ("五店9月-离职.xlsx", "原始数据")
]
output_file = os.path.join(folder_path, "output.xlsx")
merge_excel_sheets(folder_path, excel_list, output_file)  # 调用合并函数,将指定的Excel文件中指定sheet的数据进行合并

 

标签:sheet,name,Python,excel,Excel,file,time,path
From: https://www.cnblogs.com/lcl-cn/p/17794218.html

相关文章

  • 如何将Python程序打包源代码成可执行程序
    导言:在某些情况下,我们可能希望将Python程序打包成可执行文件,以便用户无法查看程序的源代码。这种需求通常出现在商业软件、数据分析工具或其他需要保护知识产权的场景中。本文将介绍如何使用PyInstaller工具来打包Python程序,并确保它可以执行和读取配置信息。第一步:安装PyInsta......
  • 21.10 Python 使用CRC32校验文件
    CRC文件校验是一种用于验证文件完整性的方法,通过计算文件的CRC值并与预先计算的CRC校验值进行比较,来判断文件是否发生变化,此类功能可以用于验证一个目录中是否有文件发生变化,如果发生变化则我们可以将变化打印输出,该功能可用于实现对特定目录的验证。首先实现文件与目录的遍历功......
  • Python分享之数学与随机数 (math包,random包)
    我们在Python运算中看到Python最基本的数学运算功能。此外,math包补充了更多的函数。当然,如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy项目,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用。此外,random包可以用来生成随机数。随机数不仅可以用于......
  • Python 利用pandas 和 matplotlib绘制柱状图
    当你需要展示数据时,图表是一个非常有用的工具。Python中的pandas和matplotlib库提供了丰富的功能,可以帮助你轻松地绘制各种类型的图表。本文将介绍如何使用这两个库,绘制一个店铺销售数量的柱状图,并添加各种元素,如数据标签、图例、网格线等。准备工作在开始之前,你需要安装p......
  • Python 函数
    函数当编写的代码出现有规律的重复时,这个时候就要考虑定义函数,将这些代码提取定义成一个函数,方便调用。Python提供许多内置函数,可以根据需要调用相应的函数实现想要的功能。同样Python也能够灵活地自定义函数。调用函数介绍如何定义函数前,先讲下如何调用函数。......
  • Python 框架学习 Django篇 (六) 数据表关联、ORM关联
    在后端服务器开发中,特别是前后端分离的架构中数据库是非常重要的,后端主要就是负责管理数据,而我们经常使用的mysql、oracle都是关系型数据库,什么是关系型数据库?就是建立在关系模型基础上的数据库,而最难处理的就是各个表之间的关联关系,一般这种关系分为三种:一对一、一对多、多对......
  • Python 框架学习 Django篇 (六) ORM关联
    像是上一章我们很少会通过页面点击去添加和绑定关系表,更多的时候都是通过django的语法实现,接下来我们做一个案例djangorom是怎么操作外键关系的创建mode模型表Django_demo/mgr/models.py#国家表classCountry(models.Model):name=models.CharField(max_length=100)#......
  • python题目:使用lambda来创建匿名函数
    实例#!/usr/bin/python#-*-coding:UTF-8-*-MAXIMUM=lambdax,y:(x>y)*x+(x<y)*yMINIMUM=lambdax,y:(x>y)*y+(x<y)*xif__name__=='__main__':a=10b=20print('Thelargaroneis%d'%MA......
  • python 题目:数字比较。
    实例#!/usr/bin/python#-*-coding:UTF-8-*- if __name__ == '__main__':  i = 10  j = 20   if i > j:     print ('%d大于%d' % (i,j))   elif i == j:     print ('%d等于%d' % (i,j))   elif i < j:  ......
  • Python 函数
    函数当编写的代码出现有规律的重复时,这个时候就要考虑定义函数,将这些代码提取定义成一个函数,方便调用。Python提供许多内置函数,可以根据需要调用相应的函数实现想要的功能。同样Python也能够灵活地自定义函数。调用函数介绍如何定义函数前,先讲下如何调用函数。Python提供许多内......