本示例教程将介绍如何使用Python语言在多个Excel文件中按照sheet将数据合并到一个文件中。该示例包含两种不同的示例,一种是将多个Excel文件中同样命名的sheet合并到一个Excel文件的同一个Sheet中;另一种是将多个Excel文件中不同命名的sheet分别合并到一个新的Excel文件的同名Sheet中。
步骤一 - 安装需要的Python库
在Python中实现Excel文件的读写需要安装pandas
和openpyxl
库。在运行脚本之前,请确保在您的环境中已经安装这两个库。您可以使用以下命令进行安装:
pip install pandas openpyxl
步骤二 - 将所有Excel文件中的Sheet合并到同一文件的同一个Sheet下
首先,我们需要读取多个Excel文件中相同Sheet名称的所有Sheet,并将他们合并到一个Excel文件的同一Sheet下。假设所有的Excel文件都存储在/path/to/files/
目录下。
import pandas as pd
import os
# 定义要读取的文件夹
folder_path = '/path/to/files/'
# 定义要读取的相同Sheet名称
sheet_name = 'Sheet1'
# 创建要写入的Excel文件对象
writer = pd.ExcelWriter('merged.xlsx', engine='openpyxl')
# 创建空DataFrame对象
merged_data = pd.DataFrame()
# 读取所有Excel文件中指定的Sheet,并将它们合并到merged_data中
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
if os.path.isfile(file_path) and file_name.endswith('.xlsx'):
data = pd.read_excel(file_path, sheet_name=sheet_name)
merged_data = merged_data.append(data, ignore_index=True)
# 将合并后的数据写入到新的Excel文件中
merged_data.to_excel(writer, sheet_name=sheet_name, index=False)
# 保存Excel文件并关闭writer对象
writer.save()
writer.close()
代码解释:
folder_path
变量用于定义要读取的文件夹位置。sheet_name
变量用于定义要读取的sheet名称。writer
对象用于创建新的Excel文件对象,engine
指定使用openpyxl
库进行写操作。merged_data
变量用于创建一个空的 Pandas DataFrame 对象用于存储数据。- 使用
os.listdir()
函数读取文件夹中所有文件名。 - 使用
os.path.join()
函数获取文件的完整路径。 - 使用
os.path.isfile()
函数判断文件是不是一个文件。 - 使用
file_name.endswith('.xlsx')
来过滤掉不是 Excel 文件的文件。 - 使用 Pandas 的
read_excel()
函数读取 Excel 文件的指定 sheet 数据。 - 使用 Pandas 的
append()
函数把每个 Excel 文件中的数据按行合并到merged_data
中。 - 使用 Pandas 的
to_excel()
函数把合并后的数据写入到一个新的 Excel 文件中。 - 使用
writer.save()
保存新的 Excel 文件。 - 使用
writer.close()
关闭文件对象。
在上述示例代码中,我们将多个Excel文件中同名称的Sheet合并到一个名为Sheet1的Excel文件中,并保存到当前工程目录下的一个名为merged.xlsx的工作簿中。
步骤三 - 将多个Excel文件中的不同命名的Sheet合并到同一文件的不同同名Sheet下
另一个常见的需求是将多个Excel文件中不同名称的Sheet分别合并到一个新的Excel文件的同名Sheet下。下面是示例代码,假设所有的Excel文件都存储在/path/to/files/
目录下。
import pandas as pd
import os
# 定义要读取的文件夹
folder_path = '/path/to/files/'
# 创建要写入的Excel文件对象
writer = pd.ExcelWriter('merged.xlsx', engine='openpyxl')
# 读取所有Excel文件中的所有Sheet
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
if os.path.isfile(file_path) and file_name.endswith('.xlsx'):
with pd.ExcelFile(file_path) as xlsx:
for sheet_name in xlsx.sheet_names:
# 读取每个Sheet的数据
data = pd.read_excel(xlsx, sheet_name=sheet_name)
# 将数据写入到新文件的同名Sheet
data.to_excel(writer, sheet_name=sheet_name, index=False)
# 保存Excel文件并关闭writer对象
writer.save()
writer.close()
代码解释:
folder_path
变量用于定义要读取的文件夹位置。writer
对象用于创建新的 Excel 文件对象。- 使用 os.listdir() 函数读取文件夹中的所有文件名。
- 使用 os.path.join() 函数获取文件的完整路径。
- 使用 os.path.isfile() 函数来判断文件是否为一个文件。
- 使用 file_name.endswith('.xlsx') 来过滤掉不是 Excel 文件的文件。
- 使用 pd.ExcelFile() 函数返回 Excel 文件对象。
- 使用 ExcelFile.sheet_names() 函数获取 Excel 文件中所有 Sheet 名称。
- 使用 Pandas 的 read_excel() 函数为每个 sheet 读取数据。
- 使用 to_excel() 函数将数据写入到新文件的同名Sheet。
- 使用
writer.save()
保存新的 Excel 文件。 - 使用
writer.close()
关闭文件对象。
在上述示例代码中,我们将多个Excel文件中不同命名的Sheet分别合并到一个新的 Excel 文件的同名Sheet下,并保存到当前工程目录下的名为merged.xlsx的工作簿。
这两个示例代码可以很容易地实现将同一文件夹中所有 Excel 文件中的数据按照不同需求进行合并,为日常工作处理Excel文件提供了很好的方法和思路。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 按照sheet合并多个Excel的示例代码(多个sheet) - Python技术站