python 通过openpyxl模块读取excel-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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值