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

21 篇文章 0 订阅
2 篇文章 0 订阅

一、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
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值