**大学数学与信息工程学院
《Python程序设计》 实验报告
实验名称: 班 级: 实验地点: 实验14 Excel文件操作 姓 名: 日 期: 一、实验目的: [实验目的和要求] 1、掌握Python中使用第三方库openpyxl读写Excel文件 2、掌握Excel文件的处理方法 3、掌握知识的综合应用 二、实验环境: 1、计算机,局域网,python软件 三、实验内容和要求:(直接将实验步骤及截图写在题目下面,结果必须截图) 1、假设有个Excel 2007文件“电影导演演员.xlsx”,其中有三列分别为电影名称、导演和演员列表(一个导演可以执导多部电影,一部电影只有一个导演执导),现在要求统计每个导演执导的电影分别是哪些。并按照执导电影个数从多到少排序。 代码: import openpyxl from openpyxl import Workbook def getdirector(filename): bbk=dict() jjk=openpyxl.load_workbook(filename) oop=jjk.worksheets[0] for index,row in enumerate(oop.rows): if index==0: continue fileName,director=row[0].value,row[1].value.split(' ') for d in director: bbk[d]=bbk.get(d,set())|{fileName} return bbk if __name__=='__main__': bbk=getdirector(r'C:\\Users\\17458\\Desktop\\电影导演演员.xlsx') bbk=sorted(bbk.items(),key=lambda x:len(x[1]),reverse=True) for item in bbk: 学 号: print(item) 2、统计学生总成绩的最高成绩。随机生成20个学生姓名,假设20位学生的姓由'赵钱孙李'四个姓随机生成,名由'一二三四五'随机生成(假设学生姓名可以重复,代表该同学参加过多次考试);以及随机生成每个同学的语文、数学、英语三门课成绩并写入xlsx文件中。然后从中统计出每位同学的最高总成绩并输出。 代码: import openpyxl from random import randint,choice from openpyxl import Workbook wb=Workbook() ws=wb.worksheets[0] ws.append(['姓名','语文','数学','英语','总分']) na='一二三四五' lastNa='赵钱孙李' for i in range(2,22): cell='A'+str(i) ws[cell]=choice(lastNa)+choice(na) for row in range(2,i+1): row=str(row) for col in 'BCD': ws[col+row]=randint(0,100) ws['E'+row]='=sum(B{0}:D{0})'.format(row) wb.save(r'C:\\Users\\17458\\Desktop\\135.xlsx') import openpyxl def getscore(filename): llp=dict() wb=openpyxl.load_workbook(filename,data_only=True) ws=wb.worksheets[0] for index,row in enumerate(ws.rows): if index==0: continue Name,score=row[0].value.split(' '),row[4].value for d in Name: llp[d]=llp.get(d,set())|{score} return llp if __name__=='__main__': d=getscore(r'C:\\Users\\17458\\Desktop\\135.xlsx') for item in d.items(): print(\"学生\"+item[0]+\"的最高总成绩为:\"+str(max(item[1]))) 四、实验结果与分析(实验总结(请将有疑问的题目和自己的答案粘贴此处。可不写)): 五:思考题(必做): 无 六、教师评语: