python將一個路徑中多個excel文件合并為一個工作薄多個工作表,表名為相應工作薄的名字
时间: 2023-08-04 18:16:05 浏览: 100
可以使用Python中的pandas模块来实现这个功能。以下是一个示例代码:
```python
import os
import pandas as pd
# 设置目标文件夹路径
folder_path = "your_folder_path"
# 获取目标文件夹下所有Excel文件的文件名
file_names = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]
# 创建一个空的pandas数据框来存储合并后的数据
merged_data = pd.DataFrame()
# 循环读取并合并每个Excel文件的所有工作表
for file in file_names:
# 读取Excel文件的所有工作表
sheets = pd.read_excel(os.path.join(folder_path, file), sheet_name=None)
# 循环遍历每个工作表并将其添加到merged_data数据框中
for sheet_name, sheet_data in sheets.items():
# 添加一个新列来记录数据来自哪个Excel文件
sheet_data['File Name'] = file
# 添加一个新列来记录数据来自哪个工作表
sheet_data['Sheet Name'] = sheet_name
# 将当前工作表的数据添加到merged_data数据框中
merged_data = pd.concat([merged_data, sheet_data], ignore_index=True)
# 将合并后的数据写入一个新的Excel文件中,并使用工作薄名作为工作表名
with pd.ExcelWriter('merged_workbook.xlsx') as writer:
for file in file_names:
# 获取当前Excel文件的数据
file_data = merged_data[merged_data['File Name'] == file]
# 获取当前Excel文件的名字作为工作薄名
sheet_name = os.path.splitext(file)[0]
# 将当前Excel文件的数据写入新的Excel文件中的一个工作表中
file_data.to_excel(writer, sheet_name=sheet_name, index=False)
```
这段代码将目标文件夹中所有的Excel文件合并为一个工作薄,每个Excel文件对应一个工作表,并且工作表名为相应工作薄的名字。需要注意的是,这段代码假设所有的Excel文件都具有相同的结构,即它们具有相同的列名和列数。如果实际情况不是这样,你可能需要对代码进行一些修改。
阅读全文