xlrd的学习记录

xlrd的基础语法

import xlrd
from datetime import date


def read_xlrd():
    # 打开Excel文件读取数据
    data = xlrd.open_workbook('D:\\python3\\项目\\xlwt\\test2.xls', formatting_info=True)
    # 添加formatting_info = true,其默认值为false,保证能调出merge_cells值不为0

    # 获得所有sheet名称,并打印输出
    sheet_name = data.sheet_names()
    print(sheet_name)

    # 根据下标获取sheet名称
    sheet1_name = data.sheet_names()[0]
    print(sheet1_name)

    # 根据索引获得sheet内容,如sheet名称、有效行数、有效列数
    sheet2 = data.sheet_by_index(0)
    print('sheet2的名称:{}\nsheet2的行数:{}\nsheet2的列数:{}'.format(sheet2.name, sheet2.ncols, sheet2.nrows))

    # 根据名称获得sheet内容
    sheet3 = data.sheet_by_name('Sheet1')
    print('sheet3的名称:{}\nsheet3的行数:{}\nsheet3的列数:{}'.format(sheet3.name, sheet3.ncols, sheet3.nrows))

    # 获取sheet整行的值
    a = sheet2.row_values(3)
    print(a)
    # 整列的值
    print(sheet2.col_values(3))

    # 获得指定单元格内容
    print(sheet2.cell(1, 1).value)
    print(sheet2.row(1)[1].value)
    print(sheet2.cell_value(1, 1))

    # 获得指定单元格数据类型
    # 说明:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
    print(sheet2.cell(1, 1).ctype)

    # 获得单元格内容为日期的内容,运用xldate_as_tuple处理date格式
    sheet4 = data.sheet_by_name('123')
    print(sheet4.cell(5, 5).value)  # 错误,调出的不是日期而是浮点数
    if sheet4.cell(5, 5).ctype == 3:  # 判断单元格数据格式为日期
        date_value = xlrd.xldate_as_tuple(sheet4.cell(5, 5).value, data.datemode)
        print(date_value)
        print(date(*date_value[:3]))
        print(date(*date_value[:3]).strftime('%y/%m/%d'))

    # 获取单元格为number的信息(转为整型)
    print(sheet4.cell(5, 6).value)  # 错误调出
    if sheet4.cell(5, 6).ctype == 2:  # 判断单元格数据类型为number
        num_value = int(sheet4.cell(5, 6).value)
        print(num_value)

    # 获取合并单元格内容,调用merged_cells
    print(sheet2.merged_cells)
    # merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range),其中[row,row_range)包括row,不包括row_range,col也是一样,下标从0开始。
    # 即(1,5,2,6)中是合并1到4行,2到5列
    # 只能获取合并单元格的第一个cell的行列索引,才能读到值,读错了就是空值
    print(sheet2.cell(0, 0).value)  # 正确
    print(sheet2.cell_value(0, 2))  # 空值
    # 则只需要获取merge_cells返回row,col的低位索引即可
    merge_value = []
    for (row, row_range, col, col_range) in sheet2.merged_cells:
        merge_value.append((row, col))
    print(merge_value)
    for index in merge_value:
        print(sheet2.cell(index[0], index[1]).value)  


if __name__ == '__main__':
    read_xlrd()

错误总结

1、命名错误
描述:直接把项目名称设置为xlrd.py报错
错误一
解决办法:修改名称
原因:创建的py文件名叫 xlrd.py ,屏蔽了真正的xlrd,这样导致在文件中找不到open_workbook方法
2、紧接1后继续报错
No such file or directory: ‘test1.xls’
错误二
原因:1、可能路经错误。2、xxx.xls格式不对
解决办法:
解1

你可能感兴趣的:(python,python,excel)