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")
如果保存的路径是其他的,则会另存为一个新的
相关文章:

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页的名称读取she…...

【milkv】添加LCD屏GC9306
前言 本章介绍如何添加LCD屏GC9306驱动。 电路图 dts build\boards\cv180x\cv1800b_milkv_duo_sd\dts_riscv\cv1800b_milkv_duo_sd.dts &spi2 {status "okay";/delete-node/ spidev0;gc9306: gc93060{compatible "sitronix,gc9306";reg <0&g…...
设计模式--开篇
什么是设计模式 设计模式是软件开发过程中面临的通用问题的解决方案。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 按使用目的分类 创建型–主要用于创建对象 单例模式-某个类只能有一个实例,提供一个全局的访问点工厂方法模式-创建…...
Android 原生进度条ProgressBar【自带】【水平风格】自定义
由于不想从零开始自定义,Android原生的进度条就已经很够用了呀! <ProgressBarandroid:id"id/pb_storage"style"style/Widget.AppCompat.ProgressBar.Horizontal"android:layout_width"match_parent"android:l…...

Nginx实现tcp代理并支持TLS加密实验
Nginx源码编译 关于nginx的搭建配置具体参考笔者之前的一篇文章:实时流媒体服务器搭建试验(nginxrtmp)_如何在线测试流媒体rtmp搭建成功了吗-CSDN博客中的前半部分;唯一变化的是编译参数(添加stream模块并添加其对应ss…...

vue3+setup 解决:this.$refs引用子组件报错 is not a function
一、如果在父组件中以下四步都没问题的话,再看下面步骤 二、如果父组件引用的是index页面 请在 头部加上以下代码 (如果是form页面请忽略这一步) <template> <a-modalv-model:visible"visible"title"头部名称&…...
189. 轮转数组
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4…...

com.alibaba:tools:jar com.alibaba:jconsole:jar
com.alibaba:tools:jar com.alibaba:jconsole:jar...

洛谷 P1020 [NOIP1999 普及组] 导弹拦截【一题掌握三种方法:动态规划+贪心+二分】最长上升子序列LIS解法详解
P1020 [NOIP1999 普及组] 导弹拦截 前言题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目分析注意事项 代码动态规划(NOIP要求:时间复杂度O(n^2^))贪心二分(O(nlgn)) 后话额外测试用例样例输入 #1…...
golang的管道阻塞问题
package mainimport ("fmt""sync"//"time" ) var wg sync.WaitGroup func writeData(intchan chan int){defer wg.Done()for i : 1; i < 9; i {intchan<-ifmt.Println("写入的数据为:",i)//time.Sleep(time.Seco…...

用HTML + javaScript快速完成excel表格信息除重并合并
今天突然接到一个工作,要把两个存储在.xls的主体信息表,除重后合并成一个主体信息表,并且补充主体类型和所在县区这两列信息。 完成这项工作的方法有很多,如果信息表中的信息量不大的话,手工处理一下也行,如…...

高性能网络编程 - The C10M problem
文章目录 Pre概述回顾C10K实现C10M的挑战思路总结 Pre 高性能网络编程 - The C10K problem 以及 网络编程技术角度的解决思路 概述 在接下来的10年里,因为IPv6协议下每个服务器的潜在连接数都是数以百万级的,单机服务器处理数百万的并发连接࿰…...

java计算机毕业设计SpringBoot在线答疑系统
项目介绍 本文从学生的功能要求出发,建立了在线答疑系统,系统中的功能模块主要是实现管理员权限;首页、个人中心、学生管理、教师管理、问题发布管理、疑难解答管理。教师权限:首页、个人中心、疑难解答管理、试卷管理、试题管理…...

Doc as Code (4):使用Git做版本管理,而不是使用目录做版本管理
▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 在引入版本管理工具之前,文档工程师使用文件系统提供的功能来管理文件。大家是这样工作的: 文件按照分类放在不同的目录里,使用编辑器(如:MS Word)打开文档进…...
【Codeforces】 CF1870E Another MEX Problem
题目链接 CF方向 Luogu方向 题目解法 解法1 考虑优化 d p dp dp 转移次数,即只转移有用的区间 不难发现, m e x ( l , r ) m e x ( l 1 , r ) mex(l,r)mex(l1,r) mex(l,r)mex(l1,r) 或 m e x ( l , r ) m e x ( l , r − 1 ) mex(l,r)mex(l,r-1…...
【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
怎么查找性别为女性的不同学历层次不同学位以及所有人不同职务职称的人数
怎么查找性别为女性的不同学历层次不同学位以及所有人不同职务职称的人数 需求分析: 1.统计性别为女性的所获学位下不同学历层次的人数 2.统计不同职务职称的不同学位和学历层次的人数代码 def cal_xuewei_number(self):# 读取表格文件table pd.read_excel("…...
浅谈Elasticsearch查询和搜索
Elasticsearch查询和搜索 Elasticsearch是一个分布式、实时的搜索和分析引擎,广泛应用于全文搜索、日志分析、实时数据分析等场景。Elasticsearch提供了丰富的查询和搜索功能,如查询DSL、过滤、排序、分页、高亮和聚合等。本文将详细介绍如何在Elastics…...

SLAM从入门到精通(被忽视的基础图像处理)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 工业上用激光slam的多,用视觉slam的少,这是大家都知道的常识。毕竟对于工业来说,健壮和稳定是我们必须要考虑的…...

【C++】继承详解
本篇要分享的内容是关于继承的内容哼哼哼啊啊啊啊啊啊啊啊啊啊啊啊啊啊 以下为本篇目录 目录 1.简单了解继承 2.继承的简单定义 3.继承简单使用 4.继承方式 4.1基类的privat 4.2基类的protected 4.3不可见与private的区别 5.父子类对象赋值转换 6.继承的作用域 7.子…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...
Netty自定义协议解析
目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...