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()

二,相关截图

相关推荐
Y3815326625 天前
serpbase + Pandas + Jupyter 数据分析实战
jupyter·数据分析·pandas
元Y亨H6 天前
numpy与pandas 的介绍
numpy·pandas
小大宇7 天前
python pandas dataFrame sqlAlchemy案例
python·pandas
chouchuang8 天前
day-040-Pandas可视化与实战
pandas
chouchuang11 天前
day-037-Pandas数据读取
pandas
benchmark_cc12 天前
如何用 Python 进行多周期 K 线合成与时区对齐?基于 QuantDash 与 Pandas 的量化数据清洗实战(附 GitHub 源码)
开发语言·python·github·盯盘·pandas·quantdash·量化数据
梅雅达编程笔记13 天前
零基础学 Python 第14章 | 模块、包与第三方库
开发语言·python·django·numpy·pandas
梅雅达编程笔记14 天前
零基础学 Python 第15章 | 类与对象:面向对象编程入门
开发语言·python·django·numpy·pandas
benchmark_cc14 天前
Python 量化核心基础:前复权、后复权与不复权有什么区别?基于 QuantDash 的数据处理与回测避坑指南
开发语言·python·pandas·量化策略·量化交易·quantdash
人工干智能15 天前
科普:Pandas 索引器 loc 与 iloc 的编程思维
java·人工智能·pandas