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

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

一、安装xlrd库

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

  pip install xlrd

二、使用xlrd读取excel数据

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

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

  1. def readExcelDataByName(fileName, sheetName):
  2. table = None
  3. errorMsg = None
  4. try:
  5. data = xlrd.open_workbook(fileName)
  6. table = data.sheet_by_name(sheetName)
  7. except Exception, msg:
  8. errorMsg = msg
    return table, errorMsg

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

  1. def readExcelDataByIndex(fileName, sheetIndex):
  2. table = None
  3. errorMsg = ""
  4. try:
  5. data = xlrd.open_workbook(fileName)
  6. table = data.sheet_by_index(sheetIndex)
  7. except Exception, msg:
  8. errorMsg = msg
  9. return table, errorMsg

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

  1. def getColumnIndex(table, columnName):
  2. columnIndex = None
  3. for i in range(table.ncols):
  4. if(table.cell_value(0, i) == columnName):
  5. columnIndex = i
  6. break
  7. return columnIndex

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

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

  1. #!/usr/bin/python
  2. # coding=utf-8
  3. __author__ = 'Paul'
  4. import xlrd
  5. import chardet
  6. import traceback
  7. def getColumnIndex(table, columnName):
  8. columnIndex = None
  9. #print table
  10. for i in range(table.ncols):
  11. #print columnName
  12. #print table.cell_value(0, i)
  13. if(table.cell_value(0, i) == columnName):
  14. columnIndex = i
  15. break
  16. return columnIndex
  17. def readExcelDataByName(fileName, sheetName):
  18. #print fileName
  19. table = None
  20. errorMsg = ""
  21. try:
  22. data = xlrd.open_workbook(fileName)
  23. table = data.sheet_by_name(sheetName)
  24. except Exception, msg:
  25. errorMsg = msg
  26. return table, errorMsg
  27. def readExcelDataByIndex(fileName, sheetIndex):
  28. table = None
  29. errorMsg = ""
  30. try:
  31. data = xlrd.open_workbook(fileName)
  32. table = data.sheet_by_index(sheetIndex)
  33. except Exception, msg:
  34. errorMsg = msg
  35. return table, errorMsg
  36. 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)

得出结果如下:

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

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

  1. if isinstance(inputValue,float): #判断读取到的值是否为float
  2. if inputValue==int(inputValue): #判断读取到的值与转成int后的值是否相等,如果相等则转成int
  3. inputValue = int(inputValue)
  4. inputValue = str(inputValue) #转成str

Python读取Excel数据并根据列名取值的更多相关文章

  1. python 读取excel数据并将测试结果填入Excel

    python 读取excel数据并将测试结果填入Excel 读取一个Excel中的一条数据用例,请求接口,然后返回结果并反填到excel中.过程中会生成请求回来的文本,当然还会生成一个xml文件.具体 ...

  2. Python读取excel 数据

    1.安装xlrd 2.官网 通过官网来查看如何使用python读取Excel,python excel官网: http://www.python-excel.org/ 实例: (1)Excel内容 把 ...

  3. Python读取Excel数据

    今天一同学给我发来一个Excel文件,让我帮他找一些信息,打开一开 8000多条数据.自己手工处理是不可能完成的的啦.作为一名程序员,当然要用程序来处理.处理生活中的问题当然是Python最为方便啦. ...

  4. python读取excel数据并以第一行标题加内容组成字典格式返回

    excel结构如图所示: 代码: import xlrd ''' 通用获取excel数据 @:param path excel文件路径 @:param sheet_name excel文件里面shee ...

  5. python读取excel数据为json格式(兼容xls\xlsx)

    做自动化时需要从excel读取数据: 本文实现将excel文件数据读取为json格式,方便自动化调用 读取xls文件 使用xlrd读取xls文件代码: import xlrd def read_xls ...

  6. python读取excel数据,并可视化展现

    #-*- coding: utf-8 -*- import pandas as pda import matplotlib.pyplot as pyl import matplotlib.font_m ...

  7. python 读取excel数据

    import xlrd book = xlrd.open_workbook(file_path)#打开文件 sheet = book.sheet_by_index(0) #获取第一个工作簿 print ...

  8. Python 读取Excel数据 xlrd

    #导入相关模块 from xlrd import open_workbook #打开excel file = open_workbook("test.xlsx") #获取sheet ...

  9. python 读取excel数据插入到另外一个excel

    #-*-coding:utf-8-*- import xlrd import xlwt def excel_copy(dir_from, dir_to, sheet_name): '''从一个exce ...

随机推荐

  1. Android利用广播监听设备安装和卸载应用程序

    MainActivity如下: package cn.testappaddandremove; import android.os.Bundle; import android.app.Activit ...

  2. Java 初学者帮助文档以及基础教程

    一下午的时间,大致看了一下Java的文档,进一步熟悉了Java的大体框架和结构,整理了一下有用的资源. 帮助文档: JSE 8 API 英文版 在线HTML格式:http://docs.oracle. ...

  3. Hibernate 配置详解(12) 其实我也不想用这么土的名字

    hibernate.hbm2ddl.import_files 这个配置用于在hibernate根据映射文件执行DDL之前,如果我们自己设置了要事先运行的SQL文件,hibernate就会先执行这些SQ ...

  4. jQuery validate api(转)

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

  5. git 使用笔记(三)-分支的使用

    简单介绍 之前说过,每次修改之后,Git 并不是保存这些修改之后的差异变化,实际上就像一个照相机一样,将修改后的文件拍下作为文件快照,记录在一个微型的文件系统中.在 Git 中提交时,会保存一个提交对 ...

  6. Visual Studio的ASP.NET修改默认打开浏览器

    1.新建web空应用程序,输入项目名称. 2.右击项目名称,添加“新建项”—一般处理程序 3.右击新建一个HTML文件,任意命名. 4.右击新建的Html文件,选择“浏览方式” 5.选择后弹出浏览器选 ...

  7. java中如何获取系统时间

    需要引入的包有: import java.util.Date; 此为获取当前系统时间,合适为“1991-01-01” String now = "";    SimpleDateF ...

  8. 微型 ORM 的第一篇 DapperLambda发布

    引言:因为接触过多个ORM,但使用的时候都遇到了各自的一些不够理想的地方,从最早开始开始公司自己分装的,到后面用EF,以及Dapper和DapperExtensions  到现在用的FluentDat ...

  9. [Jobdu] 题目1517:链表中倒数第k个结点

    给出一个链表的头指针,要求找到倒数第k个节点,并输出这个节点的值 例子: 先看一个例子,链表为:1 2 3 4 5 6,倒数第2个节点就是5,倒数第一个节点就是6,以此类推.这里的链表有头节点,就是说 ...

  10. Android应用开发提高篇(3)-----传感器(Sensor)编程

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/29/2373420.html 一.概述 Android支持的传感器种类越来越多了,这确实是一件可 ...