1、导入xlrd库,打开文件并查看文件的表名
import xlrd # 导入xlrd库
xls_name = input('请输入需要查找的xlsx文件名:') # 自定义输入需要查找的文件名,不用输入拓展名
if not xls_name.endswith('.xlsx'):
xls_name += '.xlsx'
wb = xlrd.open_workbook(xls_name) # 将文件打开
print('此文件中有'+str(wb.nsheets)+'个表,分别是:',end=' ') # 输出此文件中有多少个表
print(wb.sheet_names()) # 输出表的名称
2、输入表名或序号进入表(sheet)
# 打开文件
# 第一种:按文件序号查找,序号从1开始
a_index = int(input('请输入需要查找表的序号:'))
sheet_1_index = wb.sheet_by_index(a_index-1) # 将打开的文件赋值进sheet_1_index函数中
# print(sheet_1_index) # 查看此表的序号和名称
# # 第二种:按文件名称查找
b_name = input('请输入需要查找表的名称:')
sheet_2_name = wb.sheet_by_name(b_name) # # 将打开的文件赋值进sheet_2_name函数中
# # print(sheet_2_name) # 查看此表的序号和名称
展示选择的表第一行的名称
course_List = sheet_1_index.row_values(0) # 展示第一行的选项,赋值进course_List
3、定义选择函数各选项
def choose1():
# 以第一种为例
print(course_List[2:]) # 输出课程选项,[0,1,2],课程是从2开始的
course = input("请输入需要展示的课程名:") # course是列表course_List中的课程名称
m = course_List.index(course) # m是课程在course_List中的序号
# print(m)
col_Value_List = sheet_1_index.col_values(m) # 返回该列中所有单元格的数据组成的列表
col_Name_List = sheet_1_index.col_values(1) # 返回该列中所有单元格的数据组成的列表
print(col_Value_List) # 输出展示该列表数据
# 成绩输出
scoreList = col_Value_List[1:]
max_sum = col_Value_List.index(max(scoreList))
# print(max_sum)
max_name = col_Name_List[max_sum]
min_sum = col_Value_List.index(min(scoreList))
min_name = col_Name_List[min_sum]
print('最高分 ' + max_name + ':' + str(int(max(scoreList))))
print('最低分 ' + min_name + ':' + str(int(min(scoreList))))
print('平均分 ', sum(scoreList) / len(scoreList))
# 通过姓名:查询学生某一学生学号和全部成绩
def choose2():
students_name_list = sheet_1_index.col_values(1) # 总列表的第2列为姓名列,创建学生姓名列表
print('总共有' + str(len(students_name_list[1:])) + '个学生,分别是:', end=' ') # 输出一共有多少个学生
print(students_name_list[1:]) # 输出学生姓名
student_name = input('请输入查看学生的姓名:') # 定义学生姓名输入的函数
num = students_name_list.index(student_name) # num是学生姓名列表的index[*] *为0,1,2,3,4··· 即num为姓名列表的序号,从0开始
student_score = sheet_1_index.row_values(num) # 学生成绩student_score是按序号查到的表的整个表的第row_values(num)整行,生成一个列表,但是不输出整行,只需要输出成绩和学号
print(course_List[0] + ':' + str(int(student_score[0])), end='\n') # 只输出学生[0]序号的学号
for i in range(len(course_List[2:])): # 0,1,2 [2]和后面的都是课程,len(course_List[2:]),计算学生成绩的长度,i是0,1,2,3···继续的
print(course_List[i + 2] + ':' + str(int(student_score[i + 2]))) # 所以course_List[i+2],输出要用i+2序号才对应的是成绩
# 通过学号:查询学生某一学生学号和全部成绩
def choose3():
students_id_list = sheet_1_index.col_values(0) # 创建学生学号列表
print(students_id_list)
student_id = float(input('请输入查看学生的学号:') + '.0')
num = students_id_list.index(student_id)
student_score = sheet_1_index.row_values(num)
print(course_List[1] + ':' + student_score[1], end='\n')
for i in range(len(course_List[2:])):
print(course_List[i + 2] + ':' + str(int(student_score[i + 2])))
4、定义主函数 并执行主函数
def main():
print('*' * 20 + '菜单' + '*' * 20, end=' ')
print('''
1、查看选择的科目和学生科目成绩
2、通过姓名:查询学生某一学生学号和全部成绩
3、通过学号:查询学生某一学生学号和全部成绩
4、向表中某增添数据
''') # 展示用户选项
while(True):
choose = int(input('请输入你的选择:')) # 定义选项的函数
if choose == 1:
choose1()
elif choose == 2:
choose2()
elif choose == 3:
choose3()
# elif choose == 4:
# choose4()
else:
a = input('是否确定退出程序Y/N')
if a == 'Y' or 'y':
break
else:
print('输入无效,请重新选择')
main() # 执行主函数