• Python+xlrd:实现Excel文件内容读取(全文件or指定sheet页)


    一、xlrd常用方法简述:

    代码示例方法释义
    book = xlrd.open_workbook(xlsx_path)实例化工作簿对象 book
    sheet_num = book.nsheets获取当前文件的sheet页码(总页数)
    sheet = book.sheet_by_index(2)通过页码下标,实例化 第三页页码表格 对象
    sheet = book.sheet_by_index(2).name通过sheet页下标,获取第三个sheet页的名称
    value = sheet.row_values(2)获取sheet页指定第三行的数据

    二、封装代码实现如下:

    import xlrd
    
    def read_excel_data(sheet_page_paramas):
        """
        使用 xlrd 读取 excel 文件内容
        1、sheet_page_paramas:传入 string 类型的 "all" ,表示读取所有sheet的数据
        2、sheet_page_paramas:传入 list 类型的 [1,3],表示仅读取第二页和第四页的数据
        """
        # 准备一个空列表,用来存储文件读取的数据
        data_list = []
        # .open_workbook():固定方法,读取传入的目录文件
        xlsx_path = r"./你的excel文件路径.xlsx"
        # 实例化工作簿对象 book
        book = xlrd.open_workbook(xlsx_path)
        # .nsheets 方法:获取当前文件的的sheet页数量
        sheet_num = book.nsheets
        print(f"当前Excel文件,共有 {sheet_num} 页\n")
        # 传入的sheet页码参数为:all 时,表示需要读取所有sheet页的数据
        if sheet_page_paramas == "all":
            for i in range(sheet_num):
                # 通过页码下标,实例化 对应页码表格 对象
                sheet = book.sheet_by_index(i)
                sheet_name = sheet.name
                print(f">>>>>>>>>>>>>>>>>> 正在读取第{i + 1}个sheet,名为《{sheet_name}》的数据 <<<<<<<<<<<<<<<<<<")
                # 循环遍历 sheet 页的每一行数据
                for norw in range(1, sheet.nrows):
                    # 读取 excel 指定行的数据
                    value = sheet.row_values(norw)
                    # 将读取的数据,存储于空列表 data_list[] 中
                    data_list.append(value)
                    print(f"当前读取第 {norw} 行的数据,数据内容为:\n{value}\n")
                # 循环结束后,返回存储测试用例的列表 data_list[]
            return data_list
        elif isinstance(sheet_page_paramas, list):
            for i in list(sheet_page_paramas):
                if 0 <= i <= sheet_num:
                    # .sheet_by_index(下标):实际页码下标为传入的页面 -1
                    sheet = book.sheet_by_index(i)
                    sheet_name = sheet.name
                    print(f">>>>>>>>>>>>>>>>>> 正在读取第{i + 1}个sheet,名为《{sheet_name}》的数据 <<<<<<<<<<<<<<<<<<")
                    # 循环遍历sheet页的每一行数据
                    for norw in range(1, sheet.nrows):
                        value = sheet.row_values(norw)
                        # 将读取的数据,存储于空列表 data_list[] 中
                        data_list.append(value)
                        print(f"当前读取第 {norw} 行的数据,数据内容为:\n{value}\n")
                else:
                    raise IndexError(f"传入的sheet页码:{i},超过最大页码:{sheet_num}")
                    # 循环结束后,返回存储测试用例的列表 data_list[]
            return data_list
        else:
            raise TypeError(f"传入的excel_sheetpages数据类型错误,应为list或者指定string参数->all,\n目前入参类型为::{type(sheet_page_paramas)}")
    
    if __name__ == '__main__':
        # print("控制台输出Excel文件全sheet页数据:\n",read_excel_data("all"))
        print("控制台输出指定页码数据:\n",read_excel_data([1]))
    
    
    
    """ 以下为代码执行结果:"""
    /opt/homebrew/bin/python3.9 
    
    当前Excel文件,共有 2>>>>>>>>>>>>>>>>>> 正在读取第2个sheet,名为《成绩表》的数据 <<<<<<<<<<<<<<<<<<
    当前读取第 1 行的数据,数据内容为:
    ['语文', '张三', 99.0]
    
    当前读取第 2 行的数据,数据内容为:
    ['数学', '李四', 55.0]
    
    当前读取第 3 行的数据,数据内容为:
    ['英语', '王五', 70.0]
    
    控制台输出指定页码数据:
     [['语文', '张三', 99.0], ['数学', '李四', 55.0], ['英语', '王五', 70.0]]
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
  • 相关阅读:
    多目标蚂蚁狮子优化算法(MOALO)(Matlab代码实现)
    06 MyBatis缓存
    单目标追踪——【评测工具】Ubuntu20.04的Python版本的VOT评测工具
    迫于生活压力,刚毕业转行3D游戏建模能不能行
    防火墙nat实验
    搭建RabbitMQ消息服务,整合SpringBoot实现收发消息
    测试记录-提测规范
    视频监控/视频汇聚/视频云存储EasyCVR平台接入华为ivs3800平台提示400报错,该如何解决?
    企业快速构建可落地的IT服务管理体系的五大关键点
    聊聊对RPC的理解
  • 原文地址:https://blog.csdn.net/J_____Q/article/details/127134231