python之excel的封装

将所有excel的操作都使用面向对象的思维进行封装,即将所有操作都放入一个类中即为封装。

它将excel的处理极大程度的进行了简化操作

封装前需要先处理的操作:

1.在本地电脑新建一excel表格,将用例写入表中,可不写实际结果/最终结果,将表复制到使用的python目录下

且在excel封装前请先完成excel中数据之间关系的脚本

例如:关于运算方面的,须要先写好:

1>关于算术的加减乘除运算py文件

2>加/减/乘/除运算时的各自情况的py文件,如:会有两个正数/负数/一正一负等

openpyxl可读可写,较灵活,最常用

xlrw/xlrd只有写/读,不常用

使用openpyxl对excel进行封装:

 from openpyxl import load_workbook  # 调用对excel文件进行读写操作的模块

 class HandleExcel():
"""
定义excel类,处理excel中的数据
"""
def __init__(self,filename,sheetname=None):
self.filename = filename
self.sheetname = sheetname
def get_cases(self):
"""
获取excel中的所有测试用例
:return:
"""
wb = load_workbook(self.filename) # 打开excel表
ws = wb[self.sheetname] # 打开excel中的表单 # 判断表单是否只有一个
if self.sheetname is None: # 如果表单只有一个,那就选默认表单,若表单有若干个,否则就选择指定的表单
ws = wb.active
else:
ws = wb[self.sheetname] # 获取表头信息,结果为嵌套元组的元组,取出元组中第一个元素,即为表头信息内容
head_date_tuple = tuple(ws.iter_rows(max_row=1,values_only= True))[0]
#表头信息为当前表单的标题,在第一行,所以只需限制最大行为1即可 #values_only= True返回单元格的值,如果不加,返回的只是一个对象
# 获取除表头下面的用例信息
one_list=[] #指定一个空列表,后面存放每个用例行的内容
for one_tuple in tuple(ws.iter_rows(ws.iter_rows(min_row=2,values_only=True))): # 获取所有用例存放在元组中,形成嵌套元组的元组,再将元组中的各个元素/每条用例通过for循环一个个取出
#从表单中的第二行算起全是用例内容,为了让所有用例/可能会添加的用例全被执行,这里不限制最大行/最大列;最小列为1,即为默认值,可不写;
one_list.append(dict(zip(head_date_tuple,one_tuple))) # 将用例标题与用例内容一一对应为一组,依次放在空列表中,形成嵌套字典的列表
return one_list # 返回列表,得到所有用例数据

获取某一行的用例

    def get_case(self,row):
"""
获取指定行的用例
:param row: 行号
:return:
"""
return self.get_cases()[row-1] # 行数-1,即为指定行的索引

在指定行写入数据

    def write_data(self,row,actual,result):
"""
在指定行写入数据
:param row: 行号
:param actual: 实际结果
:param result: 最终结果是否通过Fail/Pass
:return:
"""
#同一个workbook对象,如将多个数据写入不同表单,则只有最后一个表单能写入成功---这是openpyxl的特性,无法避免。
#要写入不同的表单,须重新再定义一个workbook对象
other_wb=load_workbook(self.filename)
if self.sheetname is None:
other_ws = other_wb.active
else:
other_ws = other_wb[self.sheetname]
if isinstance(row,int) and (2 <= row <=other_ws.max_row): # 行号为整数,且行号为第2行以后的数据
other_ws.cell(row=row,column=6,value=actual)
other_ws.cell(row=row,column=7,value=result)
other_wb.save(self.filename) # 写入成功后保存文件
other_wb.close() #openpyxl读数据时不关闭,写数据时可关闭也可不关闭
else: # 如果行号不是整数/小于2/大于最大行号了就会报错
print("传入的行号有误,请重新写入")

对自己写的脚本自测

if __name__ == '__main__':  # 自己先测试下上面写的封装类是否正确
filename = "cases.xlsx" # 定义一个filename,指定为cases.excel文件
do_excel = HandleExcel(filename) # 创建一个类,指定为filename文件名
cases = do_excel.get_cases() # 获取所有用例
case = do_excel.get_case(3) # 获取第三行用例
do_excel.write_data(4,"","其他") # 在第4行写入数据
pass

python之excel的封装的更多相关文章

  1. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    一.上传文件 上传一个图片 使用input type="file",来上传一个文件.注意:form表单必须添加属性enctype="multipart/form-data ...

  2. 震惊!当Python遇到Excel后,将开启你的认知虫洞

    本文主要内容:   1. Excel,你为什么如此强大 2. 软件开发也需要团队作战 3. Excel的集成方案演化 4. macOS特有的集成方案:applescript 5. Python与Exc ...

  3. 【Python自动化Excel】Python与pandas字符串操作

    Python之所以能够成为流行的数据分析语言,有一部分原因在于其简洁易用的字符串处理能力. Python的字符串对象封装了很多开箱即用的内置方法,处理单个字符串时十分方便:对于Excel.csv等表格 ...

  4. Python导出Excel为Lua/Json/Xml实例教程(三):终极需求

    相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...

  5. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. python读取excel一例-------从工资表逐行提取信息

    在工作中经常要用到python操作excel,比如笔者公司中一个人事MM在发工资单的时候,需要从几百行的excel表中逐条的粘出信息,然后逐个的发送到员工的邮箱中.人事MM对此事不胜其烦,终于在某天请 ...

  8. 使用Python将Excel中的数据导入到MySQL

    使用Python将Excel中的数据导入到MySQL 工具 Python 2.7 xlrd MySQLdb 安装 Python 对于不同的系统安装方式不同,Windows平台有exe安装包,Ubunt ...

  9. 使用Python对Excel表格进行简单的读写操作(xlrd/xlwt)

    算是一个小技巧吧,只是进行一些简单的读写操作.让人不爽的是xlrd和xlwt是相对独立的,两个模块的对象不能通用,读写无法连贯操作,只能单独读.单独写,尚不知道如何解决. #①xlrd(读) #cod ...

随机推荐

  1. 原生js实现随着滚动条滚动,导航会自动切换的效果

    最近学习前端,把前面用原生js写的一段有关tab切换效果的代码贴上,实现的效果比较简陋,请大家见谅 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  2. Polly每次重试执行不同的操作

    Polly每次重试执行不同的操作 前言   最近在写WG(用的 .net core 3.1 + wpf + abp vnext),程序里大量用到了重试机制选用的是Polly组件(只知道这个...). ...

  3. python基础学习day7

    基础数据类型的补充:编码的进阶 str capitalize() 首字母(第一个单词)大写,其余变小写 s1 = 'I LIVE YOU' print(s1.capitalize()) >> ...

  4. TCP断开连接(四次挥手)

    四次挥手 ACK建立连接之后都为1. 1.A发送释放连接报文段,FIN=1. 2.B收到并回复确认,TCP进入半关闭状态,即此时B能向A发送,但是A无法向B发送数据. 3.当B传输完所有数据之后,发送 ...

  5. sqlmap详解

    sqlmap是一个自动化的sql注入工具,其主要功能是扫描.发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库有MySQL, Oracle,PostgreSQL, Microsof ...

  6. IE浏览器下载文件中文文件名乱码问题解决

    处理过程 根据IE的F12中的log提示,是因为http头信息中的编码替换了html文件中的编码.我最初的思路是设置Tomcat默认编码,但是我发现我已经在Server.xml中设置过,想到这里我想到 ...

  7. CentOS7系统服务管理systemctl

    目录 一.systemctl介绍 二.systemctl常用命令 1.启动服务 2.停止服务 3.重启服务 4.查看服务是否已启动 5.查看服务的状态 6.启用开机自启动服务 7.停用开机自启动服务 ...

  8. 李宏毅老师机器学习课程笔记_ML Lecture 1: ML Lecture 1: Regression - Demo

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  9. Anomaly Detection-异常检测算法(Coursera-Ng-ML课程)

    现实生活中有许多需要提前预防一些异常问题出现的情况,例如在飞机起飞前,对飞机各部分进行评估,看发动机等各个零件是否性能正常,若有潜在的问题(可能出现异常情况),则需要及时检修或更换. 那么我们如何去评 ...

  10. 在Windows中安装OpenCV-Python |四

    目标 在本教程中 我们将学习在你的Windows系统中设置OpenCV-Python. 下面的步骤在装有Visual Studio 2010和Visual Studio 2012的Windows 7- ...