openpyxl是第三方库,专门处理Excel2007及以上版本产生的xlsx文件
Python官方库一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库复制和修改Excel文件,这三个库只支持到Excel2003。
openpyxl中有三个不同层次的类,Workbook是对工作簿的抽象,Worksheet是对表格的抽象,Cell是对单元格的抽象,每一个类都包含了许多属性和方法。
一、Excel基本操作:
(1)打开一个Excel
from openpyxl import load_workbook
wb = load_workbook("文件名称.xlsx")
(2)获取sheetname
sheet_name = wb["sheet名称"]
(3)获取单元格数据
sheet_name.cell(i,j).value #第i行 第j列
二、实际接口用例操作
from openpyxl import load_workbook
class TestExcel:
def __init__(self,filepath): # 初始化,定义打开文件名称参数化
self.filepath = filepath
self.wb = load_workbook(self.filepath)
# 获取sheet下的所有数据
def get_TestExcel(self,sheetname):
sheet = self.wb[sheetname] # 打开sheet
test_data = [] # 把所有行的数据放入列表中
for i in range(2,sheet.max_row + 1): # sheet.max_row 获取最大行
sub_data = {} # 把每行的数据放到字典中
for j in range(1,sheet.max_column+ 1): # sheet.max_column 获取最大列
sub_data[sheet.cell(1,j).value] = sheet.cell(i,j).value
test_data.append(sub_data) # 拼接每行单元格的数据
return test_data
# 获取指定行的数据
def get_TestExcel_row(self,sheetname,row_s,row_e):
sheet = self.wb[sheetname]
test_data = []
if row_s >= 2 and row_e <= sheet.max_row+1:
for i in range(row_s,row_e+1):
sub_data = {}
for j in range(1,sheet.max_column+1):
sub_data[sheet.cell(1,j).value] = sheet.cell(i,j).value
test_data.append(sub_data)
return test_data
# 将返回结果写入Excel
def write_back(self,sheetname,case_id,actual,result,sql="/"):
sheet = self.wb[sheetname]
for i in range(2,sheet.max_row+1):
id = sheet.cell(i,1).value
if id == case_id:
sheet.cell(i,8).value = actual
sheet.cell(i,9).value = result
sheet.cell(i,10).value = sql
break
try:
self.wb.save(self.filepath)
except Exception as e:
print("写入后保存失败".format(self.filepath))
raise e
if __name__ == "__main__":
# t = TestExcel("接口用例.xlsx").get_TestExcel("工作簿1")
t = TestExcel("接口用例.xlsx").get_TestExcel_row("工作簿1",row_s=2,row_e=3)
print(t)