概述
在工作中,我们常会用到将EXCEL拆分/合并为多个工作表/簿,如全国的订单表,需要根据省份列拆分下发至对应的省、各省份数据需要汇总、...... 借助Python应该如何操作呢?
1. EXCEL拆分成多个工作表
需求:
根据 “省份” 列的不同值将数据拆分同一个工作簿下多个工作表。
操作:
仅需将 下述代码中的 文件路径、拆分字段名 替换你自己的即可
代码:
# 导入所需要的模块,没有就去终端安装 pip install pandas openpyxl
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 读取需要拆分的excel 文件
file_path = 'D:/data/全国订单.xlsx'
df = pd.read_excel(file_path)
df.head()
# 创建一个新的 Excel 工作簿
wb = Workbook()
ws = wb.active
# 根据 省份 列内容拆分成多个工作表
for category in df['省份'].unique():
df_category = df[df['省份'] == category]
ws = wb.create_sheet(title=category)
for r in dataframe_to_rows(df_category, index=False, header=True):
ws.append(r)
# 保存工作簿
output_file = 'D:/data/aa.xlsx'
wb.save(output_file)
2. Excel合并多个工作表
需求:
将同一个工作簿下多个工作表根合并为一个工作表。
操作:
仅需将 下述代码中的 文件路径 替换你自己的即可
代码:
# 导入所需要的模块,没有就去终端安装 pip install pandas
import pandas as pd
# 读取 Excel 文件中的多个工作表
file_path = 'D:/data/各省订单.xlsx'
xl = pd.ExcelFile(file_path)
dfs = {sheet_name: xl.parse(sheet_name) for sheet_name in xl.sheet_names}
# 合并多个工作表数据为一个 DataFrame
combined_data = pd.concat(dfs.values(), ignore_index=True)
# 将合并后的数据保存到新的 Excel 文件
output_file = 'D:/data/全国_data.xlsx'
combined_data.to_excel(output_file, index=False)
3. EXCEL拆分成多个工作薄
需求:
根据 “省份” 列的不同值将数据拆分为多个工作簿。
操作:
仅需将 下述代码中的 文件路径、拆分字段名 替换你自己的即可
代码:
# 导入所需要的模块,没有就去终端安装 pip install pandas
import pandas as pd
# 读取原始 Excel 文件
file_path = 'D:/data/全国订单.xlsx'
df = pd.read_excel(file_path)
df.head()
# 根据列内容拆分成多个工作簿
for category in df['省份'].unique():
df_category = df[df['省份'] == category]
new_file_path = f'D:/data/{category}.xlsx' # 新文件名
df_category.to_excel(new_file_path, index=False)
4. Excel合并多个工作簿
需求:
将固定文件夹下的所有各省份数据,汇总成全国的订单表;
操作:
仅需将 下述代码中的 文件路径 替换你自己的即可;
代码:
# 导入所需要的模块,没有就去终端安装 pip install pandas/os
import os
import pandas as pd
# 读取原始文件路径
folder_path = 'D:/data/'
# 读取文件夹下所有 Excel 文件并合并
all_data = pd.DataFrame()
for file in os.listdir(folder_path):
if file.endswith('.xlsx'):
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path)
all_data = pd.concat([all_data, df], ignore_index=True)
# 将合并后的数据保存到新的 Excel 文件
output_file = 'D:/data/全国订单.xlsx'
all_data.to_excel(output_file, index=False)
总结
仅需替换 代码中的 路径、字段名 即可轻松实现Excel合并/拆分多个工作表/簿,是不是超级简单呢?快点收藏起来吧。