Python对Excel文件进行多行求和并将结果排序输出前三

当前目录下有一个xlxsx工作簿,第一列为学生姓名,第二列到第四列为学生的课程成绩,编写程序计算每名学生的总分,并输出排名前三的学生姓名

Python对Excel文件进行多行求和并将结果排序输出前三_第1张图片

我主要使用openpyxl方法进行编程,但是还是用了一点pandas

这两个模块都需要下载

1.用户可以在编译器终端处或者在Windows系统中进入控制台界面

2.输入 pip list 查看自己是否安装了相应的第三方库,如果是Python 3.x则是 pip3 list

3.如果查看没有安装就需要手动安装,命令为:pip installopenpyxl 和open installpandas

下面是我的代码

from openpyxl import load_workbook
import pandas as pd
wb = load_workbook("grade.xlsx", data_only=True)  # 获取对象
sheet = wb.active  # 指定表单Sheet1为当前表单
sheet.cell(row=2, column=5).value = '=SUM(B2:D2)'#计算总分
sheet.cell(row=3, column=5, value='=SUM(B3:D3)')
sheet.cell(row=4, column=5, value='=SUM(B4:D4)')
sheet.cell(row=5, column=5, value='=SUM(B5:D5)')
wb.save('grade.xlsx')#运行一次后打开所在文件点击保存后删除这一句再一次运行
for line in sheet.rows:
    for cell in line:
        print(cell.value, ' ', end="")
    print()
df = pd.read_excel('grade.xlsx')
map = dict(zip(df['学生'], df['总分']))#将姓名和成绩加入字典排序
e = sorted(map.items(), key=lambda e: e[1], reverse=True)
print(e)
e1 = []
for i in e:
    e1.append(i[0])
print("前三名为:")
for i in range(0, 3):
    print(e1[i])

 运行时记得关闭xlsx文件,否则会报错,然后运行一次后请把wb.save()删除,打开相应的文件,手动将数据完全保存,并再次运行。这一点也确实麻烦但我没有更好的办法,可能以后会修改的。

下面这个就是没有按照上面所说删除wb.save手动保存数据的效果

下面是遵循上述方法的结果

Python对Excel文件进行多行求和并将结果排序输出前三_第2张图片

 下面是用pandas的非常感谢这位的帮助

Python对Excel文件进行多行求和并将结果排序输出前三_第3张图片

 效果如下

Python对Excel文件进行多行求和并将结果排序输出前三_第4张图片

你可能感兴趣的:(Python,excel)