当前位置: 首页 > 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.子…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...