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

二,相关截图

相关推荐
沪漂阿龙1 天前
深入浅出 Pandas apply():从入门到向量化思维
人工智能·python·pandas
沪漂阿龙1 天前
深度解析Pandas数据组合:从concat到merge,打通你的数据处理任督二脉
python·数据分析·pandas
哈伦20191 天前
Python 生成随机数
python·机器学习·pandas
大数据魔法师2 天前
云南省天气数据可视化分析大屏的设计与实现(二)- 云南省各城市天气数据预处理
python·mysql·pandas
Hello.Reader2 天前
Apache Arrow 在 PySpark 中的使用提速 Pandas 转换与 UDF 的关键武器
apache·pandas
Hello.Reader2 天前
Pandas API on Spark 配置选项系统、默认索引与性能调优
大数据·spark·pandas
Python大数据分析@3 天前
Pandas相比Excel的优势是哪些?
excel·pandas
Hello.Reader4 天前
Pandas API on Spark 快速入门像写 Pandas 一样使用 Spark
大数据·spark·pandas
白日与明月7 天前
Pandas 读取文本数据 (Text I/O) 速查表
爬虫·python·pandas
一晌小贪欢8 天前
Python办公自动化指南:Pandas与Openpyxl的全面比较与选择
开发语言·python·pandas·python基础·python入门·python小白