当前位置: 首页 > news >正文

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 同一坐标&#xff0c;重复写入 二、读取 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…...

设计模式--开篇

什么是设计模式 设计模式是软件开发过程中面临的通用问题的解决方案。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 按使用目的分类 创建型–主要用于创建对象 单例模式-某个类只能有一个实例&#xff0c;提供一个全局的访问点工厂方法模式-创建…...

Android 原生进度条ProgressBar【自带】【水平风格】自定义

由于不想从零开始自定义&#xff0c;Android原生的进度条就已经很够用了呀&#xff01; <ProgressBar​android:id"id/pb_storage"​style"style/Widget.AppCompat.ProgressBar.Horizontal"​android:layout_width"match_parent"​android:l…...

Nginx实现tcp代理并支持TLS加密实验

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

vue3+setup 解决:this.$refs引用子组件报错 is not a function

一、如果在父组件中以下四步都没问题的话&#xff0c;再看下面步骤 二、如果父组件引用的是index页面 请在 头部加上以下代码 &#xff08;如果是form页面请忽略这一步&#xff09; <template> <a-modalv-model:visible"visible"title"头部名称&…...

189. 轮转数组

给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 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 提示题目分析注意事项 代码动态规划&#xff08;NOIP要求&#xff1a;时间复杂度O(n^2^)&#xff09;贪心二分&#xff08;O(nlgn)&#xff09; 后话额外测试用例样例输入 #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("写入的数据为&#xff1a;",i)//time.Sleep(time.Seco…...

用HTML + javaScript快速完成excel表格信息除重并合并

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

高性能网络编程 - The C10M problem

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

java计算机毕业设计SpringBoot在线答疑系统

项目介绍 本文从学生的功能要求出发&#xff0c;建立了在线答疑系统&#xff0c;系统中的功能模块主要是实现管理员权限&#xff1b;首页、个人中心、学生管理、教师管理、问题发布管理、疑难解答管理。教师权限&#xff1a;首页、个人中心、疑难解答管理、试卷管理、试题管理…...

Doc as Code (4):使用Git做版本管理,而不是使用目录做版本管理

▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 在引入版本管理工具之前&#xff0c;文档工程师使用文件系统提供的功能来管理文件。大家是这样工作的&#xff1a; 文件按照分类放在不同的目录里&#xff0c;使用编辑器&#xff08;如&#xff1a;MS Word&#xff09;打开文档进…...

【Codeforces】 CF1870E Another MEX Problem

题目链接 CF方向 Luogu方向 题目解法 解法1 考虑优化 d p dp dp 转移次数&#xff0c;即只转移有用的区间 不难发现&#xff0c; 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汇总

方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

怎么查找性别为女性的不同学历层次不同学位以及所有人不同职务职称的人数

怎么查找性别为女性的不同学历层次不同学位以及所有人不同职务职称的人数 需求分析&#xff1a; 1.统计性别为女性的所获学位下不同学历层次的人数 2.统计不同职务职称的不同学位和学历层次的人数代码 def cal_xuewei_number(self):# 读取表格文件table pd.read_excel("…...

浅谈Elasticsearch查询和搜索

Elasticsearch查询和搜索 Elasticsearch是一个分布式、实时的搜索和分析引擎&#xff0c;广泛应用于全文搜索、日志分析、实时数据分析等场景。Elasticsearch提供了丰富的查询和搜索功能&#xff0c;如查询DSL、过滤、排序、分页、高亮和聚合等。本文将详细介绍如何在Elastics…...

SLAM从入门到精通(被忽视的基础图像处理)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 工业上用激光slam的多&#xff0c;用视觉slam的少&#xff0c;这是大家都知道的常识。毕竟对于工业来说&#xff0c;健壮和稳定是我们必须要考虑的…...

【C++】继承详解

本篇要分享的内容是关于继承的内容哼哼哼啊啊啊啊啊啊啊啊啊啊啊啊啊啊 以下为本篇目录 目录 1.简单了解继承 2.继承的简单定义 3.继承简单使用 4.继承方式 4.1基类的privat 4.2基类的protected 4.3不可见与private的区别 5.父子类对象赋值转换 6.继承的作用域 7.子…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...