Python批量合并Excel文件夹

简介

在日常工作中,我们经常会遇到需要合并多个Excel文件的情况。如果手动一个一个打开、复制、粘贴,既费时又容易出错。而使用Python可以快速、自动地完成这个任务。本文将详细介绍如何使用Python批量合并Excel文件夹。

整体流程

下面是合并Excel文件夹的整体流程,我们将使用以下步骤完成:

  1. 打开指定文件夹;
  2. 遍历文件夹中的所有Excel文件;
  3. 读取每个Excel文件的内容;
  4. 将每个Excel文件的内容合并到一个新的Excel文件中。

下面是一个简单的流程表格,展示了每个步骤的具体操作:

步骤 操作
1 指定文件夹路径
2 遍历文件夹中的所有文件
3 读取Excel文件的内容
4 合并Excel文件的内容到一个新文件

接下来,我们将逐步解释每个步骤应该如何操作。

步骤详解

1. 指定文件夹路径

首先,我们需要指定一个文件夹路径,这个文件夹将包含我们要合并的Excel文件。可以通过以下代码来实现:

import os

folder_path = "path/to/folder"

2. 遍历文件夹中的所有文件

接下来,我们需要遍历文件夹中的所有文件。可以使用os.listdir()函数来获取文件夹中的所有文件名,并通过文件名的后缀来筛选出Excel文件。以下是具体的代码实现:

excel_files = []
for file in os.listdir(folder_path):
    if file.endswith(".xlsx") or file.endswith(".xls"):
        excel_files.append(file)

在上述代码中,我们首先创建一个空列表excel_files来存储Excel文件名。然后使用os.listdir()函数来获取文件夹中的所有文件名,并通过endswith()方法来筛选出以".xlsx"或".xls"结尾的文件。

3. 读取Excel文件的内容

在这一步中,我们需要读取每个Excel文件的内容。我们将使用pandas库来处理Excel文件。以下是具体的代码实现:

import pandas as pd

merged_data = pd.DataFrame()
for file in excel_files:
    file_path = os.path.join(folder_path, file)
    data = pd.read_excel(file_path)
    merged_data = merged_data.append(data, ignore_index=True)

在上述代码中,我们首先导入了pandas库,并创建了一个空的DataFrame对象merged_data来存储合并后的数据。然后使用os.path.join()函数将文件夹路径和文件名拼接成完整的文件路径。接着使用pd.read_excel()函数读取Excel文件的内容,并使用append()方法将读取的数据添加到merged_data中。

4. 合并Excel文件的内容到一个新文件

最后一步是将合并后的数据保存到一个新的Excel文件中。以下是具体的代码实现:

output_file = "merged_data.xlsx"
output_path = os.path.join(folder_path, output_file)
merged_data.to_excel(output_path, index=False)

在上述代码中,我们首先指定了输出文件的名称output_file,然后使用os.path.join()函数将文件夹路径和文件名拼接成完整的输出路径。接着使用to_excel()方法将合并后的数据保存到新的Excel文件中,通过index=False参数可以避免输出文件中的行号。

完整代码示例

下面是一个完整的代码示例,展示了如何使用Python批量合并Excel文件夹:

import os
import pandas as pd

folder_path = "path/to/folder"
excel_files = []

# 遍历文件夹中的所有文件
for file in os.listdir(folder_path):
    if file.endswith(".xlsx") or file.endswith(".xls"):
        excel_files.append(file)

merged_data = pd.DataFrame()

# 读取Excel文件的内容
for file in excel_files:
    file_path = os.path.join(folder_path, file)
    data = pd.read_excel(file_path)
    merged