当前位置: 首页 > news >正文

python利用openpyxl库操作Excel来读取、修改、写入测试数据

一、openpyxl模块介绍

1、openpyxl是读写Excel的python库,是一个比较综合的工具,能够同时读取和修改Excel文档

2、openpyxl中有三个不同层次的类,每一个类都有各自的属性和方法:

  •         Workbook是一个excel工作表 
  •         Worksheet是工作表中的表单,如图
  •  

     

  •         Cell就是表单中的一个格

3、操作Excel的一般场景:

  •      打开或者创建一个Excel需要创建一个Workbook对象
  •      获取一个表则需要先创建一个Workbook对象,然后使用该对象的方法来得到一个Worksheet对象

4、Workbook对象

  • 一个Workbook对象代表一个Excel文档,因此在操作Excel之前,都应该先创建一个Workbook对象。
  • 对于一个已经存在的Excel文档,可以使用openpyxl模块的load_workbook函数进行读取,该函数包涵多个参数,但只有filename参数为必传参数。filename 是一个文件名,也可以是一个打开的文件对象。

 

二、安装openpyxl模块

在cmd命令行下输入命令:pip install openpyxl

三、代码实现(在Pycharm中编写代码)

1、本地新建一个Excel表test_case.xlsx

2、复制test_case.xlsx到Pycharm:

3、用python操作excel

导入load_workbook库

from openpyxl import load_workbook

 

第一步:打开excel

workbook1=load_workbook('test_case.xlsx')

 

第二步:定位表单(test_data)

sheet=workbook1['test_data']

第三步:操作excel的test_data表单

1、定位单元格(cell),根据行列读取测试数据

data=sheet.cell(3,2).value
print(data)

 

特殊说明:

定位C2单元格数据{'mobilephone':'13502288210','pwd':'123456'}

data=sheet.cell(2,3).value        

查看C2单元格数据类型为,但实际为dict类型

print(type(data))            输出str

将str类型转化为他原来的类型dict:eval(data)                  

print(type(eval(data)))   输出dict

综上可得:

  • excel 存储的数据,数字还是数字:int—>int、 float—>float 、其他类型—>str
  • 使用eval(数据) 将str类型转换为他原来的类型

 

2、定位单元格(cell),根据行列值,更改原有的数据、写入新的测试数据,
sheet.cell(3,2).value='妮妮'          #更改已经存在的测试数据
sheet.cell(6,3).value='小小'          #在空的单元格写入新的测试值
workbook1.save('test_case.xlsx') #保存修改

 

3、统计行和列(参考上图)

max_row=sheet.max_row
max_cow = sheet.max_column
print('最大的行值:',max_row)    #输出6
print('最大的列值:',max_cow)   #输出7

 

从excel中读取测试用例:

 1 #读取每一条测试用用例分别保存到字典中,然后再将所有用例保存到列表中,如[{用例1},{用例2},{用例3}]
 2 def  read_case():
 3     workbook1=load_workbook('test_case.xlsx')
 4     sheet=workbook1['test_data']
 5     max_row=sheet.max_row
 6     test_case=[]
 7     for row in range(2,max_row+1):
 8         sub_data={}
 9         sub_data['case_id']=sheet.cell(row,1).value
10         sub_data['title']=sheet.cell(row,2).value
11         sub_data['data']=sheet.cell(row,3).value
12         sub_data['method']=sheet.cell(row,4).value
13         sub_data['expected']=sheet.cell(row,5).value
14         test_case.append(sub_data)
15     print("读取到的所有测试用例:",test_case)
16 
17 read_case()
read_case

 

转载于:https://www.cnblogs.com/yhms/p/10138513.html

相关文章:

  • nginx添加几十个域名
  • ffmpeg获取视频封面图片
  • 源码包安装 以及升级内核 上课内容
  • 实现 el-table 拖拽行排序,并获取当前拖拽行的数据传入服务器
  • js的面向对象编程
  • GitLab在centos7上安装和使用
  • 外行人都能看得懂的机器学习,错过了血亏!
  • 合并两个DataSet的一种方法
  • springboot集成swagger
  • kentico中的page template的使用
  • 解决奇葩的win7文件不能拖动问题
  • layer
  • RSA加密算法的简单案例
  • 第二次作业
  • Oracle数据库入门——初级系列教程
  • [NodeJS] 关于Buffer
  • Android Volley源码解析
  • Iterator 和 for...of 循环
  • JavaScript 奇技淫巧
  • JAVA并发编程--1.基础概念
  • linux学习笔记
  • node-glob通配符
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Travix是如何部署应用程序到Kubernetes上的
  • 测试如何在敏捷团队中工作?
  • 给新手的新浪微博 SDK 集成教程【一】
  • 关于字符编码你应该知道的事情
  • 汉诺塔算法
  • 设计模式 开闭原则
  • 使用docker-compose进行多节点部署
  • 事件委托的小应用
  • 探索 JS 中的模块化
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 阿里云ACE认证学习知识点梳理
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (C语言)二分查找 超详细
  • (ZT)一个美国文科博士的YardLife
  • (搬运以学习)flask 上下文的实现
  • (二十三)Flask之高频面试点
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • .a文件和.so文件
  • .net 4.0发布后不能正常显示图片问题
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .py文件应该怎样打开?
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @Controller和@RestController的区别?
  • [ C++ ] STL_list 使用及其模拟实现
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ 手记 ] 关于tomcat开机启动设置问题
  • []AT 指令 收发短信和GPRS上网 SIM508/548