笔者个人觉得Excel是比较完美的,改进了CSV不支持中文的情况,好的,看一下我们的例子:
在Selenium使用Excel读取数据的话我们是需要下载Excel库文件的,即xlrd文件,下载链接:https://pypi.python.org/pypi/xlrd
下载完成解压,在当前目录cmd,输入python setup.py install即可安装成功,也可以直接cmd,输入pip命令:pip install xlrd
安装完成后,直接导入xlrd即可使用相关操作Excel的方法:
- import xlrd
- my_file = xlrd.open_workbook('Testing.xls')#得到文件
- table = my_file.sheets()[0]#得到sheet页
- nrows = table.nrows #总行数
- ncols = table.ncols #总列数
- i = 0
- while i < nrows:
- print table.row_values(i)[0], table.row_values(i)[1]
- i = i+1
结果:
OK,Excel能够解决中文的问题,但是此处需要注意,不能直接读取整行的数据,只能将数据分开一个一个的读取,例如以上代码换成下面这样:
- while i < nrows:
- print table.row_values(i) #读取整行
- i = i+1
结果就会出现编码问题:
可能大家还注意到了,这里第二列的数字1990,在Selenium就变成了浮点型数字1999.0,之前看过一个解决办法是在Excel文档中,选中单元格,右键单元格格式——>文本.但是笔者发现这样并不能解决问题,至于数字目前笔者的解决办法是代码判断,如果是纯数字就转化为int型。
- while i < nrows:
- cell = table.row_values(i)[1] #得到数字列数据
- ctype = table.cell(i, 1).ctype #得到数字列数据的格式
- if ctype == 2 and cell % 1 == 0: #判断是否是纯数字
- cell = int(cell) #是纯数字就转化位int类型
- print table.row_values(i)[0], cell
- i = i+1
接下来我们再看结果:
OK,这下圆满啦。
*注意:
1.csv或者excel格式的文件在最初设置数据的时候都要右键——>单元格格式——>文本
2.excel文件的格式必须是后缀名为*.xls
3.excel文档的ctype 分为5种,对应分别是:
empty: 0
string: 1
number:2
date: 3
boolean :4
error:5
来源: https://www.2cto.com/kf/201709/682910.html