python合并多个excel文件,每个分Excel中有多个sheet,合并后的表格中sheet与分excel中的sheet名称和数量一致
时间: 2023-06-02 10:02:39 浏览: 73
可以使用Python中的pandas库来实现合并多个Excel文件。具体步骤如下:
1. 导入所需库
```python
import pandas as pd
import os
```
2. 定义需要合并的Excel文件路径和文件名
```python
path = 'path/to/excel/files'
files = os.listdir(path)
```
3. 定义一个函数来读取指定Excel文件的所有sheet,并将它们合并成一个DataFrame
```python
def read_excel(file):
sheets_dict = pd.read_excel(file, sheet_name=None)
all_df = []
for name, sheet in sheets_dict.items():
sheet['sheet_name'] = name
all_df.append(sheet)
return pd.concat(all_df, ignore_index=True)
```
4. 循环遍历所有Excel文件,并将它们合并成一个DataFrame
```python
all_data = []
for file in files:
if file.endswith('.xlsx'):
file_path = os.path.join(path, file)
df = read_excel(file_path)
all_data.append(df)
merged_df = pd.concat(all_data, ignore_index=True)
```
5. 将合并后的数据写入到一个新的Excel文件中
```python
merged_df.to_excel('path/to/output/file.xlsx', index=False)
```
完整代码示例:
```python
import pandas as pd
import os
path = 'path/to/excel/files'
files = os.listdir(path)
def read_excel(file):
sheets_dict = pd.read_excel(file, sheet_name=None)
all_df = []
for name, sheet in sheets_dict.items():
sheet['sheet_name'] = name
all_df.append(sheet)
return pd.concat(all_df, ignore_index=True)
all_data = []
for file in files:
if file.endswith('.xlsx'):
file_path = os.path.join(path, file)
df = read_excel(file_path)
all_data.append(df)
merged_df = pd.concat(all_data, ignore_index=True)
merged_df.to_excel('path/to/output/file.xlsx', index=False)
```
注意:该代码将所有Excel文件中的sheet合并成一个Excel文件中的sheet。如果要保留原来的sheet名称,可以在读取时添加一个名为'sheet_name'的列来存储sheet名称,并在合并后使用pandas的`pivot_table()`函数来将数据透视回原始格式。