xlrd库的使用:打开并查看、显示工作表的内容

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()  # 执行主函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值