一、openpyxl介绍安装
1.为什么要学Excel
存测试数据
有时候有大批量的数据,存到TXT文件里面显然不是最佳的方式,我们可以存到Excel里面去,第一方便我们存数据和做数据,另一方面方便我们读取数据,比较明朗。测试的时候就从数据库中读取出来,这点是非常重要的。
存测试结果
可以批量把结果存入到Excel中,也是比较好整理数据点,比我们的TXT要好。
2.安装openpyxl
python中与excel操作相关的模块:
- xlrd库:从excel中读取数据,支持xls、xlsx
- xlwt库:对excel进行修改操作,不支持对xlsx格式的修改
- xlutils库:在xlw和xlrd中,对一个已存在的文件进行修改。
- openpyxl:主要针对xlsx格式的excel进行读取和编辑。
安装方式:pip install openpyxl
3.Excel中的三大对象
- WorkBook:工作簿对象
- Sheet:表单对象
- Cell:表格对象
二、openpyxl对Excel的操作
- 创建一个工作薄:wb = openpyxl.Workbook()
- 新增一个sheet表单:wb.create_sheet('test_case')
- 保存case.xlsx文件:wb.save('cases.xlsx')
- 打开工作簿:wb = openpyxl.load_workbook('cases.xlsx')
- 选取表单:sh = wb['Sheet1'
- 读取第一行、第一列的数据:ce = sh.cell(row = 1,column = 1)
- 按行读取数据:row_data = list(sh.rows)
- 关闭工作薄:wb.close()
- 按列读取数据:columns_data = list(sh.columns)
- 写入数据之前,该文件一定要处于关闭状态
- 写入第一行、第四列的数据 value = 'result':sh.cell(row = 1,column = 4,value = 'result')
- 获取最大行总数、最大列总数:sh.max_row、sh.max_column
- del 删除表单的用法:del wb['sheet_name']
- remove 删除表单的用法:sh = wb['sheet_name'] wb.remove(sh)
1 import openpyxl 2 # 创建一个工作簿 3 wb = openpyxl.Workbook() 4 # 创建一个test_case的sheet表单 5 wb.create_sheet('test_case') 6 # 保存为一个xlsx格式的文件 7 wb.save('cases.xlsx') 8 # 读取excel中的数据 9 # 第一步:打开工作簿 10 wb = openpyxl.load_workbook('cases.xlsx') 11 # 第二步:选取表单 12 sh = wb['Sheet1'] 13 # 第三步:读取数据 14 # 参数 row:行 column:列 15 ce = sh.cell(row = 1,column = 1) # 读取第一行,第一列的数据 16 print(ce.value) 17 # 按行读取数据 list(sh.rows) 18 print(list(sh.rows)[1:]) # 按行读取数据,去掉第一行的表头信息数据 19 for cases in list(sh.rows)[1:]: 20 case_id = cases[0].value 21 case_excepted = cases[1].value 22 case_data = cases[2].value 23 print(case_excepted,case_data) 24 # 关闭工作薄 25 wb.close()
三.封装一个读取用例的excel类:用来实现读取数据和写入数据的功能
cases.xlsx的测试数据:
1.按行读取数据,存储在列表中
1 import openpyxl 2 class Case: #这个类用来存储用例的 3 __slots__ = [] #特殊的类属性,可以用来限制这个类创建的实例属性添加 可写可不写 4 pass 5 6 class ReadExcel(object): #读取excel数据的类 7 def __init__(self,file_name,sheet_name): 8 """ 9 这个是用来初始化读取对象的 10 :param file_name: 文件名 ---> str类型 11 :param sheet_name: 表单名 ———> str类型 12 """ 13 # 打开文件 14 self.wb = openpyxl.load_workbook(file_name) 15