- 记一次xlrd使用取值错误方法,办法解决
- 使用xlrd模块读取excel某行数据,改行数据显示对应数据类型以及(XF:15)等,无法直接使用。
-
测试数据如下:
- 错误方法:
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
Blog:
- 简书:https://www.jianshu.com/u/ec81abf35751
- CSDN:https://blog.csdn.net/qq_21238607
- 微信公众号:rzbbzr