前言:
目前小伙伴们对“python学生成绩管理系统tkinter界面”大约比较关怀,我们都想要分析一些“python学生成绩管理系统tkinter界面”的相关文章。那么小编同时在网络上收集了一些关于“python学生成绩管理系统tkinter界面””的相关内容,希望看官们能喜欢,看官们一起来学习一下吧!之前只是因为要参加比赛发布的作品,居然有朋友在求代码,今天改良了一下,加入了tkinter的窗口控制,更加方便的获取文件路径,顺便打包成了exe文件,让组内其他老师不用安装Python也可以使用。
代码如下:
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("提示","分数已填入")
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。