统计表格数据小工具 PySimpleGUI 做的界面GUI

import xlrd
import PySimpleGUI as sg


# 拿到每个群所有的业务总数
def qun_number(lst):
    group_list = []
    # 群面去重复
    group = set(lst)
    # -------------------------------
    # 对其数据所用 没有实质用途
    # # 集合转为列表
    # group_list = list(group)
    # len_max = 0
    # for element in group_list:
    #     if len(element) > len_max:
    #         len_max = len(element)
    # max_num = len_max
    # -------------------------------
    # 拿到所有业务总数
    sum_count = len(lst)
    sg.cprint('今天完成' + str(sum_count) + '单', key='-mlt-', text_color='red')
    # 循环拿到每个群  的业务量
    for i in group:
        cha = 8 - int(len(i))   # 只为对齐好看 没有实质用途
        num1 = lst.count(i)
        group_str = i + '-' * cha + str(num1) + '单'
        sg.cprint(group_str)
        group_list.append(group_str)
    return group_list, sum_count


# 获取每个每个人的业务量
def person_number(lst1, lst2, total_list):
    list_1 = []  # 存放便利出来群群名+人名
    list_2 = []  # 存放集合去重后的数据
    for i in range(len(lst1)):
        # 组合群名+人名  添加列表
        list_1.append(str(lst1[i]) + '-' + str(lst2[i]))
        # 的 群名+人名的 唯一值的列表
    all_group = list(set(list_1))  # 集合去除重复
    for j in all_group:
        # 利用函数计数
        num = list_1.count(j)
        str1 = j + '----共' + str(num) + '单'
        list_2.append(str1)
        # list_2 = sorted(list_2)
        # 分级显示 便利结果
    for g in total_list:
        sg.cprint('------------------------------------')
        sg.cprint(g, colors='red')  # 显示一个群的总业务量
        for x in list_2:
            if g.split('-')[0] == x.split('-')[0]:
                sg.cprint(x)  # 显示群里每个人的业务量


# 主函数入口
def main():
    new_file = values['In1']
    if new_file == '':
        sg.cprint('文件目录为空......')
    # 获取工作簿
    work_book = xlrd.open_workbook(new_file)
    # 方法二  拿到指定工作表按名字  注意名字第一个字母大写
    sheet_1 = work_book.sheet_by_name('Sheet1')
    # 获取第一列的所有数据  群名
    group_name = sheet_1.col_values(0)
    # # 获取第二列的所有数据  人名
    name = sheet_1.col_values(1)
    group_str, sum_count = qun_number(group_name)
    person_number(group_name, name, group_str)


sg.theme('GrayGrayGray')  # 设置主题颜色
layout = [
    [sg.T('数 据 汇 总', font=('楷体', 18), pad=((200, 0), (0, 0)))],
    [sg.T('选择文件:'), sg.In(size=(25, 1), key='In1'), sg.FileBrowse(button_text='打开文件')],
    [sg.B('数据统计', button_color='red', pad=((220, 0), (0, 0)))],
    [sg.Multiline(size=(55, 30), key='-mlt-', reroute_cprint=True, do_not_clear=True)],
]
window = sg.Window('汇总', layout, font=('楷体', 14))
while True:
    event, values = window.read()
    if event is None:
        break
    if event == '数据统计':
        window['-mlt-'].update('')
        try:
            main()
        except Exception as e:
            sg.cprint(e)
            sg.cprint('发生未知错误\n检查文件是否为空,格式填写是否正确\n文件是否打开\n电子表格的后缀名必须.xls')
window.close()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

py_way

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值