前言
归纳openpyxl的常见操作,zip函数的组合数据的用法,以及使用自定义类的封装操作表格
一、openpyxl对表格的常用操作
注意:整个的表格操作是我们不能手动打开,在关闭状态下操作的。
1、获取指定单元格的数据,以及修改数据
如果直接使用绝对路径就会报错
2、获取整个表单的数据
二、openpyxl获取整个表单的数据(zip函数组合数据)
把数据转化成为列表
三、zip函数
使用zip的好处:
1、代码少,可以不用双重for
2、无论你的excel的表单增加列/行,删除列/行,修改数据,代码都不需要改。
zip(列表/元组, 列表/元组)
举例:
"""
zip函数
使用zip的好处:
1、代码少,可以不用双重for
2、无论你的excel的表单增加列/行,删除列/行,修改数据,代码都不需要改。
zip(列表/元组, 列表/元组)
"""
data1 = ('id', 'title', 'user', 'passwd', 'expected')
data2 = (1, '登陆成功用例', '小马', '123456', '{"code": 0, "msg": "登录成功"}',22)
data3 = (1,2,3,4,5)
# 打包成列表
# res = list(zip(data1,data2,data3))
# print(res)
# 打包成字典
res = dict(zip(data1,data2))
print(res)
四、使用类封装来操作表格
注意点:
1、 在if语句中可以直接使用函数(因为只要只要函数有返回值符合这个条件判断就行)
2、在函数里写形参的时候,最好指定这个参数的类型(因为这样可以调用这个参数的其他函数,如果不指定系统就无法识别这个参数到底是什么类型的,所以这也就是为什么Java中必须指定类型,虽然Python中不需要指定)
参考代码:
"""
定义一个满足用户使用的类,测试用例数据获取类
1、初始化的工作是什么?实例有哪些?
得到一个excel的路径 ,根据路径判断文件存不存在,不存在抛异常。存在的话
打开这个excel工作薄
指定一个表单?
2、实现哪些方法? 读取表单所有的测试用例数据。最终为一个列表,列表里面都是字典。
select_sheet_by_name()
read_all_datas()
如果一个变量
"""
import os
from openpyxl import load_workbook
class MyExcel:
def __init__(self,excel_path: str):
"""
1、需要判断路径是否存在。如果不存在,抛异常。如果存在,打开。
:param excel_path: 完整的excel文件路径
"""
if os.path.isfile(excel_path):
if excel_path.endswith(".xlsx"):
self.wb = load_workbook(excel_path)
else:
print("文件不是以xlsx结尾,不支持处理。")
else:
print("文件路径不存在。")
raise FileNotFoundError
def select_sheet_by_name(self,name):
if name not in self.wb.sheetnames:
print("表单名称不存在!")
self.sh = None
else:
self.sh = self.wb[name]
def read_all_datas(self):
cases_list = []
# 获取表单里的所有数据
all_values = list(self.sh.values)
# 获取表单第一行,作为key
keys = all_values[0]
# 遍历表单,从第2行开始
for values in all_values[1:]:
# 把key和每一行进行组合成字典
case = dict(zip(keys, values))
print(case)
cases_list.append(case)
return cases_list
# 有没有bug? -- 测试一下 --
总结
暂无