Python xlrd读取excel单元格值出现(XF:15)问题解决

  • 记一次xlrd使用取值错误方法,办法解决
  • 使用xlrd模块读取excel某行数据,改行数据显示对应数据类型以及(XF:15)等,无法直接使用。
  • 测试数据如下
    Python xlrd读取excel单元格值出现(XF:15)问题解决_第1张图片
  • 错误方法
import xlrd


wbook = xlrd.open_workbook('test2.xls', formatting_info=True)
xsheet = wbook.sheet_by_index(0)
print(xsheet.row(0))
  • 读取结果
    • 使用xsheet.row(0)取第一行全部单元格的值,由结果可见会打印出各个单元格的数据类型以及格式
[number:1.0 (XF:15), empty:'' (XF:15), text:'b' (XF:62), number:11.0 (XF:15)]
  • 初步个人解决方法

    • 使用正则,提出数据类型部分(即number,empty等)
    • 使用下标切片,删除数据格式部分(如:XF:62,XF:15)
    • 方法比较蠢笨,而且容易出错,后经大佬指点,是由于xlrd模块不熟悉导致,取值方法使用错误。
  • 解决办法

    • 经论坛大佬帮忙解答,由于本人xlrd模块不熟悉导致,取值方法使用错误。
    • xsheet.cell_value(rowx,colx):取指定单元格的值
    • xsheet.nrows:有效行数
    • xsheet.ncols:有效列数
    • xsheet.row_values(0):指定行的值,返回list
    • xsheet.col_values(0):指定列的值,返回list
    • xsheet.cell_type(rowx,colx):指定单元格的数据类型(0:empty,1:str,2:number,3:date,:boolean)
print(xsheet.row(0))
# 输出:[number:1.0 (XF:15), empty:'' (XF:15), text:'b' (XF:62), number:11.0 (XF:15)]
print(xsheet.nrows)
# 输出:1
print(xsheet.ncols)
# 输出:4
print(xsheet.cell_value(0,0))
# 输出:1.0
print(xsheet.row_values(0))
# 输出:[1.0, '', 'b', 11.0]
print(xsheet.col_values(0))
# 输出:[1.0]
print(xsheet.cell_type(0,0))
# 输出:2

你可能感兴趣的:(#,菜鸡爬坑录)