python实现Excel数据根据规则拆分为多个Excel

📅 发布时间:2026/7/9 6:00:25 👁️ 浏览次数:
python实现Excel数据根据规则拆分为多个Excel
有时需要将一个excel文件数据按一定规则拆分为多个excel比如有一个销售总表里面含有各个销售员的销售数据现在有需要把各个销售员的销售数据从总表中分离出来独立建立一个Excel文件面对这个场景一使用python可以快速实现代码如下# -*- coding: UTF-8 -*- # # ProjectName: pythonws001 # Filename: excel_seperate.py # Copyright www.637hulian.com # Author: shenzhennba(Administrator) # Version 1.0 # Since 2026/3/8 13:51 # # excel根据文件内容根据某规则拆分为多个excel # from openpyxl import Workbook, load_workbook import os import random import pandas as pd def init_excel(save_path, excel_file_name, sheet_name): 建立excel和并初始化数据内容 if not os.path.exists(save_path): os.mkdirs(save_path) if not excel_file_name: print(请输入excel文件名必要参数) return if not excel_file_name.lower().endswith(.xlsx): print(请输入.xlsx格式的excel文件名必要参数) return if not sheet_name: print(请输入sheet名必要参数) return try: file_path os.path.join(save_path, excel_file_name) #创建 workbook 对象 wb Workbook() # 获取当前活跃的worksheet ws wb.active # 设置sheet名称 ws.title sheet_name #构造数据 salers [张三,李四,王五,赵六,老七] products [键盘, 鼠标, 主机, 显示器, 摄像头, 电源线, 音箱, 台灯, 电池, 内存条,电源] # 建立excel表头 ws[A1] 产品名称 ws[B1] 数量 ws[C1] 单价 ws[D1] 销售员 # 增加表体数据 for i in range(2,100): ws[fA{i}] random.sample(products, 1)[0] ws[fB{i}] random.randint(1,10) ws[fC{i}] random.randint(1,300) ws[fD{i}] random.sample(salers, 1)[0] # 数据保存并写入excel文件 wb.save(file_path) print(f初始化销售记录excel文件创建完成参见:{file_path}) except Exception as e: print(e) def excel_data_seperate(save_path, excel_file_name, sheet_name): 根据文件内容根据某规则拆分为多个excel 从销售总表中把各个销售员的销售数据分离并创建一个新的excel文件每个销售员一个文件 if not os.path.exists(save_path): print(f路径不存在请检查是否存在:{save_path}) return if not excel_file_name: print(请输入excel文件名必要参数) return if not excel_file_name.lower().endswith(.xlsx): print(请输入.xlsx格式的excel文件名必要参数) return if not sheet_name: print(请输入sheet名必要参数) return try: file_path os.path.join(save_path, excel_file_name) # 读取excel文件指定sheet名称的内容 df pd.read_excel(file_path, sheet_namesheet_name) # 去重获取销售员列表 sale_users df[销售员].unique() if len(sale_users) 1: print(销售总表中没有销售员信息请检查) return print(f销售总表中共有{len(sale_users)}个销售员分别为:{sale_users}) print(f正从总表分离出每个销售员的销售数据...) # 循环每个销售员并筛选该销售员相关数据 # 最后创建一个新的excel文件,名称格式为销售记录_销售员名.xlsx for sale_user in sale_users: print(f\n正在处理销售员:{sale_user}的数据...) user_df df[df[销售员] sale_user] # 创建新的excel文件 new_file_name f销售记录_{sale_user}.xlsx new_file_path os.path.join(save_path, new_file_name) user_df.to_excel(new_file_path, indexFalse) print(f销售记录_{sale_user}.xlsx 文件创建完成参见:{new_file_path}) except Exception as e: print(e) def main(): 主函数 save_path rF:\appData\tempExcel excel_file_name 销售总表01.xlsx sheet_name 销售记录表01 init_excel(save_path, excel_file_name, sheet_name) excel_data_seperate(save_path, excel_file_name, sheet_name) if __name__ __main__: main()二相关截图