龙空技术网

Python实现学生成绩分析自动化(第2版)

panda mini 650

前言:

目前小伙伴们对“python学生成绩管理系统tkinter界面”大约比较关怀,我们都想要分析一些“python学生成绩管理系统tkinter界面”的相关文章。那么小编同时在网络上收集了一些关于“python学生成绩管理系统tkinter界面””的相关内容,希望看官们能喜欢,看官们一起来学习一下吧!

之前只是因为要参加比赛发布的作品,居然有朋友在求代码,今天改良了一下,加入了tkinter的窗口控制,更加方便的获取文件路径,顺便打包成了exe文件,让组内其他老师不用安装Python也可以使用。

不需要安装其他文件,打开即可在window电脑使用

按提示顺序打开文件

运行完毕也会有提示

代码如下:

import tkinter as tkfrom tkinter import filedialogimport pandas as pdimport xlwings as xwimport openpyxl as vbimport osfrom tkinter import messageboxroot = tk.Tk()root.withdraw()app = xw.App(visible=False,add_book=False)#获取文件路径messagebox.showinfo("提示","请打开:适学网数据文件")path_in = filedialog.askopenfilename()messagebox.showinfo("提示","请打开:分析表(物理备课组)")path_out = filedialog.askopenfilename()try:# 清除目标数据    wb_out = app.books.open(path_out)    wh_out = wb_out.sheets['数据']    wh_out['B2:S54'].value = ''      #  或者 sh_out['B2:S54'].clear()    wb_out.save()# 提取来源数据,将总分按班级保存到对应工作表    wb_in = app.books.open(path_in)    wh_in = wb_in.sheets['学生小题成绩']    values = wh_in.range('A1').options(pd.DataFrame,header=1,index=False,expand='table').value    values = values.groupby('班级')    wb_temporary = app.books.add()    for idx , group in values:        wh_temporary = wb_temporary.sheets.add(idx)        wh_temporary['A1'].options(index=False).value = group['总分']        wh_temporary.autofit()    wb_temporary.save(r'D:\临时班级总分表.xlsx')    wb_temporary.close()    # 清除0分    wb_new = vb.load_workbook(r'D:\临时班级总分表.xlsx')    wh_new = wb_new.worksheets    for i in wh_new:        for j in i:            for k in j:                if k.value == 0 :                    k.value = ' '    wb_new.save(r'D:\临时班级总分表.xlsx')    wb_new.close()    # 把分数写入汇总表    wb_temp = app.books.open(r'D:\临时班级总分表.xlsx')    k =2        #  目标工作表的列号从第2列开始    for i in range(18,-1,-1):       # 按顺序取18到0作为工作表的序号,用来打开对应班级的工作表        wh_temp = wb_temp.sheets[i]        row_num = wh_temp['A1'].expand('table').last_cell.row       # 获取数据区域的最大行号        column = chr(63 + k)        # 将k的数值换成对应的列号        for j in range(2,row_num+1):        # 遍历数据区域的所在列的单元格            wh_out.range('{}{}'.format(column,j)).value = wh_temp.range('A{}'.format(j)).value      # 将对应数据写入目标区域对应的单元格        k = k +1        # 列数字加1,让另一个班的数据写入下一列中    wb_out.save()    wb_out.close()    wb_temp.close()    os.remove(r'D:\临时班级总分表.xlsx')finally:    app.quit()messagebox.showinfo("提示","分数已填入")

标签: #python学生成绩管理系统tkinter界面