excel的读写封装,利用openpyxl

import os
from openpyxl import load_workbook

from scripts.handle_path import DATA_PATH

class Testcase:
pass


class HandleExcel:
def __init__(self, filename, sheetname=None):
self.filename = os.path.join(DATA_PATH, filename)
self.sheetname = sheetname

def read_data(self):
"""
读数据
:return:
"""
wb = load_workbook(self.filename)
if self.sheetname is None:
ws = wb.active
else:
ws = wb[self.sheetname]

testcases_list = []
headers_list = [] #存放表头信息
for row in range(1,ws.max_row + 1):
one_testcase = Testcase() #创建用例对象
for column in range(1,ws.max_column+1):
one_cell_value = ws.cell(row,column).value
if row == 1:
# 将获取的表头,转化为字符串并添加至headers_list中
headers_list.append(str(one_cell_value))
else:
#获取表头字符串数据
key = headers_list[column-1]
if key == "actual":
# 设置存放实际响应报文所在列的列号actual_column属性
setattr(one_testcase,"actual_column",column)
elif key == "result":
# 设置存放用例执行结果所在列的列号result_column属性
setattr(one_testcase, "result_column", column)

setattr(one_testcase, key, one_cell_value)

if row != 1:
# 设置当前用例所在的行号row属性
setattr(one_testcase,"row",row)
testcases_list.append(one_testcase)

return testcases_list

def write_data(self,one_testcase,actual_value,result_value):
wb = load_workbook(self.filename)
if self.sheetname is None:
ws = wb.active
else:
ws = wb[self.sheetname]

#写入
ws.cell(one_testcase.row,one_testcase.actual_cloumn,value=actual_value)
ws.cell(one_testcase.row, one_testcase.result_column, value=result_value)
wb.save(self.filename)
原文地址:https://www.cnblogs.com/billyb/p/12933822.html