Python 读取Excel用例——openpyxl模块

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)


 

posted @ 2020-05-23 22:00  浅笑_0713  阅读(396)  评论(0编辑  收藏  举报