Python_13 接口测试openpyxl和表操作
一、openpyxl
- 安装 pip install openpyxl 在Terminal中输入
- excel操作步骤
- 找到目标excel
- 打开
- 读取数据、编辑excel单元格
- 保存
- 关闭
- openpyxl 操作
- 创建wb对象(找到excel并打开它)
- 获取sheet对象
- 找到要操作的单元格
- 读数据、修改数据
- 保存,关闭
- 操作演示(和3对应的步骤)
from openpyxl import load_workbook 导入load_workbook类
- 实例化对象名 = load_workbook(filename="文件地址") 带文件名及其后缀
该步骤是创建文件流,初始化load_workbook类之后赋值给实例化对象
如测试文件在该项目文件夹中则直接填写文件名,如果文件不在该项目文件夹中则填写全部的链接
2. 有关sheet的新对象名1 = 实例化对象名["测试用例中sheet名"] 获取sheet对象
3. 新对象名2 = 有关sheet的新对象名1.cell(row=想获取的单元格的行, column=想获取的单元格的列)
找到要操作的单元格
新对象名2的值如下图所示,图中起名cell
4. 接受结果名 = 新对象名2.value print(接受结果名) ,也可直接print(新对象名2.value)
用于获取测试文件中对应位置的确切取值
5. 实例化对象名.close() 关掉创建的文件流,不关掉会占用IO,打开多了可能会崩
6. 注意: 操作的都是对象(存储的位置),只有读数据时为值
7. load_workbook 参数说明
- filename:excel 文件名称(带路径)
- read_only=False: 可读可写,默认False表示可读可写,Ture表示只读
- keep_vba=KEEP_VBA: 保留vba代码
- data_only=False: 默认是False:有计算公式的单元格直接读出来的是公式
True:有公式的单元格读出来是计算后的结果
8. keep_links=True: 保留外部链接
9. 获取sheet对象
- 有关sheet的新对象名1 = 实例化对象名["测试用例中sheet名"]
- 新接收结果名2 = 实例化对象名.sheetnames 返回一个sheet名称的list
3. for name in 实例化对象名 print(name) 遍历sheet对象 和for循环不同的是遍历结果为对象而不是值
4. 结果接收值 = 实例化对象名.worksheets[1] 通过索引值拿到sheet对象
5. 找到要操作的单元格
- 接收值的结果 = 有关sheet的新对象名1["excel中的行列值如B2"]
- 新对象名2 = 有关sheet的新对象名1.cell(row=想获取的单元格的行, column=想获取的单元格的列)
6. 行操作
接收值 = 有关sheet的新对
将测试文件中的整行一行一行的遍历,获取所有行的对象,需要list强制类型转换
获取值就要通过双重for 循环获取
行对象接收值 =有关sheet的新对象名1.rows
for i in list(行对象接收值):
for k in i:
print(k.value)
1. 接收值 = 有关sheet的新对象名1.max_row 获取最大行,统计测试文档中一共有多少行数据
这一行写了东西全行都会显示,默认有值,但是值是None,如不需要,要进行统一删除
2. 行切片 用于取范围里的值,从行到列确定区域,二维的,推荐使用II
- 接收值 = 有关sheet的新对象名1.iter_rows(min_row=1,max_row=5,min_col=1,max_col=5,values_only=True)
print(list(接收值))
2. for val in 有关sheet的新对象名1.iter_rows(min_row=1,max_row=5,min_col=1,max_col=5,values_only=True):
print(val)
3. 统一解释
min_row=对应数值如1 起始行的索引(不写默认为1)
max_row=对应数值如5 结束行索引不写的话默认是最大值,索引从1开始
min_col=对应数值如1 起始列的索引(不写默认为1)
max_col=对应数值如5 结束列的索引(不写的话默认是最大值),索引从1开始
values_only=False 返回单元格的对象
values_only=True 返回单元格的值
7. 列操作 (和行操作类似)
- 接收值 = 有关sheet的新对象名1.columns 获取所有列对象,一列一列的遍历
如果要获取值还是要用双重for循环的value方法去取值
列对象接收值 =有关sheet的新对象名1.columns
for i in list(列对象接收值):
for k in i:
print(k.value)
2. 接收值 = 有关sheet的新对象名1.max_column 获取最大列
3. 列切片 同行切片
- 接收值 = 有关sheet的新对象名1.iter_cols(min_row=1,max_row=5,min_col=1,max_col=5,values_only=True)
print(list(接收值))
2. for val in 有关sheet的新对象名1.iter_cols(min_row=1,max_row=5,min_col=1,max_col=5,values_only=True):
print(val)
二、写表操作和保存
- 有关sheet的新对象名1["excel中的位置如A1"]="要赋的值" 通过给单元格赋值,更改内容
- 有关sheet的新对象名1(row=行值,column=列值).value="要赋的值" 给A1单元格赋值
有关sheet的新对象名1.cell(row=行值,column=列值,value="要赋的值") 给A1单元格传值
- 实例化对象名.save("文件名.后缀") 保存
- 有关sheet的新对象名1.append(想要添加的列表名) 添加数据 在表格最下面去写,按行写入,每一个元素站一个单元格
想要添加的列表名=[参数1,参数2,参数3,参数4,参数5]
本文来自博客园,作者:Alisa-sweet,转载请注明原文链接:https://www.cnblogs.com/Alisa-sweet/p/17354400.html