python excel取列_Python读取Excel数据并根据列名取值

一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了。

最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用过程中读取excel数据相关操作。

一、安装xlrd库

可以下载xlrd库包到本地安装,也可以通过pip命令安装,这里我选择pip命令:

pip install xlrd

二、使用xlrd读取excel数据

具体详细的操作可以参考xlrd库操作说明文档,以下是两种读取excel数据的方法:

1、根据Excel中sheet名称读取数据:

1 defreadExcelDataByName(fileName, sheetName):2 table =None3 errorMsg =None4 try:5 data =xlrd.open_workbook(fileName)6 table =data.sheet_by_name(sheetName)7 exceptException, msg:8 errorMsg =msg9 return table, errorMsg

2、根据Excel中sheet的序号获取:

1 defreadExcelDataByIndex(fileName, sheetIndex):2 table =None3 errorMsg = ""

4 try:5 data =xlrd.open_workbook(fileName)6 table =data.sheet_by_index(sheetIndex)7 exceptException, msg:8 errorMsg =msg9 return table, errorMsg

3、根据列名获取相应序号,由于有时读取excel中列数据时,需要通过列头名称获取相应的列中的值,所以写了下面这个返回列名所在表格中的index。然后就可以直接通过table.cell_value(i, getColumnIndex(table,'列名'))获取列的值。

1 defgetColumnIndex(table, columnName):2 columnIndex =None3

3 for i inrange(table.ncols):5

4 if(table.cell_value(0, i) ==columnName):5 columnIndex =i6 break

7 return columnIndex

下面加入需要读取如下excel表格中的数据,在读取数据时直接根据列名去获取相应的值。

518305-20160513222456702-379851065.png

根据列名读取相应的值,代码如下:

1 #!/usr/bin/python

2 #coding=utf-8

3 __author__ = 'Paul'

4 importxlrd5 importchardet6 importtraceback7 defgetColumnIndex(table, columnName):8 columnIndex =None9 #print table

10 for i inrange(table.ncols):11 #print columnName

12 #print table.cell_value(0, i)

13 if(table.cell_value(0, i) ==columnName):14 columnIndex =i15 break

16 returncolumnIndex17 defreadExcelDataByName(fileName, sheetName):18 #print fileName

19 table =None20 errorMsg = ""

21 try:22 data =xlrd.open_workbook(fileName)23 table =data.sheet_by_name(sheetName)24 exceptException, msg:25 errorMsg =msg26 returntable, errorMsg27 defreadExcelDataByIndex(fileName, sheetIndex):28 table =None29 errorMsg = ""

30 try:31 data =xlrd.open_workbook(fileName)32 table =data.sheet_by_index(sheetIndex)33 exceptException, msg:34 errorMsg =msg35 returntable, errorMsg36 if __name__ == '__main__':37 #example

38 xlsfile= 'F:/test_AutoTesting/TestCase/RunList.xlsx'

39 table = readExcelDataByName(xlsfile, 'Sheet1')[0]40 #获取第一行的值

41 testcase_id = table.cell_value(1, getColumnIndex(table,'TestCaseID'))42 app_config = table.cell_value(1, getColumnIndex(table,'APPConfig'))43

44 print u'测试用例ID为:%s'%(testcase_id)45 print u'配置信息为:%s'%(app_config)

得出结果如下:

518305-20160514225720859-894403164.png

4、读取excel中的文本或数值转换成了float的问题

有时Excel中的值为20,但读取出来的值却变成了20.0,这与我们想要的不大一致,特别是做UI自动化测试过程中需要下拉选择值时就完全选不出想要的选项了。目前我想到的是通过下面的语句来处理:

if isinstance(inputValue,float): #判断读取到的值是否为float

if inputValue==int(inputValue): #判断读取到的值与转成int后的值是否相等,如果相等则转成int

inputValue =int(inputValue)

inputValue= str(inputValue) #转成str

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值