excel文件操作

首先为什么要讲excel文件操作呢,因为一般用到的自动化框架中大部分都是用excel存放测试用例数据,是数据驱动的来源。

一、安装
本次分享的是通过openpyxl 这个模块来操作excel文件,所以首先需要安装该模块,通过下面命令安装。

pip install openpyxl

二、表结构

首先excel表格里有sheet表、单元格,在python里可以把整张excel表 sheet表 单元格都当做是个对象
我们这里先准备一份练手的excel文件并简单写一些数据进去。

三、操作步骤

1、单独读取单元格值

from openpyxl import load_workbook
# 从openpyxl中导入 load_workbook
#load_workbook参数:
#filename:文件名称,
#read_only:只读模式
#data_only:读取数据的时候如果遇到计算公式是否要计算后再读取数据,False:读取未计算的结果(公式读出来) True:读取计算后的记过
#一般读取用例只需要用到filename这个参数就行,如果测试用例文件在当前目录下只需传文件名,
#如果在其他目录下需要传文件的绝对路径不然会提示找不到文件# 获取表格对象
wb = load_workbook(filename="test.xlsx")
# 获取sheet对象
sheet = wb["sheet1"]
# 获取单元格对象
cell = sheet["B2"]
# 获取值
print(cell.value)
# 关闭数据流,注意:每次操作完文件后都需要关闭操作流,不然下次操作会报错。
wb.close()

运行结果如下:

可以看到这时候已经把test文件中sheet1表里的B2单元格已经读出来了。

2、行操作

# 获取行数据用的是iter_rows()这个方法这个方法有五个参数(min_row,max_row,min_col,max_col,values_only)
# min_row=None: 行的起始索引值,默认是1,必须是int类型
# max_row=None: 行的结束索引值,默认是1,必须是int类型
# min_col=None: 列的起始索引值,默认是1,必须是int类型
# max_col=None:列的结束索引值,默认是1,必须是int类型
# values_only=False:返回是对象 ,True:返回对应的值 默认是False 我们用到的时候需要设置成True
result = sheet.iter_rows(values_only=True) # 不填写min_row,max_row,min_col,max_col 则返回所有行列数据
print(result)
# 这里如果想用数据得转换成list 因为读取出来的数据默认是返回的内存地址需要转成list
print(list(result))
# 可遍历输出数据
# for i in list(result):
#     print(i)

运行结果如下:

3、列操作(一般用不着,竖着读数据)

# 这里的操作参数和行操作一致
# 获取列数据用的是iter_cols()这个方法这个方法一样有五个参数用法与行操作一致(min_row=1,max_row=2,min_col=1,max_col=4,values_only=True)result = sheet.iter_cols(min_row=1,max_row=2,min_col=1,max_col=4,values_only=True)
print(result)
print(list(result))

运行结果如下:

在做自动化测试的时候用到的都是行读取,列读取我们稍作了解就行。
但是我们现在通过行读取出来的数据并不能直接用作数据驱动使用,所以我们得进一步把数据处理成下面这种格式。

代码如下:

# 要把数据处理成上图的效果,一个字典对应一条用例 我们需要先把标题行 和用例数据先拆出来,并用zip函数进行压缩 再转成字典形式
result = list(sheet.iter_rows(values_only=True))title = result [0] # 通过之前返回数据可以看出第一行是标题 我们直接索引获取第一行
datas = result [1:] # 剩下除了第一行就是用例数据了 直接截取
# print(title)
# print(data_list)
case_list=[] # 定义一个空列表保存用例
for case in datas:res = dict(zip(title,case))print(res)case_list.append(res) # 将处理好的字典用例保存到列表中
print(case_list)# 打印结果

运行结果如下:

这时候已经可以拿到用例并处理成自己想要的格式了,但是这种代码比较low是写死的,这时候我们就可以封装一下,封装成类和方法
代码如下:

from openpyxl import load_workbook
import osclass GetExcel():def __init__(self,filename,sheet_name):# 获取用例文件绝对路径 casedata存放用例的目录 test是当前文件运行的目录 demo.py是封装的文件替换一下就是用例文件的绝对路径了# 如果你用例文件和封装文件在同一个目录下 只需要传文件名即可# filepath = os.path.abspath(__file__).replace("casedata","test").replace("demo.py",filename)# print(filepath)# 获取表#  self.wb = load_workbook(filename=filepath)self.wb = load_workbook(filename=filename)# 获取表对象self.sheet = self.wb[sheet_name]def __close_excel(self):self.wb.close()def __get_title_and_data(self):"""获取表头和用例并返回:return:"""data_list = list(self.sheet.iter_rows(values_only=True))title = data_list[0]datas = data_list[1:]return title,datasdef get_data(self):"""获取所有用例并保存到列表中:return:"""title,data = self.__get_title_and_data()case_list = []for i in data:res = dict(zip(title, i))case_list.append(res)self.__close_excel()return case_listif __name__ == '__main__':cl = GetExcel('test.xlsx','sheet1')res = cl.get_data()print(res)

运行结果如下:

通过封装成类和方法,我们可以反复使用读取不同的excel表里用例数据。
下次分享如何用读取出来的数据通过数据驱动的方式去执行。

python自动化之excel文件操作相关推荐

  1. 怎么用python处理excel文件-Python自动化如何处理excel文件数据

    原标题:Python自动化如何处理excel文件数据 在python自动化中,经常会遇到对数据文件的操作,比如添加多名员工,但是直接将员工数据写在python文件中,不但工作量大,要是以后再次遇到类似 ...

  2. python处理excel教程实例-python 读写excel文件操作示例【附源码下载】

    本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...

  3. python读取python源代码文件_python 读写excel文件操作示例【附源码下载】

    本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...

  4. 自动化办公:2、Python自动化之Excel读取表格+设置样式

    Python自动化之Excel 方法一:应用pip执行命令 安装openpyxl模块pip install openpyxl 方法二:在Pycharm中:File->Setting->左侧 ...

  5. python怎么读excelsheet_python3 excle(python怎么读写excel文件)

    python读取已经打开的3个word和excle文件的路径 用 win32com 操控 word和Excel就可以实现 咋样把python写入excle中 # 需安装 xlrd-0.9.2 和 xl ...

  6. Python+pandas处理Excel文件案例一则

    封面图片:<Python程序设计实验指导书>(ISBN:9787302525790),董付国,清华大学出版社 图书详情(京东): ==================== 问题描述:使用p ...

  7. Python批量导入Excel文件中的不重复数据到SQLite数据库

    封面图片:<Python可以这样学>,董付国,清华大学出版社 ============== 好消息:智慧树网APP"知到"中搜索"董付国"可以免费观 ...

  8. python怎么读写文件-python3 excle(python怎么读写excel文件)

    python读取已经打开的3个word和excle文件的路径 用 win32com 操控 word和Excel就可以实现 咋样把python写入excle中 # 需安装 xlrd-0.9.2 和 xl ...

  9. python自动读取excel文件邮箱列表,自动批量发送邮件项目(附使用方法+代码)

    python自动发送邮件项目 项目简介 使用方法 项目结构 完整项目代码 结语 项目简介 该项目功能是利用python自动读取excel文件中的邮箱列表,并批量发送邮件到目标邮箱,进行客户挖掘的.该项 ...

最新文章

  1. Android Studio中架包打包和依赖冲突解决
  2. freeRtos学习笔记 (7)信号量
  3. 【机器学习】Python机器学习的神器- Scikit-learn使用说明
  4. PAT (Basic Level) 1058 选择题(模拟)
  5. pointer-events:none
  6. 第二阶段冲刺-个人总结04
  7. debian 7 mysql_debian7.2+nginx+mysql
  8. ros先订阅后发布 无法收到消息的解决办法
  9. 运动目标跟踪(八)--时空上下文(STC)跟踪原理
  10. 一个bat文件运行多个java jar包
  11. 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_6、SpringBoot2.xHTTP请求配置讲解...
  12. mysql中的rm语句用法_SQLMap部分命令用法详解
  13. 电脑文件夹同步软件哪个比较好用?
  14. 计算机病毒是计算机软件出现的故障,计算机病毒引发故障有哪些
  15. comsol通直流电_基于COMSOL仿真的高压直流交联聚乙烯(XLPE)电缆附件设计
  16. 计算机单位kb和m比较,G、GB、KB、M和MB是怎么回事?
  17. 【可视化开发】数据大屏可视化技术汇总
  18. 微信小程序为啥有的时候不显示封面广告、以及其他广告
  19. 有些段子,外行人根本看不懂,只有程序员看了会狂笑不止
  20. 解决win2008 R2远程桌面授权过期的方法

热门文章

  1. 通信端口感叹号_PCI简易通讯控制器有黄色感叹号怎么办?
  2. ppt_第十章_DNA非卷积视觉技术
  3. [附源码]Python计算机毕业设计服装销售商城系统
  4. 软件开发怎么对抗抄袭_对抗软件开发中的复杂性
  5. 写了开源软件没申专利,反被索赔该怎么办?
  6. 惠普gk100好不好_惠普GK100如何,惠普GK100评价看这里
  7. 为什么人到了中年会喜欢上养花?养花能给人带来什么?
  8. 【英语语法疑难点】An estimated后接个名词复数是个什么用法?
  9. java 浏览器 qq_Qq浏览器通用版移动QQ浏览器v2.1Java通用版下载
  10. VMware安装UniKylin系统