Python 读取Excel用例——openpyxl模块

摘要:
Openpyxl是一个第三方库,专门处理Excel 2007及更高版本生成的xlsx文件。官方Python库通常使用xlrd库读取Excel文件,使用xlwt库生成Excel文件,以及使用xlutils库复制和修改Excel文件。这三个库仅支持Excel 2003。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)


免责声明:文章转载自《Python 读取Excel用例——openpyxl模块》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇React配置代理解决跨域问题KUDU 介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第15.36节 PyQt(Python+Qt)入门学习:containers容器类部件QFrame框架部件介绍

一、概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有如下: 容器中的Frame为一个矩形的框架对象,对应类QFrame,QFrame类是PyQt中带框架部件的所有类的基类,如菜单、进度条、Label标签等。QFrame类除了派生子类外,也可以直接用于创建没有任何内容的简单占位符框架,用于占用一部分空间。...

python语法相关---3、

python语法相关---3、 一、总结 一句话总结: 人生如负重致远不可急躁 1、python中的匿名函数? lambda 参数1,参数2,参数3:执行代码语 匿名函数冒号后面的表达式有且只有一个,并且是直接return这个表达式的结果 test=lambda x,y:print(x+y) test(2,3) 2、python中的三元表达式? x= "大...

文本检测和识别 代码结构梳理

前言:最近学习了一些OCR相关的基础知识,包含目标检测和自然语言处理。 正好,在数字中国有相关的比赛: https://www.datafountain.cn/competitions/334/details/rule 所以想动手实践一下,实际中发现,对于数据标签的处理和整个检测和识别的流程并不熟悉,自己从头去搞还是有很大难度。 幸好,有大佬们之前开源的一...

用python从redis的有序集合中一次性删除多个值

最近做的一个东西,需要用python从redis的有序集合中一次性删除多个值; redis的自带方法zrem是支持此功能的 # 移除多个元素 redis> ZREM page_rank baidu.com bing.com (integer) 2 python redis 的api 中也支持 zrem(self, name, *values)...

Python读取PDF文档

1 from pdfminer.converter import PDFPageAggregator 2 from pdfminer.layout import LAParams 3 from pdfminer.pdfparser import PDFParser 4 from pdfminer.pdfparser import PDFDocume...

离线安装python的ibm_db模块

目前手头的项目是一个UI自动化框架,其中有些模块的功能需要与DB2数据库交互,于是百度了一下python操作DB2的模块是 ibm_db。 然而我的工作机器是一台windows堡垒机,不能联网,固不能直接使用pip进行安装,所以只能使用离线安装包了。 百度了一下,由于ibm_db模块的安装依赖于其他文件,所以需要下载好几个文件,按照百度上的方法试了一通,然...