Python合并Excel保留Sheet名

在日常工作中,我们经常需要处理多个Excel文件,有时候需要将多个文件的数据合并到一个文件中,以便于进行统计分析或者数据处理。Python提供了强大的工具和库来处理Excel文件,本文将介绍如何使用Python合并多个Excel文件并保留原始文件的Sheet名。

准备工作

在开始之前,需要安装pandasopenpyxl两个库。pandas是一个用于数据分析和处理的库,而openpyxl则是用于操作Excel文件的库。可以使用以下命令来安装这两个库:

pip install pandas openpyxl

合并Excel文件

首先,我们需要将要合并的Excel文件放在一个文件夹中,然后使用os库来获取文件夹中的所有Excel文件的文件名。以下是获取文件夹中所有Excel文件的代码:

import os

folder_path = 'path/to/folder'  # 文件夹路径
file_names = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]

接下来,我们需要创建一个新的Excel文件作为合并后的结果文件。可以使用pandas库中的ExcelWriter类来创建一个Excel文件,并设置参数engine='openpyxl'来使用openpyxl库进行操作。以下是创建结果文件的代码:

import pandas as pd

result_file = 'path/to/result.xlsx'  # 结果文件路径
writer = pd.ExcelWriter(result_file, engine='openpyxl')

然后,我们需要遍历所有的Excel文件,读取每个文件的数据,并将数据写入结果文件中。可以使用pandas库的read_excel函数来读取Excel文件的数据,然后使用to_excel方法将数据写入结果文件的指定Sheet中。以下是遍历并写入数据的代码:

for file_name in file_names:
    sheet_name = os.path.splitext(file_name)[0]  # 获取Sheet名
    sheet_data = pd.read_excel(os.path.join(folder_path, file_name))  # 读取数据
    sheet_data.to_excel(writer, sheet_name=sheet_name, index=False)  # 写入数据

writer.save()  # 保存结果文件

在上述代码中,我们使用os.path.splitext函数来获取每个Excel文件的文件名,然后使用pd.read_excel函数读取数据,并使用文件名作为Sheet名,最后使用to_excel方法将数据写入结果文件的指定Sheet中。

结果验证

为了验证合并结果,我们可以读取合并后的结果文件,并打印每个Sheet中的数据。可以使用pandas库的read_excel函数来读取结果文件的数据,并使用print函数打印数据。以下是读取结果文件并打印数据的代码:

result_data = pd.read_excel(result_file, sheet_name=None)  # 读取结果文件的所有Sheet数据

for sheet_name, sheet_data in result_data.items():
    print(f'Sheet名:{sheet_name}')
    print(sheet_data)

在上述代码中,我们使用pd.read_excel函数的sheet_name=None参数来读取结果文件的所有Sheet数据,然后遍历每个Sheet,并使用print函数打印Sheet名和数据。

总结

本文介绍了如何使用Python合并多个Excel文件并保留原始文件的Sheet名。首先,我们使用os库获取文件夹中的所有Excel文件的文件名;然后,使用pandas库中的ExcelWriter类创建结果文件;接下来,遍历所有的Excel文件,读取每个文件的数据,并将数据写入结果文件的指定Sheet中;最后,验证合并结果,读取结果文件的数据并打印。希望本文对大家在合并Excel文件时有所帮助。


参考文献:

  • [pandas官方文档](
  • [openpyxl官方文档](

表格

下面是合并Excel文件的代码示例:

import os
import pandas as pd

folder_path = 'path/to/folder'
file_names = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]

result_file = 'path/to/result.xlsx'
writer =