办公自动化_帮人事做个表格拆分

# coding=utf-8
import pandas as pd
import openpyxl as op
import os
from shutil import rmtree


def groupby_data(data, chaifen, file_a):
    new_data = data.groupby(chaifen)
    print("新文件生成会在程序所在目录下")
    for i in new_data:
        wb_name = '+'.join([str(x) for x in i[0]])
        wb_name = wb_name.replace("/", "&")
        save_excel(wb_name=wb_name, data=i[1], file=file_a)


def save_excel(wb_name, data, file):
    excel_file = file + "\\" + wb_name + '.xlsx'
    data.to_excel(excel_file,
                  encoding='utf-8',
                  startrow=0,
                  startcol=0,
                  index=False)
    print("文件[%s]已生成" % excel_file)


def get_excel(file, header=0, sheet_name=0, skip_head=None, skip_foot=0):
    data = pd.read_excel(file,
                         sheet_name=sheet_name,
                         header=header,
                         skiprows=skip_head,
                         skipfooter=skip_foot)
    return data


def select_sheet_name(file):
    wb = op.load_workbook(file)
    sheet_name = wb.sheetnames
    print("如果表名大于一个,则说明存在隐藏表,故输入相应表名即可\n", sheet_name)


if __name__ == "__main__":
    try:
        a = r"C:\Users\78563\Desktop\拆分结果"
        if os.path.isdir(a) is False:
            os.mkdir(a)
        file = input("请输入文件地址:")
        select_sheet_name(file)
        sheet_name = input("请选择表:")
        skip_head = int(input("跳过头几行:"))
        skip_foot = int(input("跳过尾几行:"))
        data = get_excel(file=file,
                         header=None,
                         sheet_name=sheet_name,
                         skip_head=skip_head,
                         skip_foot=skip_foot)
        excel_file = r'D:\备份.xlsx'
        data.to_excel(excel_file,
                      encoding='utf-8',
                      startrow=0,
                      startcol=0,
                      index=False)

        data = get_excel(excel_file, header=0, sheet_name=0)
        chaifen = []
        print("输入666则开始筛选")
        while True:
            col_name = int(input("请输入要进行拆分的列序号(默认从1开始):"))
            col_name -= 1
            if col_name == 665:
                break
            chaifen.append(col_name)
            print(chaifen)
        groupby_data(data=data, chaifen=chaifen, file_a=a)
    except FileNotFoundError:
        print("文件存储错误")
        rmtree(a)
    except OSError:
        print("文件存储错误")
        rmtree(a)
    else:
        print("程序执行完毕")
    finally:
        os.remove(excel_file)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值