Python多sheet Excel按sheet合并(sheet名不同)

概述

在日常开发中,我们经常会遇到需要将多个Excel文件的不同sheet合并到一个sheet中的需求。本文将教会你如何使用Python来实现这一功能。

流程概览

下面是实现这一功能的整个流程概览:

步骤 操作
1 导入所需的库
2 获取所有Excel文件
3 遍历每个Excel文件的每个sheet
4 将每个sheet的数据合并到一个新的Excel文件中的一个sheet
5 保存新的合并后的Excel文件

现在,我们来逐步实现每个步骤。

1. 导入所需的库

首先,我们需要导入一些Python库来帮助我们实现这一功能。在这个例子中,我们将使用pandasopenpyxl库。pandas库提供了强大的数据处理功能,而openpyxl库则用于处理Excel文件。

import pandas as pd
from openpyxl import load_workbook

2. 获取所有Excel文件

接下来,我们需要获取所有需要合并的Excel文件。假设这些文件都放在同一个目录下,我们可以使用os库来获取目录中的所有文件。

import os

# 指定目录
folder_path = "path/to/excel/files"

# 获取目录中的所有文件
files = os.listdir(folder_path)

# 过滤出Excel文件
excel_files = [file for file in files if file.endswith(".xlsx") or file.endswith(".xls")]

3. 遍历每个Excel文件的每个sheet

接下来,我们需要遍历每个Excel文件的每个sheet,并将这些sheet的数据合并到一个新的Excel文件中的一个sheet。我们可以使用pandas库的read_excel函数来读取Excel文件,然后使用openpyxl库来处理Excel文件。

# 创建一个新的Excel文件
merged_file = pd.ExcelWriter("path/to/merged_file.xlsx", engine="openpyxl")

# 遍历每个Excel文件
for file in excel_files:
    # 读取Excel文件
    excel_data = pd.read_excel(os.path.join(folder_path, file), sheet_name=None)
    
    # 遍历每个sheet
    for sheet_name, df in excel_data.items():
        # 将每个sheet的数据写入新的Excel文件的一个sheet
        df.to_excel(merged_file, sheet_name=sheet_name, index=False)

# 保存新的合并后的Excel文件
merged_file.save()

在上面的代码中,我们使用pd.ExcelWriter创建了一个新的Excel文件,并指定了使用openpyxl引擎来处理Excel文件。然后,我们遍历每个Excel文件,在每个文件中遍历每个sheet,并使用pd.read_excel函数读取每个sheet的数据。最后,我们使用df.to_excel将每个sheet的数据写入新的Excel文件的一个sheet中。

4. 保存新的合并后的Excel文件

最后,我们需要保存新的合并后的Excel文件。我们使用merged_file.save()函数来保存文件。

# 保存新的合并后的Excel文件
merged_file.save()

完整代码

下面是完整的代码:

import os
import pandas as pd
from openpyxl import load_workbook

# 指定目录
folder_path = "path/to/excel/files"

# 获取目录中的所有文件
files = os.listdir(folder_path)

# 过滤出Excel文件
excel_files = [file for file in files if file.endswith(".xlsx") or file.endswith(".xls")]

# 创建一个新的Excel文件
merged_file = pd.ExcelWriter("path/to/merged_file.xlsx", engine="openpyxl")

# 遍历每个Excel文件
for file in excel_files:
    # 读取Excel文件
    excel_data = pd.read_excel(os.path.join(folder_path, file), sheet_name=None)
    
    # 遍历每个sheet
    for sheet_name, df in excel_data.items():
        # 将每个sheet的数据写入新的Excel文件的一个sheet
        df.to_excel(merged_file, sheet_name=sheet_name, index=False)

# 保存新的合并后的Excel文件
merged_file.save()

以上就是使用Python实现多