python将多个excel(其中每个excel都有数量不等的sheet)合并为一个文件不同的sheet
时间: 2023-06-02 12:02:21 浏览: 179
可以使用Python中的pandas库来实现将多个Excel文件合并为一个文件的不同Sheet的操作。具体步骤如下:
1. 导入pandas库:
```python
import pandas as pd
```
2. 定义一个函数,用于读取Excel文件并将所有Sheet合并为一个DataFrame:
```python
def read_excel(file_path):
# 读取Excel文件中的所有Sheet
sheets_dict = pd.read_excel(file_path, sheet_name=None)
# 将所有Sheet合并为一个DataFrame
df = pd.concat(sheets_dict.values(), ignore_index=True)
return df
```
3. 循环读取多个Excel文件,并将每个文件的所有Sheet合并为一个DataFrame:
```python
# 定义一个空的DataFrame,用于存储所有Excel文件的数据
merged_df = pd.DataFrame()
# 循环读取多个Excel文件
for file_path in file_paths:
# 调用read_excel函数读取Excel文件并将所有Sheet合并为一个DataFrame
df = read_excel(file_path)
# 将当前Excel文件的数据添加到merged_df中
merged_df = pd.concat([merged_df, df], ignore_index=True)
```
4. 将合并后的DataFrame按照需要的方式写入到一个新的Excel文件中,比如将不同的Sheet分别写入到不同的工作表中:
```python
# 创建一个ExcelWriter对象,用于写入Excel文件
writer = pd.ExcelWriter(output_file)
# 循环将合并后的DataFrame按照需要的方式写入到Excel文件中
for sheet_name, group in merged_df.groupby('Sheet Name'):
# 将当前Sheet的数据写入到新的工作表中
group.to_excel(writer, sheet_name=sheet_name, index=False)
# 保存Excel文件
writer.save()
```
完整代码如下:
```python
import pandas as pd
# 定义一个函数,用于读取Excel文件并将所有Sheet合并为一个DataFrame
def read_excel(file_path):
# 读取Excel文件中的所有Sheet
sheets_dict = pd.read_excel(file_path, sheet_name=None)
# 将所有Sheet合并为一个DataFrame
df = pd.concat(sheets_dict.values(), ignore_index=True)
return df
# 定义多个Excel文件的路径
file_paths = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']
# 定义一个空的DataFrame,用于存储所有Excel文件的数据
merged_df = pd.DataFrame()
# 循环读取多个Excel文件
for file_path in file_paths:
# 调用read_excel函数读取Excel文件并将所有Sheet合并为一个DataFrame
df = read_excel(file_path)
# 将当前Excel文件的数据添加到merged_df中
merged_df = pd.concat([merged_df, df], ignore_index=True)
# 定义输出文件的路径和名称
output_file = 'merged_file.xlsx'
# 创建一个ExcelWriter对象,用于写入Excel文件
writer = pd.ExcelWriter(output_file)
# 循环将合并后的DataFrame按照需要的方式写入到Excel文件中
for sheet_name, group in merged_df.groupby('Sheet Name'):
# 将当前Sheet的数据写入到新的工作表中
group.to_excel(writer, sheet_name=sheet_name, index=False)
# 保存Excel文件
writer.save()
```
阅读全文