python怎麽將一個文件夾中多個工作薄合并為一個工作薄中的多個工作表
时间: 2023-07-26 21:04:40 浏览: 74
python批量合并一个工作簿的多个表.rar
您可以使用Python中的pandas库来实现这个功能。具体步骤如下:
1. 使用os库中的listdir函数获取文件夹中所有文件名,筛选出所有Excel文件名。
2. 使用pandas库中的read_excel函数读取每个Excel文件中的每个工作表,将它们存储为一个字典对象,其中键为文件名和工作表名,值为DataFrame对象。
3. 将字典对象转换为一个大的DataFrame对象,使用pandas库中的concat函数。
4. 使用pandas库中的ExcelWriter函数将大的DataFrame对象中的每个工作表存储到同一个工作薄中。
下面是代码示例,请将多个工作薄存储在“input_folder”文件夹中,并将它们写入“output_folder"文件夹中的单个工作薄中:
```python
import os
import pandas as pd
# 获取文件夹中所有Excel文件名
input_folder = './input_folder/'
excel_filenames = [f for f in os.listdir(input_folder) if f.endswith('.xlsx')]
# 读取每个Excel文件中的每个工作表
workbooks = {}
for filename in excel_filenames:
workbook_path = os.path.join(input_folder, filename)
workbook = pd.read_excel(workbook_path, sheet_name=None)
for sheet_name, sheet_df in workbook.items():
workbook_name = os.path.splitext(filename)[0]
sheet_key = workbook_name + '_' + sheet_name
workbooks[sheet_key] = sheet_df
# 将多个工作表合并为单个DataFrame对象
df = pd.concat(workbooks, axis=1)
# 将单个DataFrame对象中的每个工作表写入同一个工作薄中
output_file = './output_folder/merged_workbook.xlsx'
with pd.ExcelWriter(output_file) as writer:
for sheet_name in df.columns.levels[1]:
sheet_df = df.xs(sheet_name, axis=1, level=1)
sheet_df.to_excel(writer, sheet_name=sheet_name, index=False)
```
请注意,此代码假定所有Excel文件中的所有工作表都具有相同的列标题和数据结构。如果Excel文件中的工作表具有不同的列标题或数据结构,则需要在第2步中使用pandas库中的read_excel函数的参数来指定列标题或数据结构。
阅读全文