用例数据分离&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

openpyxl哪个版本的python可以安装 openpyxl安装教程_excel

 

三、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)

openpyxl哪个版本的python可以安装 openpyxl安装教程_excel_02