Python 之 Excel表格的读写操作
发布日期:2021-07-01 03:59:44 浏览次数:2 分类:技术文章

本文共 1990 字,大约阅读时间需要 6 分钟。

近来,博主需要统计学生的加权平均成绩,由于每个人的培养方案不同,导致数据十分复杂,难以用Excel来处理,因此博主使出“朋友”大法。

准备:

留坑待填

思路:

思路如下:

① 给P的课程、未修的课程以及未录入成绩的课程不计入加权平均的计算

② 先列后行(一行一人)
③ 检测有效数据,然后累加

伪代码:

for循环{    if 单元格数据==数字    		学分累加    		学分成绩积累加    if 学分和==0    		学分和=1 #规避分母为0的情况}

代码:

"""    Name : 成绩统计程序    Author : Jack Soong    Version : V1.0    Created on: 2019 - 09 - 10    Description :                需提前对excel表格进行预处理,表格中的科目不含选修课,需要处理的表格命名为test.xls,预处理模板参见test.xls    环境:python 3.7   windows 10    依赖包:xlrd、xlwt、xlutils"""# -*- coding: utf-8 -*-import xlrd,xlwtfrom xlutils.copy import copydef main(fileName):    rd_data = xlrd.open_workbook(fileName,formatting_info=True, on_demand=True)    wd_data = copy(rd_data) # 完成xlrd对象向xlwt对象转换    sheet = rd_data.sheets()[0]    nrows = sheet.nrows # 表格行数    ncols = sheet.ncols # 表格列数    print('对应sheet中行数:%d行,列数:%d列'% (nrows,ncols))    for num_i_ in range(2,nrows):        credit_sum = 0  # 有效学分总和        score_sum = 0   # 学分成绩和        GPA = 0         # 绩点        print('-----------------------' +  str(sheet.cell(num_i_,1).value) +  '---------------------------')        #  0. empty(空的),1 string(text), 2 number, 3 date, 4 boolean, 5 error, 6 blank(空白表格)        for num_j_ in range(3, ncols-3):            # 只处理有有效分数的成绩            if sheet.cell_type(num_i_,num_j_)==2:   # 判断是否为有效分数                score_sum = score_sum + (sheet.cell_value(num_i_,num_j_)) * (sheet.cell_value(1,num_j_))               # print(score_sum)                credit_sum = credit_sum + (sheet.cell_value(1,num_j_))        if credit_sum == 0:            credit_sum = 1        GPA = score_sum / credit_sum        print('加权平均分:' + str(GPA))        print('总学分:' + str(credit_sum))        wd_data.get_sheet(0).write(num_i_,ncols - 3, credit_sum)        wd_data.get_sheet(0).write(num_i_, ncols - 2, GPA)        wd_data.save('test_end.xls')    # 保存的文件名称if __name__ == '__main__':    main('test.xls')    print('--------------------------------------------------------')    print('运行完毕,请在程序目录下查看test_end.xls文件!')

测试结果:

在这里插入图片描述

在这里插入图片描述

转载地址:https://miracle.blog.csdn.net/article/details/100704788 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:算法 - 局部最优的避免
下一篇:OpenCV3 之 XML和YAML文件的输入输出

发表评论

最新留言

不错!
[***.144.177.141]2024年04月18日 01时43分12秒