用例数据分离&openpyxl的基本操作
一、openpyxl安装
要安装openpyxl:安装命令:pip install openpyxl
离线安装:下载安装包后,到指定python37目录解压,离线安装命令:python setup.py install
二、openpyxl
1.应用:
用直接读写文件的方式直接取execl文件拿不到想要的数据--openpyxl,通过openpyxl这个模块来操作
2.三个对象:
- 1.workbook工作簿:一个文件就是一个 wookbook
- 2.sheet表单对象:每一个sheet就是这一个sheet对象
- 3.cell格子:每一个格子就算一个cell
三、excel数据的读取和写入
1.数据的读取
- 读取excel,返回一个workbook对象,方法:openpyxl.load_workbook(“文件名称”)
- 读取excel文件中的表单
- 读取表单中的某个格子的内容表单.cell(row=,column=).value
import openpyxl
# 第一步:读取excel文件,返回一个workbook对象(工作簿)
wb = openpyxl.load_workbook("cases.xlsx")
print(wb)
# 第二步:选取工作簿中的表单
sh = wb["register"]
print(sh)
# 第三步:读取表单中的某个格子的内容
data = sh.cell(row=1, column=1).value
res = wb["register"].cell(row=1, column=1).value # 简写
print(data)
2.数据的写入
- 读取excel文件,返回一个workbook对象
- 读取工作薄中的表单
- 写入内容:sh.cell(row=4, column=4, value="你好")
- 保存工作薄为文件save()
# 第一步:读取excel文件,返回一个workbook对象(工作簿)
wb = openpyxl.load_workbook("cases.xlsx")
# 第二步:选取工作簿中的表单
sh = wb["hao"]
# 第三步:写入内容
sh.cell(row=4, column=4, value="你好")
sh.cell(row=3, column=3).value = "你好" #也可以用该写法
# 第四步:保存工作簿为文件
wb.save("cases.xlsx")
四、openpyxl进阶使用
import openpyxl
wb = openpyxl.load_workbook("cases.xlsx")
1.通过下标获取指定行/列的数据
- 表单对象中的rows属性 sh=wb["register"]
- 按行获取表单所有格子中的数据,每一行数据都放在元组中datas=list(sh.rows)
- 通过下标获取指定行的数据datas[2]
- 获取指定列的数据datas=list(sh.colums)
- 通过下标获取指定列的数据datas[2]
2.获取max_row:获取最大行
print(sh.max_row)
3.获取max_column:获取最大列
print(sh.max_column)
import openpyxl
wb = openpyxl.load_workbook("cases.xlsx")
# 1.通过下标获取指定行的数据
# 表单对象中的rows属性
sh = wb["register"]
# 按行获取表单所有格子中的数据,每一行的数据放在了元组中
datas = list(sh.rows)
print(datas) # 获取的是列表嵌套元组的数据
"""
[(<Cell 'register'.A3>, <Cell 'register'.B3>, <Cell 'register'.C3>, <Cell 'register'.D3>, <Cell 'register'.E3>)]
"""
# .通过下标获取指定行的数据
print(datas[2])
# 遍历获取每个cell的值,并存储在列表中
# 方法一:遍历,添加
li = []
for i in datas[0]:
print(i.value)
li.append(i.value)
print(li)
# 方法二:列表推导式
li1 = [i.value for i in datas[1]]
print(li1)
# 2.读取指定列的数据
# 按列获取表单所有格子中的数据,每一列的数据放在了元组中
datas2 =list (sh.columns)
# 1.通过下标获取指定列的数据
print(datas2[2])
# 遍历获取每个cell的值,并存储在列表中
# 方法一:遍历,添加
li3 = []
for i in datas2[0]:
print(i.value)
li3.append(i.value)
print(li3)
# 方法二:列表推导式
li4 = [i.value for i in datas2[1]]
print(li4)
#3.获取max_row:获取最大行
print(sh.max_row)
#4.获取max_column:获取最大列
print(sh.max_column)
五、实战
通过代码读取附件文件中的register这个表单的第一行和第二行数据,想办法保存为一个字典:格式如下:
{'case_id': 1, 'title': '正常注册', 'data': "('python1', '123456', '123456')", 'expected': '{"code": 1, "msg": "注册成功"}', 'result': None}
import openpyxl
# 1.数据的读取
# 第一步:读取excel文件,返回一个workbook对象(工作簿)
wb = openpyxl.load_workbook("register_cases.xlsx")
# 第二步:选取工作簿中的表单
sh = wb["register"]
print(sh)
# 按行获取表单所有格子中的数据,每一行的数据放在一个元组中
datas = list(sh.rows)
print(datas)
# 获取第一行的数据
li1 = []
for i in datas[0]:
print(i.value)
li1.append(i.value)
print(li1)
# 获取第二行数据
li2 = [i.value for i in datas[1]]
print(li2)
# 通过zip打包
data = dict(zip(li1, li2))
print(data)