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

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

时间:2023-10-25 22:33:35浏览次数:42  
标签: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:\\工作内容\\孙玮\\日期范围报告\\2023年9月日期范围报告"
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:\\工作内容\\孙玮\\日期范围报告\\2023年9月日期范围报告"
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/17788283.html

相关文章

  • Python 学习笔记
    Python开发环境搭建第1节初始Python第2节Windows环境安装第3节macOS环境安装第4节VSCode安装与应用第5节PyCharm安装与应用第6节pip包管理工具Python工程应用第7节Python工程应用-字符串第8节Python文档化应用场景第9节如何使用注释第10节字符编码......
  • Python学习笔记
    Python开发环境搭建第1节初始Python第2节Windows环境安装第3节macOS环境安装第4节VSCode安装与应用第5节PyCharm安装与应用第6节pip包管理工具Python工程应用第7节Python工程应用-字符串几种字符串的表示原始字符串:使用反斜杠(\)转义特殊字符的字符串,例如:在P......
  • Python语法6
    Python语法6这次我们整理关于元组,集合,字典的知识元组元组与我们之前讲的列表相似,但是元组不支持动态添加,删除元素,当然也不可以修改元素。元组的初始化元组用小括号表示,中间的元素用逗号隔开注意,如果初始化只包含一个元素的元组,需要在该元素后面添加一个逗号a=()#初始化一......
  • 基于Python的猫狗宠物展示系统-计算机毕业设计源码+LW文档
    摘 要 随着时代的发展,人们对宠物也越来越重视,近些年来我国的宠物产业也发生了翻天覆地的变化,但是很多人在出去宠物的时候不知道去哪里宠物,在预订酒店和机票的时候也没有一个综合性的宠物网站,为了让人们的宠物变的更加的方便,为此我开发了本基于Python的猫狗宠物展示系统本基于......
  • python的requests发送/上传多个文件(转)
    原文:https://blog.csdn.net/five3/article/details/74913742作者:上帝De助手 1、需要的环境Python3.XRequests库2、单字段发送单个文件在requests中发送文件的接口只有一种,那就是使用requests.post的files参数,请求形式如下:url="http://httpbin.org/post"data=No......
  • Python高效地生成#号颜色文本
    之前一直想知道如何快速通过整型变量生成颜色文本,直到问了chatgpt,下面是生成红颜色的一个实例:r=255g=0b=0color='#%02x%02x%02x'%(r,g,b)展示颜色的实例程序:fromtkinterimport*r=Tk()c=Canvas(r)c.pack(fill=BOTH,expand=True)b=Button(r,......
  • 代码随想训练营的第十五天(Python)| 二叉树的前、中、后续遍历(各种花式遍历哈哈)
    前序遍历统一写法用None来区分遍历查找的节点和处理节点1、递归法classSolution:defpreorderTraversal(self,root:Optional[TreeNode])->List[int]:res=[]self.preorder(root,res)returnresdefpreorder(self,root,res):......
  • 如何将Python程序打包并保护源代码
    导言:在某些情况下,我们可能希望将Python程序打包成可执行文件,以便用户无法查看程序的源代码。这种需求通常出现在商业软件、数据分析工具或其他需要保护知识产权的场景中。本文将介绍如何使用PyInstaller工具来打包Python程序,并确保它可以执行和读取配置信息。第一步:安装PyInstal......
  • Python 面向对象编程:类、对象、初始化和方法详解
    Python是一种面向对象的编程语言。在Python中,几乎所有东西都是对象,都具有其属性和方法。类似于对象构造函数或用于创建对象的“蓝图”的类。创建一个类要创建一个类,请使用关键字class:示例,创建一个名为MyClass的类,其中包含一个名为x的属性:classMyClass:x=5创建......
  • 初学python
    在python中if语句是Python中的条件语句,用于根据条件选择性地执行特定的代码块。它的基本语法如下:ifcondition:#codetobeexecutedifconditionisTrueelse:#codetobeexecutedifconditionisFalsecondition是一个表达式,根据它的布尔值(True或False)来决定执行......