python做excel表格代码_python操作excel表格

我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处理平时工作中用到的测试用例表格,我们一步一步来,慢慢的给各位同学讲明白。

首先,给大家先补个基础的常识,就是你对一个excel的了解有多少?看下图所示:

1867709-20200810163419131-825332587.png

一、excel操作三大对象

workbook 工作薄:一个excel文件会被加载为一个工作薄对象workbook

form 表单:excel文件中,每个sheet表达会被加载成一个工作表对象sheet

cell 单元格:工作表中的每一个格子就是一个单元格,即表格对象cell

好,先把这些基础的知识先了解,因为,excel主要就是操作这三个对象workbook、sheet、cell

以下,我拿一段代码举例,在用python操作excel时,先要安装一个openpyxl,如何安装?

1867709-20200810163857141-1416108396.png

安装完成以后,开始建一个表格文件.xlsx,然后复制或者剪切到python的具体文件夹目录下,以下是我自己随意建的表格:

1867709-20200810164038212-964756808.png

代码如下:

importopenpyxl#第一步:将excel文件加载到一个工作薄对象中

wb = openpyxl.load_workbook("abc.xlsx")#第二步:选择文件中的表单

sh = wb["login"]#第三步:读取内容 ,cell表示单元格

res = sh.cell(row=1, column=1) #第一行第一列

print(res.value) #打印出 111

1867709-20200810164315321-1773148397.png

以上就是简单的示例:读取某个单元格的内容

二、数据的写入

(单独用的不多,不算重点,了解即可)

关于excel数据的写入,单独用的不多,一般会和会面的读取数据写入数据一起结合用,现在只是单独拿出来讲解,先做个大概的了解,可以总结以下四步规律

第一步:将excel文件加载到一个工作薄对象中

wb = openpyxl.load_workbook("文件名")

第二步:选择文件中的表单

sh = wb["表单名"]

第三步:往表格中写入数据

sh.cell(row=行, column=值, value='写入的值')

第四步:保存

wb.save("文件名")

注意:在往excel中,写入数据的时候,文件不能处于一个打开的状态,否则会报错

importopenpyxl#第一步:将excel文件加载到一个工作薄对象中

wb = openpyxl.load_workbook("abc.xlsx")#第二步:选择文件中的表单

sh = wb["login"]#第三步:往表格中写入数据

sh.cell(row=1, column=1, value='jack')#第四步:保存

wb.save("abc.xlsx") #打开表格看,111已经变为jack

三、数据的批量读取

比如:给你一张表格,把表格的内容,一次性读取出来,怎么办?如何操作?如何用python来实现

importopenpyxl#第一步:将excel文件加载到一个工作薄对象中

wb = openpyxl.load_workbook("yyy.xlsx")#第二步:选择文件中的表单

sh = wb["login"]

res=list(sh.rows)for item inres:for c initem:print(c.value, end=" ")print() #起着换行的作用

1867709-20200810194622558-812883325.png

四、excel用例数据读取组装成列表嵌套字典的格式

先给大家看一下这张表 testcases ,

1867709-20200810195508612-314557200.png

我们想把它读取出来,转化成开头的那种列表中嵌套字典的模式,怎么来弄?有的同学要问,为什么要弄成那种格式,因为,要和ddt结合起来使用,转化成这种格式:

1867709-20200810195715729-1986453261.png

方便ddt的使用,只要转化成这个列表中嵌套字典的格式,以后可以直接套用

importopenpyxl#第一步:将excel文件加载到一个工作簿对象中

wb = openpyxl.load_workbook("testcases.xlsx")#第二步:选择文件中的表单

sh = wb["login"]

res=list(sh.rows)#获取第一行的单元格

title =[]#遍历第一行所有的单元格,将格子中的值添加到列表title中

for c inres[0]:

title.append(c.value)

cases_data=[]#遍历除第一行之外所有的行

for row in res[1:]:

data=[]for c inrow:

data.append(c.value)

item=dict(zip(title, data))

cases_data.append(item)print(cases_data)

1867709-20200810211110650-1887358541.png

五、excel的封装

importopenpyxlclassExcel:def __init__(self, filename, sheet_name):

self.filename=filename

self.sheet_name=sheet_namedefread_data(self):"""读数据"""

#第一步:将excel文件加载到一个工作簿对象中

wb =openpyxl.load_workbook(self.filename)#第二步:选择文件中的表单

sh =wb[self.sheet_name]

res=list(sh.rows)#获取第一行的单元格

title =[]#遍历第一行所有的单元格,将格子中的值添加到列表title中

for c inres[0]:

title.append(c.value)

cases_data=[]#遍历除第一行之外所有的行

for row in res[1:]:

data=[]for c inrow:

data.append(c.value)

case=dict(zip(title, data))#print(case)

cases_data.append(case)returncases_datadefwrite_data(self, row, column, value):"""写数据"""

#第一步:将excel文件加载到一个工作簿对象中

wb =openpyxl.load_workbook(self.filename)#第二步:选择文件中的表单

sh =wb[self.sheet_name]

sh.cell(row=row, column=column, value=value)

wb.save(self.filename)

未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 查看程序ip地址(面对小白)

前言:Windows自带资源管理器可以查看程序的IP地址。下面以微信通话为例,详细步骤如下(面向小白): 打开任务管理器 打开方法(以下方法都可以): 键盘按住 【ctrl】 【alt】 【delete】 ,选择【任务管理器】Windows 10 以下系统…

【转】C#中相同不同程序集存在相同的命名空间的时候的冲突解决办法

快速解决办法描述描述: 1.将相同命名空间的不同程序集分别进行取别名:【具体操作:右击相同程序的引用,在别名上修改,默认的为global】。 2.调用:在所在调用文件里面最前面写 extern alias 别名,然后using 别名.Names…

chrome webdriver_(最新版)如何正确移除Selenium中的 window.navigator.webdriver

摄影:产品经理产品经理的三文鱼炒饭在《一日一技:如何正确移除Selenium中window.navigator.webdriver的值》一文中,我们介绍了在当时能够正确从Selenium启动的Chrome浏览器中移除window.navigator.webdriver的方法。后来时过境迁,…

【转】2.3async中必须始终返回Task(@Ron.liang)

Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章 目录 前言1. 异常的发生来得太突然2. 问题所在3. 问题的解决方案前言 事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题;但是就是莫名其妙的报…

php隐藏webshell_PHP 安全的十个必备技巧

在这篇文章中,我将尝试为你提供一些可以提高 PHP 应用程序安全性的具体步骤。我关注的是 PHP 配置本身,所以我们不会讨论 SQL 注入、HTTPS 或其他与 PHP 无关的问题。我将使用我的 docker-entrypoint.sh 脚本中的 bash 行来说明示例,但当然你…

aop实现原理_Java:由浅入深揭开 AOP 实现原理

点击上方“Java专栏”,选择“置顶或者星标”第一时间阅读精彩文章!1、☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜2、☞ 《Java面试手册》.PDF 点击查看作者:马佩juejin.im/post/5bf4fc84f265da611b57f906概述&a…

【转】C#进阶系列——WebApi 接口参数不再困惑:传参详解

阅读目录 一、get请求 1、基础类型参数2、实体作为参数3、数组作为参数4、“怪异”的get请求二、post请求 1、基础类型参数2、实体作为参数3、数组作为参数4、后台发送请求参数的传递三、put请求 1、基础类型参数2、实体作为参数3、数组作为参数四、delete请求五、总结正文 前…

【转】01Teams的前世今生

说到Teams,这到底是一个什么产品?有人说它是团队协作工具,有人说它是云视频系统,有人说它是Hub,还有人说它是微软有史以来发展最快的一个产品,还有人说它完全是一个高效办公神器。其实都是对的。 Teams集成…

oracle insert 当前时间_Oracle知识点总结

目录1、Oracle的安装与下载2、基础查询3、条件查询 1)对比运算符 2)逻辑运算符 3)模糊查询 4)排序4、函数 1)数值函数 2)字符函数 3)时间日期函数 4)转换函数 5)通用函数5、聚合函数6、分组查询在学习Oracle之前,需要先有一定的数据库基…

【转】C#各类控件的输入输出(思维导图、知识点分析、案例解析)

第六周学习笔记—C#各类控件的输入输出 1.思维导图 知识点汇总: 着重介绍几个常用控件: 数据显示控件 DataGridView控件 列设置 a)、列的宽度铺满这个控件 设置如下:把AutoSizeColumnsModeFill;//可以在属性窗口中设置 b)、列名居中 代…

sqlserver连接字符串_10分钟使用EF Core连接MSSQL数据库

(给DotNet加星标,提升.Net技能)转自:Ron.liangcnblogs.com/viter/p/10243577.html前言在 .NET Core 2.2中Microsoft.AspNetCore.App 默认内置了EntityFramework Core 包,所以在使用过程中,我们无需再从NuGet仓库单独应用 EFCore 包…

【转】ADO.Net之SqlConnection、 Sqlcommand的应用学习心得(思维导图,知识解析,案例分析)

ADO.Net之SqlConnection、 Sqlcommand的应用 一、思维导图: ADO.NET与SQL连接: 二、知识点介绍: SqlConnection和Sqlcommand都是组成数据提供程序的类。 SqlConnection使用它来建立和数据库的连接,Sqlcommand使用它执行SQL命令…

professional中文_Microsoft office 2007 简体中文版

点击蓝字 关注小白软件名称:Microsoft office 2007软件语言:简体中文软件大小:0.67GB安装环境:Win10/8/7下载链接:https://pan.baidu.com/s/1DybozQ-rn-t2s2EC7FrvFw 提取码:zoa0安装步骤1、解压安装包&…

【转】设计模式 ( 十七) 状态模式State(对象行为型)

设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。…

【OSG学习】准备开发调试环境

环境 本人当前使用的环境是VS2013 Ultimate Update5 WIN10。 OSG编译安装 下载编译OSG源码不要克隆github上的源码,而是下载稳定版本的OSG源码进行编译。因为github上的源码处于开发阶段,我们应该优先选择稳定版本,我使用的是OpenSceneGr…

【Qt开发经验】Qt信号槽连接不成功问题原因汇总

以下几种情况会导致信号槽连接不成功,下面分别描述。 1. 拥有信号槽的类,必须继承QObject,声明Q_OBJECT宏。 Qt帮助手册里搜索 “Signals & Slots”,可以看到以下说明: 想要使用信号槽,必须继承QOb…

【转】.Net中的异步编程总结

一直以来很想梳理下我在开发过程中使用异步编程的心得和体会,但是由于我是APM异步编程模式的死忠,当TAP模式和TPL模式出现的时候我并未真正的去接纳这两种模式,所以导致我一直没有花太多心思去整理这两部分异步编程模型。今天在CodeProject上…

学习swing鼠标点击事件心得体会_西门子COMOS软件开发定制学习8-查询列表间的数据交互...

​本篇在西门子COMOS软件开发定制学习6-管理界面定制基础上定制,简单介绍两个查询列表之间的数据交互。实现效果:在左侧列表中选择某一设备,右侧列表自动根据所选设备,显示该设备相关的设计图纸(如PID图纸或电气图纸等)&#xff1…

【转】异步编程:.NET 4.5 基于任务的异步编程模型(TAP)

最近我为大家陆续介绍了“IAsyncResult异步编程模型 (APM)”和“基于事件的异步编程模式(EAP)”两种异步编程模型。在.NET4.0 中Microsoft又为我们引入了新的异步编程模型“基于任务的异步编程模型(TAP)”,并且推荐我们在开发新的多线程应用程序中首选TAP&#xff0…

python实验题_python实验二

安徽工程大学 Python 程序设计 实验报告 班级 物流191 姓名 王凡 学号 3190505102 成绩____________ 日期20200322 指导教师 修宇 【实验名称】 实验二 顺序结构程序设计 【思考题】 (注意不要漏答) 1、影响题1和题3计算准确性的因素有哪些?如…