Python_13 接口测试openpyxl和表操作

一、openpyxl

  1. 安装   pip install openpyxl  在Terminal中输入
  1. excel操作步骤
    1. 找到目标excel
    2. 打开
    3. 读取数据、编辑excel单元格
    4. 保存
    5. 关闭
  1. openpyxl 操作
    1. 创建wb对象(找到excel并打开它)
    2. 获取sheet对象
    3. 找到要操作的单元格
    4. 读数据、修改数据
    5. 保存,关闭
  1. 操作演示(和3对应的步骤)

   from openpyxl import load_workbook   导入load_workbook类

    1. 实例化对象名 = 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      参数说明

      1. filename:excel        文件名称(带路径)
      2. read_only=False:    可读可写,默认False表示可读可写,Ture表示只读
      3. keep_vba=KEEP_VBA:     保留vba代码
      4. data_only=False:     默认是False:有计算公式的单元格直接读出来的是公式

                     True:有公式的单元格读出来是计算后的结果

        8. keep_links=True:     保留外部链接

        9. 获取sheet对象

        1. 有关sheet的新对象名1 = 实例化对象名["测试用例中sheet名"]   
        2. 新接收结果名2 = 实例化对象名.sheetnames   返回一个sheet名称的list

              3. for name in 实例化对象名  print(name) 遍历sheet对象  和for循环不同的是遍历结果为对象而不是值

               

              4. 结果接收值 = 实例化对象名.worksheets[1]    通过索引值拿到sheet对象

            

    5. 找到要操作的单元格

    1. 接收值的结果 = 有关sheet的新对象名1["excel中的行列值如B2"]
    2. 新对象名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

    1. 接收值 = 有关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. 列操作 (和行操作类似)

    1. 接收值 = 有关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. 列切片  同行切片

      1. 接收值 = 有关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)

 

 二、写表操作和保存

  1. 有关sheet的新对象名1["excel中的位置如A1"]="要赋的值"    通过给单元格赋值,更改内容

 

  1. 有关sheet的新对象名1(row=行值,column=列值).value="要赋的值"         给A1单元格赋值

有关sheet的新对象名1.cell(row=行值,column=列值,value="要赋的值")     给A1单元格传值

  1. 实例化对象名.save("文件名.后缀")       保存
  2. 有关sheet的新对象名1.append(想要添加的列表名)   添加数据  在表格最下面去写,按行写入,每一个元素站一个单元格

   想要添加的列表名=[参数1,参数2,参数3,参数4,参数5]

 

 

posted @ 2023-04-26 00:00  Alisa-sweet  阅读(50)  评论(0编辑  收藏  举报