python自动化测试(十一):写入、读取、修改Excel表格的数据

目录

一、写入

1.1 安装 xlwt

1.2 增加sheet页

1.2.1 新建sheet页

1.2.2 sheet页写入数据

1.2.3 excel保存

1.2.4 完整代码

1.2.5 同一坐标,重复写入

二、读取

2.1 安装读取模块

2.2 读取sheet页

2.2.1 序号读取shee页

2.2.2 通过sheet页的名称读取sheet页

2.2.3 打印出表格中数据最远的行数和列数

2.2.3.1 打印最远行数

2.2.3.2 打印列数(用得不多)

2.2.4 循环获取行的数据

三、修改

3.1 安装修改模块

3.2 copy读取到的sheet页并修改


一、写入

1.1 安装 xlwt

安装指令:pip install xlwt

安装完成,导入xlwt后,xlwt中有一个函数,Workbook()

Workbook()函数以变量进行储存

rt xlwt
excel = xlwt.Workbook()

1.2 增加sheet页

1.2.1 新建sheet页

excel.add_sheet(参数1,参数2)

参数1:sheet页名称

参数2:是否允许覆盖,默认为false(可不写)

# excel.add_sheet("login") # 登录sheet页
# 并把该sheet页赋值给一个变量
sheet = excel.add_sheet("login")

此时,需要往sheet页中写入内容

1.2.2 sheet页写入数据

存储sheet页的变量.write(行,列,内容)

行和列的序号从 0 开始

例如:在第二行第三列的单元格中输入 HelloWord

excel.write(2,3,"HelloWord") # 这是错误的写法,会报错没有这个write方法
sheet.write(2,3,"HelloWord")

在完成写入后,需要对excel进行保存

1.2.3 excel保存

excel.save(参数1)

参数1:保存的文件路径,确定到文件名,路径为绝对路径

excel文件的后缀有两个格式:xls、xlsx

excel.save("D:/Test/test01.xlsx")

这里创建一个excel表格在D盘Test目录下,把上面sheet页的数据写入到该表格中

1.2.4 完整代码

# coding=utf-8
import xlwt
excel = xlwt.Workbook()
sheet = excel.add_sheet("login")
sheet.write(2, 3, "HelloWord") # 序号从0开始
excel.save("D:/Test/test01.xlsx")

1.2.5 同一坐标,重复写入

如果在第二行第三列的位置中,再次进行一次输入

sheet.write(2, 3, "HelloWord")
sheet.write(2, 3, "Python")

那么则会出现一个单元格覆盖错误的问题,以及单元格的覆盖写入是否OK

如果需要允许覆盖写入,就需要在sheet页后面,添加允许覆盖写入的参数

sheet页变量 = excel.add_sheet("sheet页名",cell_overwrite_ok=true)

sheet = excel.add_sheet("login", cell_overwrite_ok=True)

完整代码

sheet = excel.add_sheet("login", cell_overwrite_ok=True)
sheet.write(2, 3, "HelloWord")
sheet.write(2, 3, "Python")

二、读取

2.1 安装读取模块

执行指令:pip install xlrd

安装完xlrd后,需要进行导入,然后进行读取文件

import xlrd
xlrd.open_workbook("读取的文件名称")

文件的名称可以用变量进行存储

import xlrd
filename = "D:/Test/test01.xlsx"
excel = xlrd.open_workbook(filename)

2.2 读取sheet页

读取sheet页,可以通过名称和序号进行读取,但是建议通过名称进行读取,序号可能会因其他原因发生改变

2.2.1 序号读取shee页

序号读取语法:excel.sheet_by_index(序号)

序号从0开始

可以测试打印一下

# 读取sheet页
sheet = excel.sheet_by_index(1)
print(sheet)

运行,发生报错:list index out of range

报错:我提供的序号已经超出了这个sheet的序号

打开写操作的excel表,底部是只有一个sheet

那么,序号应该是从 0 开始

sheet = excel.sheet_by_index(0)
print(sheet)

打印结果:Sheet  0:

2.2.2 通过sheet页的名称读取sheet页

语法:excel.sheet_by_name("sheet名")

# 通过名称的方式获取sheet页
sheet = excel.sheet_by_name("login")
print(sheet)
# 打印结果:Sheet  0:<login>

2.2.3 打印出表格中数据最远的行数和列数

2.2.3.1 打印最远行数

执行语句:sheet.nrows

# 通过名称的方式获取sheet页
sheet = excel.sheet_by_name("login")
print(sheet.nrows)  # 第八行

此处的行和列则从1开始

2.2.3.2 打印列数(用得不多)

语法:sheet.ncols

sheet = excel.sheet_by_name("login")
print(sheet.ncols) # 5

2.2.4 循环获取行的数据

循环的范围是:sheet.nrows

函数

1、sheet.row_values(i):获取每一行的值,每一次随着i的值发生变化,读取到的数据被list类型存储

执行循环,并把sheet.row_values(i)获取到的数据存入变量rv中

打印值和type

nr = sheet.nrows
for i in range(nr):  # 8行循环八次
    # 每次循环,拿到一行的数据
    rv = sheet.row_values(i)
    print(rv, type(rv))
"""
['', '', '', '', ''] <class 'list'>
['', '', '', '', ''] <class 'list'>
['', '', '', 'Python', ''] <class 'list'>
['', '', '', '', ''] <class 'list'>
['', '', '', 'Hello', 'Vue'] <class 'list'>
['', '', '', '', ''] <class 'list'>
['', '', '', '', ''] <class 'list'>
['', 'World', '', '', ''] <class 'list'>    
"""     

如果表单元格中,有数字存在,则修改为文本格式,右键-->单元格格式-->文本-->确定

手机号、数值、日期等也excek中转为文本类型

↑以上内容为单行读取

↓行内单独提取索引值

在上述内容中,通过循环sheet页的最大值,获取到每一行的数据,此时,也可以直接去通过索引赋值

nr = sheet.nrows
for i in range(nr):  # 8行循环八次
    # 每次循环,拿到一行的数据
    rv = sheet.row_values(i)
    a, b, c, d, e = rv[0], rv[1], rv[2], rv[3], rv[4]
    print(f"{a},{b},{c},{d},{e}")
"""
,,,,
,,,,
,,,Python,
,,,,
,,,Hello,Vue
,,,,
,,,,
,World,,,
"""    

三、修改

3.1 安装修改模块

指令:pip install xlutils

导入修改的模块

from xlutils.copy import copy
# 导入的是xlutils中的copy模块

要进行修改模块,就需要先读取,再修改

再添加读取模块

# 1、导入修改模块
from xlutils.copy import copy
# 2、导入读取模块,读取文件
import xlrd
filename = "D:/Test/test01.xlsx"
excel = xlrd.open_workbook(filename)

而要进行的修改操作,是把原有的sheet页进行copy后,再新的表进行修改

3.2 copy读取到的sheet页并修改

# 复制
new_excel = copy(excel)
# 读取到修改以后的excel,赋值到新的变量去修改内容
sheet = new_excel.get_sheet(0)
# 在获取到的序列写入新的内容(修改Python的值)
sheet.write(2, 3, "JavaScript")
# 保存,以新的excel保存
# 如果是原地址,则是保存,否则是另存为
new_excel.save("D:/Test/test02.xlsx")

如果保存的路径是其他的,则会另存为一个新的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实用知识(工作中常用)

mybatis-plus联表查询 pom.xml坐标 <!-- mybatis-plus-join --> <dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join</artifactId><version>1.2.4</version> </dependency>使用步骤&…

【可视化Java GUI程序设计教程】第5章 Swing容器的使用

Swing采用自顶向下的方式构建GUI&#xff0c;即先创建容器&#xff0c;再向容器中添加组件。 “组件”面板中的Swing容器 5.1 面板容器&#xff08;JPanel&#xff09; 5.5.1 使用方法 创建面板有以下两种方法 &#xff08;1&#xff09;创建一个窗体&#xff08;JFrame&…

SAP BASIS SET_PARAMETER_ID_TOO_LONG

ji 原因 DATA:curvbelnid(40) TYPE c,"问题在这里curposnrid(40) TYPE c. "问题在这里curvbelnid sy-uname && VN.curposnrid sy-uname && PR.SET PARAMETER ID curvbelnid FIELD i_vbeln . SET PARAMETER ID curposnrid FIELD i_posnr . 改成 D…

ci-cd的流程

1、项目在gitlab上&#xff0c;从gitlab上使用git插件获取源码&#xff0c;构建成war包&#xff0c;所以使用tomcat作为运行环境 发布 &#xff1a;使用maven插件发布&#xff0c;使用ssh连接。

【Android】画面卡顿优化列表流畅度一

卡顿渲染耗时如图&#xff1a; 卡顿表现有如下几个方面&#xff1a; 网络图片渲染耗时大上下滑动反应慢&#xff0c;甚至画面不动新增一页数据加载渲染时耗时比较大&#xff0c;上下滑动几乎没有反应&#xff0c;画面停止没有交互响应 背景 实际上这套数据加载逻辑已经运行…

支持向量机 (SVM):初学者指南

照片由 Unsplash上的 vackground.com提供 一、说明 SVM&#xff08;支持向量机&#xff09;简单而优雅用于分类和回归的监督机器学习方法。该算法试图找到一个超平面&#xff0c;将数据分为不同的类&#xff0c;并具有尽可能最大的边距。本篇我们将介绍如果最大边距不存在的时候…

Failed to connect to github.com port 443:connection timed out

解决办法&#xff1a; 步骤1&#xff1a; 在这里插入图片描述 步骤2&#xff1a; -步骤3 &#xff1a;在git终端中执行如下命令&#xff1a; git config --global http.proxy http:ip:port git config --global https.proxy http:ip:port git config --global http.proxy htt…

重磅发布 OpenAI 推出用户自定义版 ChatGPT

文章目录 重磅发布 OpenAI 推出用户自定义版 ChatGPT个人简介 重磅发布 OpenAI 推出用户自定义版 ChatGPT OpenAI 首届开发者大会 (OpenAI DevDay) 于北京时间 11 月 7 日凌晨 02:00 开始&#xff0c;大会上宣布了一系列平台更新。其中一个重要更新是用户可以创建他们自己的自定…

智慧农业:农林牧数据可视化监控平台

数字农业是一种现代农业方式&#xff0c;它将信息作为农业生产的重要元素&#xff0c;并利用现代信息技术进行农业生产过程的实时可视化、数字化设计和信息化管理。能将信息技术与农业生产的各个环节有机融合&#xff0c;对于改造传统农业和改变农业生产方式具有重要意义。 图扑…

SysML理论知识

概述 由来 长期以来系统工程师使用的建模语言、工具和技术种类很多&#xff0c;如行为图、IDEF0、N2图等&#xff0c;这些建模方法使用的符号和语义不同&#xff0c;彼此之间不能互操作和重用。系统工程正是由于缺乏一种强壮的标准的建模语言&#xff0c;从而限制系统工程师和…

Makefile 介绍

目录 一、Makefile 的规则 二、一个示例 三、make 是如何工作的 四、makefile 中使用变量 五、让 make 自动推导 六、另类风格的 makefile 七、清空目标文件的规则 make 命令执行时&#xff0c;需要一个 Makefile 文件&#xff0c;以告诉 make 命令需要怎么样的去编译和…

用Python实现朴素贝叶斯垃圾邮箱分类

一、实验目的 通过本实验&#xff0c;旨在使用朴素贝叶斯算法实现垃圾邮箱分类&#xff0c;并能够理解并掌握以下内容&#xff1a; 了解朴素贝叶斯算法的基本原理和应用场景。 学习如何对文本数据进行预处理&#xff0c;包括去除标点符号、转换为小写字母、分词等操作。 理解特…

git 生成公钥

1、通过命令 ssh-keygen 生成 SSH Key&#xff1a; ssh-keygen -t ed25519 -C "Gitee SSH Key" 三次回车 2、查看生成的 SSH 公钥和私钥&#xff1a; ls ~/.ssh/ 3、把公钥设置到git id_ed25519.pub 4、测试 ssh -T gitgitee.com 成功&#xff01;&#xff01;&…

Hive3 on Spark3配置

1、软件环境 1.1 大数据组件环境 大数据组件版本Hive3.1.2Sparkspark-3.0.0-bin-hadoop3.2 1.2 操作系统环境 OS版本MacOSMonterey 12.1Linux - CentOS7.6 2、大数据组件搭建 2.1 Hive环境搭建 1&#xff09;Hive on Spark说明 Hive引擎包括&#xff1a;默认 mr、spark、…

从vue源码中看diff算法

一、v-for必须要指定key&#xff0c;其作用是什么&#xff1f; 在源码中有一个函数为&#xff0c;其中就是通过判断两个vnode的type和key进行判断&#xff0c;如果这两个属性相同&#xff0c;那么这两个vnode就是相同&#xff0c;所以在设置key的时候也不可以设置为object等无…

Fortigate SSL VPN路径遍历漏洞(CVE-2018-13379)

Fortigate SSL VPN路径遍历漏洞&#xff08;CVE-2018-13379&#xff09; 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: body"FortiToken clock drift detected" 漏洞复现1. 访问链接查看是否存在漏洞2. 查看用户名密码3. 登录后台 免责声明 仅用于技术交流,目的是…

Spring Cloud - 手写 Gateway 源码,实现自定义局部 FilterFactory

目录 一、FilterFactory 分析 1.1、前置知识 1.2、分析源码 1.2.1、整体分析 1.2.2、源码分析 1.3、手写源码 1.3.1、基础框架 1.3.2、实现自定义局部过滤器 1.3.3、加参数的自定义局部过滤器器 一、FilterFactory 分析 1.1、前置知识 前面的学习我们知道&#xff0c…

OpenAI开源全新解码器,极大提升Stable Diffusion性能

在11月7日OpenAI的首届开发者大会上&#xff0c;除了推出一系列重磅产品之外&#xff0c;还开源了两款产品&#xff0c;全新解码器Consistency Decoder&#xff08;一致性解码器&#xff09;和最新语音识别模型Whisper v3。 据悉&#xff0c;Consistency Decoder可以替代Stabl…

CROS错误 403 preflight 预检

预检 403 响应 Response for preflight 403 forbidden 如上图&#xff0c;配置了请求接口一直报错&#xff0c;前端看了没有什么问题&#xff0c;不知道哪里报错了&#xff0c;那么可能是后端没有设置跨域。&#xff08;或者是设置了&#xff0c;但是可能需要换一种方式&#…

基于springboot实现致远汽车租赁平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现致远汽车租赁平台管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统…