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

有时需要将一个excel文件数据按一定规则拆分为多个excel,比如有一个销售总表,里面含有各个销售员的销售数据,现在有需要把各个销售员的销售数据从总表中分离出来独立建立一个Excel文件,面对这个场景,

一,使用python可以快速实现,代码如下:

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[f'A{i}'] = random.sample(products, 1)[0]
            ws[f'B{i}'] = random.randint(1,10)
            ws[f'C{i}'] = random.randint(1,300)
            ws[f'D{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_name=sheet_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, index=False)
            print(f"销售记录_{sale_user}.xlsx 文件创建完成,参见:{new_file_path}")

    except Exception as e:
        print(e)


def main():
    """ 主函数 """
    save_path =  r'F:\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()

二,相关截图

相关推荐
DevOps老兵18 小时前
AI训练师二级03:数据挖掘代码题怎么拆,从一份数据挖出业务价值
数据挖掘·pandas·人工智能训练师·老计聊技术·ai训练师二级
quantdash_cc1 天前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
郝学胜-神的一滴1 天前
AI 编程智能体 09:零门槛调用教程
人工智能·数据分析·自动化·numpy·pandas·量化投资
gCode Teacher 格码致知2 天前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
benchmark_cc2 天前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
烂蜻蜓2 天前
Pandas入门教程(六):数据读写详解——CSV、JSON、Pickle 与格式选型
json·pandas
benchmark_cc4 天前
实时行情和分钟 K 线应该如何配合使用?从信号计算到交易决策的完整分析
大数据·python·数据分析·pandas·量化交易·股票数据·quantdash
quantdash_cc4 天前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
烂蜻蜓4 天前
Pandas入门教程(四):Series数据结构——创建、索引与常用方法
数据结构·pandas
benchmark_cc4 天前
量化项目启动时,应该先设计数据接口还是先编写策略?从系统架构角度做出正确选择
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash