zoukankan      html  css  js  c++  java
  • python-读取excel(xlrd)

    一、安装xlrd模块

    二、常用方法

    1、导入模块

    import xlrd

    2、打开文件

    x1 = xlrd.open_workbook("testCase.xlsx")

    3、获取sheet

    print('sheet_names:', x1.sheet_names())  # 获取所有sheet名字
    print('sheet_number:', x1.nsheets)       # 获取sheet数量
    print('sheet_object:', x1.sheets())      # 获取所有sheet对象
    print('By_name:', x1.sheet_by_name("case")) # 通过sheet名查找
    print('By_index:', x1.sheet_by_index(0))  # 通过索引查找

    输出:

    sheet_names: ['case']
    sheet_number: 1
    sheet_object: [<xlrd.sheet.Sheet object at 0x10a244a58>]
    By_name: <xlrd.sheet.Sheet object at 0x10a244a58>
    By_index: <xlrd.sheet.Sheet object at 0x10a244a58>

    4、获取sheet的汇总数据

    sheet1 = x1.sheet_by_name("case")
    print("sheet name:", sheet1.name)   # get sheet name
    print("row num:", sheet1.nrows)  # get sheet all rows number
    print("col num:", sheet1.ncols) # get sheet all columns number

    输出:

    sheet name: case
    row num: 6
    col num: 4

    5、单元格批量读取

    行操作:

    print(sheet1.row_values(0)) # 获取第一行所有内容,合并单元格,首行显示值,其它为空。
    print(sheet1.row(0))         # 获取单元格值类型和内容
    print(sheet1.row_types(0))  # 获取单元格数据类型

    输出:

    ['用户ID', '积分', '下发原因', '部门']
    [text:'用户ID', text:'积分', text:'下发原因', text:'部门']
    array('B', [1, 1, 1, 1])

    列操作:

    print(sheet1.row_values(0, 1, 3))   # 取第1行,第1~3列(不含第3列)
    print(sheet1.col_values(0, 0, 5))    # 取第1列,第0~5行(不含第5行)
    print(sheet1.row_slice(2, 0, 2))     # 获取单元格值类型和内容,同sheet1.row(0)
    print(sheet1.row_types(1, 0, 2))   # 获取单元格数据类型

    输出:

    ['积分', '下发原因']
    ['用户ID', '1611504', '1611504', '1611504', '1611504']
    [text:'1611504', text:'0']
    array('B', [1, 1])

    6、特定单元格读取

    # 取值
    print(sheet1.cell_value(1, 2))
    print(sheet1.cell(1, 2).value)
    print(sheet1.row(1)[2].value)
    #取类型
    print(sheet1.cell(1, 2).ctype)
    print(sheet1.cell_type(1, 2))
    print(sheet1.row(1)[2].ctype)

    输出:

    返现
    返现
    返现
    1
    1
    1

    7、(0,0)转换A1

    print(xlrd.cellname(0, 0))  # (0,0)转换成A1
    print(xlrd.cellnameabs(0, 0)) # (0,0)转换成$A$1
    print(xlrd.colname(30))  # 把列由数字转换为字母表示

    输出:

    A1
    $A$1
    AE
    8、数据类型:
    • 空:0
    • 字符串:1
    • 数字:2
    • 日期:3
    • 布尔:4
    • error:5
    # 导入模块
    import xlrd
    # 读取到excel文件
    data = xlrd.open_workbook("student.xlsx")
    # 获取列表
    table = data.sheet_by_index(0)
    # 获取所有的行数
    nrows = table.nrows
    # 获取所有的列数
    ncols = table.ncols
    
    # 获取第一行的数据
    first_row_name_list = table.row_values(0)
    print(first_row_name_list)
    
    # 定义一个列表保存所有行的数据
    info_list = []
    # 遍历所有行
    for rownum in range(1, nrows):
        # 获取
        row = table.row_values(rownum)
        # 如果row有数据
        if row:
            info_list.append(row)
    print(info_list)

  • 相关阅读:
    排序算法对比,步骤,改进,java代码实现
    OracleJDK与OpenJDK的区别和联系
    C++函数中那些不可以被声明为虚函数的函数
    编码实现环状单向链表(尾指针直接指向头指针,中间没有空节点),去除连续的重复元素的操作。
    大华2014校园招聘面试题链式存储串的连接操作
    线性表可用顺序表或链表存储的优缺点
    豆瓣面试题strstr)
    百度2014校园招聘消除嵌套的括号
    Wireshark基本介绍和学习TCP三次握手(转载)
    据说是淘宝面试题“给定一个数组将大于0的放在最右边,等于0的放在中间,大于0的放在最左边”
  • 原文地址:https://www.cnblogs.com/peiya/p/12054409.html
Copyright © 2011-2022 走看看