Test_dada 发表于 2020-11-19 15:11

【记录贴】从Excel获取数据驱动时object of type 'float' has no len()错误处理

前言:
         做自动化时,需要在Excel获取账号密码登录;但是账号获取成功,密码获取失败
出现object of type 'float' has no len()错误(重点:密码为纯数字)


出错部分代码:
name_value = DoExcel.ReadExcel('TestData.xlsx', 'Sheet1').getExcelValue(7, 0)
pwd_value = DoExcel.ReadExcel('TestData.xlsx', 'Sheet1').getExcelValue(7, 1)
jurl = DoExcel.ReadExcel('TestData.xlsx', 'Sheet1').getExcelValue(7, 2)

其中:pwd_value参数获取会报错

解决代码:
name_value = DoExcel.ReadExcel('TestData.xlsx', 'Sheet1').getExcelValue(7, 0)
pwd_value = int(DoExcel.ReadExcel('TestData.xlsx', 'Sheet1').getExcelValue(7, 1))
url = DoExcel.ReadExcel('TestData.xlsx', 'Sheet1').getExcelValue(7, 2)

后言:
从excel读取的数字会默认为flost(浮点型),需要转换为整形int
例如Excel保存密码是123456,读取出来却为:123456.0(浮点型)
所以在读取出来后,定义好数据类型就可以解决此问题了。

Loker 发表于 2020-11-19 16:52

密码不应该是字符串型的吗?密码长度再长一点你的int也会报错吧。。。

Test_dada 发表于 2020-11-19 18:02

Loker 发表于 2020-11-19 16:52
密码不应该是字符串型的吗?密码长度再长一点你的int也会报错吧。。。

Excel里修改单元格格式保存,有时保存不成功(常规、数值、文本,这三种格式进行切换保存);使用sheetName.cell(rownum, colnum).ctype    获取单元格数据类型,Excel切换一个格式就执行一次,最后发现当格式是常规或数值时你可以看到运行后类型是2,当切换文本时 结果还是2,关闭Excel会提示你保存,这时保存了再执行类型才会是1。
注:ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
页: [1]
查看完整版本: 【记录贴】从Excel获取数据驱动时object of type 'float' has no len()错误处理