Excel操作基础
openpyxl:.xlsx读写操作
操作:
- 工作薄(Workbook)
- 表单(Sheet)
- 单元格(Cell)
- 准备测试数据
- load_workbook模块,去打开测试数据文件,生成WorkBook对象(wb)
- 根据表单名称选择表单(sh) = wb[‘表单名称’]
- 在表单当中,获取单元格的数据:
4.1 单元格对象:sh.cell(row,collum) #下标从1开始
4.2 .value获取单元格的值
4.3 修改数据:sh.cell(row,colum).value=新的值 - 得到当前表单当中,总行数和总列数
sh.max_row(总行数)
sh.max_colum(总列数) - 保存数据(保存整个工作薄)
WorkBook文件(wb).save(‘文件路径’)
保存到原文件时,一定不要占用excel,否则权限拒绝
#1.加载excel数据文件
from openpyxl import load_workbook
wb = load_workbook('./login_cases.xlsx')
#2.根据表单名称选择表单:wb['表单名称']
sh = wb['Sheet1']
print(sh)
#3.单元格对象:sh.cell(row,colum) 下标从1开始
cel = sh.cell(2,2)
print(cel.value)
print(sh.max_row)
print(sh.max_column)
读取数据:
sh.rows = 所有行的数据,
方法一:
#1.拿到字典的key值
titles = []
for item in list(sh.rows)[0]:#遍历第一行当中的每一列
titles.append(item.value)
data_lists = []
#2.吧key和value组合在一起,形成一个字典,再将字典放在列表中
for item in list(sh.rows)[1:]:#遍历每一行的
value_dict = {}#每一行是个字典
print(item)
for index in range(len(item)):#获取每一行的单元格
print(index,item[index],item[index].value)
value_dict[titles[index]] = item[index].value
data_lists.append(value_dict)#将每一行的测试数据追加到列表中
print(data_lists)
**方法二:**通过zip,eval关键字
#1.拿到字典的key值
titles = []
for item in list(sh.rows)[0]:#遍历第一行当中的每一列
titles.append(item.value)
data_lists = []
#2.吧key和value组合在一起,形成一个字典,再将字典放在列表中
all_datas = []
for item in list(sh.rows)[1:]: #遍历数据行
vaules = []
for val in item: #获取每一行的值
vaules.append(val.value)
res = dict(zip(titles,vaules)) #title和每一行数据,打包成字典
res['check'] = eval(res['check']) #将check的字符串,转换为字典对象。
all_datas.append(res) #追加
print(all_datas)
总结
'''
1.excle操作:openpyxl模块
WorkBook
Sheet
Cell
测试数据文件,提前准备好,
wb = load_workbook(file_path)
# 表单
sh = wb['表单名称']
# 获取表单当中所有的数据 -按行获取
sh.rows =》 list(sh.rows)
每一行是个元组,元组里的成员是cell对象。
all_case = [] #存放所有读取出来的测试数据
#遍历行,获取每一行当中,所有列的数据。
每一行数据,储存在字典当中国。一行代码一个测试用例数据
key:value
key:遍历第一行
for cel in list(sh.rows)[0]:
titles.append(cel.value)
从第二行开始,每一行是一个测试用例数据。
先遍历行,再遍历列
for row in list(sh.rows)[1:]:
for cel in row:
values.append(cel.value)
case_data = dict(zip(titles,values))
#有一个key的值,要求是字典
case_data['check'] = eval(case_data['check'])
all_cases.append(case_date)
'''
Excle操作封装
handle_excel.py
'''
excel类,你的需求是实现什么?
1.读取表头
2.读取数据 --读取表头以外的所有数据。返回值:列表,成员是每一行数据
初始化工作:加载一个excel,打开一个表单
'''
from openpyxl import load_workbook
import os
class HandleExcle:
def __init__(self,file_path,sheet_name):
self.wb = load_workbook(file_path)
self.sh = self.wb[sheet_name]
def read_titles(self):
titles = []
for item in list(self.sh.rows)[0]:
titles.append(item.value)
return titles
def read_all_datas(self):
all_datas = []
titles = self.read_titles()
for item in list(self.sh.rows)[1:]:
values = []
for val in item:
values.append(val.value)
res = dict(zip(titles,values)) #打包成字典
# res['check'] = eval(res['check']) #将check的字符串转换为字典对象
all_datas.append(res)
return all_datas
def close_file(self):
self.wb.close()