首先阐述一下框架中需要的excel的方法
1、获取sheet页内数据
指定方法self.load_excel = openpyxl.load_workbook(self.file_path)
2、获取单元格数据
sheetname = self.load_excel.sheetnames
data = self.load_excel[sheetname[index]]
3、获取行数
cell_data = self.get_sheet_data(index).cell(row=row,column=col).value
4、获取行数据列表
[i.value for i in self.get_sheet_data(index)[row]]
这里self.get_sheet_data(index)[row]是行数据,但是是一个对象,所以要i.value获取其值,获取列数据也是如此
5、获取列数据列表
6、获取case_id指定的行号:用例获取指定依赖
case_id是传入的参数,根据列数据去遍历,如果case_id等于其中一个列数据,就将其计数出行号
7、获取全部数据列表:用于后边的ddt数据驱动
获取到每一行的数据,加入大列表中
# -*- coding: utf-8 -*-
# @Time : 2020/1/14 10:41
# @Author : Willam.zja
# @FileName: handle_excel.py
# @Software: PyCharm
# @Blog :https://blog.youkuaiyun.com/enemy_sprites
import os
import sys
sys.path.append(os.getcwd())
base_path = os.path.abspath(os.path.dirname(os.getcwd()))
import openpyxl
class HandleExcel(object):
def __init__(self,file_path=None):
"""
初始化excel数据
:param file_path:excel路径
"""
if file_path == None:
self.file_path = '\\'.join([base_path,'Case\CharConcert.xlsx'])
else:
self.file_path = file_path
self.load_excel = openpyxl.load_workbook(self.file_path)
def get_sheet_data(self,index=None):
"""
获取sheet页内容
:param index: sheet页码
:return: sheet页下excel的数据
"""
if index == None:
index = 0
sheetname = self.load_excel.sheetnames
data = self.load_excel[sheetname[index]]
return data
def get_table_cell(self,row,col,index=None):
"""
获取单元格数据
:param row: 行号
:param col: 列号
:param index: sheet页码
:return: 单元格内数据
"""
cell_data = self.get_sheet_data(index).cell(row=row,column=col).value
return cell_data
def get_lines(self,index=None):
"""
获取行数,也就是用例数
:return:
"""
lines = self.get_sheet_data(index).max_row
return lines
def get_row_data(self,row,index=None):
"""
获取某一行数据列表
:param row: 行号
:return: 某一行数据列表
"""
return [i.value for i in self.get_sheet_data(index)[row]]
def get_col_data(self,col,index=None):
"""
获取某一列数据列表
:param col: 列号
:param index: sheet页码
:return: 某一列数据列表
"""
return [i.value for i in self.get_sheet_data(index)[col]]
def get_all_data(self):
"""
获取所有行数据
:return:
"""
return [self.get_row_data(i+2) for i in range(self.get_lines()-1)]
def get_row_num(self,case_id):
"""
根据case_id查找行号
:param case_id:
:return: case_id对应的行号
"""
num = 1
for i in self.get_col_data('A'):
if i == case_id:
return num
else:
num += 1
return num
def write_data(self,row,col,value):
"""
写入数据到excel单元格,用于实际结果和实际数据的回写
:param row: 行号
:param col: 列号
:param value:写入的数据
:return:
"""
self.load_excel.active.cell(row,col,value)
self.load_excel.save(self.file_path)
excel_method = HandleExcel()
if __name__ == '__main__':
print('获取单元格------>',excel_method.get_table_cell(2, 1))
print('获取某行数------>',excel_method.get_lines())
print('获取某一行数据列表------>',excel_method.get_row_data(2))
print('获取某一列数据列表------>',excel_method.get_col_data('A'))
print('获取所有数据列表------>',excel_method.get_all_data())
print('获取所有数据列表------>',excel_method.get_row_num('char_concert_api_case_002'))
excel_method.write_data(2,15,'pass')

本文详细介绍使用Python的openpyxl库进行Excel文件操作的方法,包括读取sheet页数据、单元格数据、行数、行数据列表、列数据列表及全部数据列表,同时介绍了如何根据case_id获取指定行号及数据回写。

被折叠的 条评论
为什么被折叠?



