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

news2024/11/22 22:36:22

目录

一、写入

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")

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

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

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

相关文章

OpenHarmony 社区运营报告(2023 年 10 月)

● 截至 2023 年 10 月&#xff0c;OpenHarmony 社区共有 51 家共建单位&#xff0c;累计超过 6200 名贡献者产生 24.2 万多个 PR&#xff0c;2.3 万多个 Star&#xff0c;6.1 万多个 Fork&#xff0c;59 个 SIG。 ● OpenHarmony 4.0 版本如期而至&#xff0c;开发套件同步升级…

【React】04.MVC模式和MVVM模式

React是Web前端框架 1、目前市面上比较主流的前端框架 ReactAngular&#xff08;NG框架&#xff09;Vue 主流的思想&#xff1a; 不在直接去操作DOM&#xff0c;而是改为“数据驱动思想” 操作DOM思想&#xff1a; 操作DOM比较消耗性能[主要原因就是&#xff0c;可能会导…

Javascript知识点详解:对象、New命令、Object对象的相关方法

目录 对象 对象是什么 构造函数 new 命令 基本用法 new 命令的原理 new.target Object.create() 创建实例对象 Object 对象的相关方法 Object.getPrototypeOf() Object.setPrototypeOf() Object.create() Object.prototype.isPrototypeOf() Object.prototype.__p…

微信定时发圈,让你轻松管理朋友圈!

有时候我们可能因为工作、生活等原因&#xff0c;错过了最佳的发布朋友圈时间。这时&#xff0c;就可以利用朋友圈的定时发送功能&#xff0c;提前编辑好朋友圈内容&#xff0c;设置好发布时间&#xff0c;让你的好友们在正确的时间看到你的动态。 但是怎么做到朋友圈定时发送…

学C++跟着视频学还是跟着书学?

学C跟着视频学还是跟着书学&#xff1f; 感觉得看基础和目标 如果不是喜欢 C 或者以求职 / 完成 C 相关工作为目标的话&#xff0c;菜鸟教程其实都够了&#xff0c;基本语法掌握就差不多&#xff0c;然后多去写。 最近很多小伙伴找我&#xff0c;说想要一些C的资料&#xff0…

无人机-地面站

借鉴于&#xff1a;https://www.yii666.com/blog/343453.html

网络工程实验记录

网络工程 show ip route show running-config 第一周 相同设备使用交叉线&#xff0c;不同设备之间使用直通线 R1能ping通10.1.1.1 R2能ping通所有的 R3能ping通172.16.1.1 即路由器只能到达自身线连接出去的&#xff0c;另一端就连接不了了。 此时给R1分配静态路由 R…

WebDAV之π-Disk派盘 + GeniusScan

推荐一款功能极其强大的手机微型扫描仪软件,可以将所有的东西扫描成为pdf格式的文档,还支持连接葫芦儿派盘服务。GeniusScan让您的安卓设备变身微型扫描仪。它能让您快速扫描文档,将扫描结果保存JPEG或PDF格式,然后通过电子邮件发送。支持将扫描结果上传到云服务(设备已安装…

第7章 文件读取操作

7.5 用python操作文件的3种模式 读的模式打开只能读&#xff0c;写模式打开只能写。 类似于word的只读模式 所以python打开文件得&#x1f51d;文件 文件打开模式&#xff08;文本模式&#xff09; [DEV (v.v) sa_clusterhybrid01 ~]$ cat test.py f open("name_list…

kubernetes集群编排(7)

目录 k8s认证授权 pod绑定sa 认证 授权 k8s认证授权 pod绑定sa [rootk8s2 ~]# kubectl create sa admin //在当前 Kubernetes 集群中创建一个名为 "admin" 的新服务账户[rootk8s2 secret]# vim pod3.yaml apiVersion: v1 kind: Pod metadata:name: mypod spec…

【机器学习4】降维

常见的降维方法有主成分分析、 线性判别分析、 等距映射、 局部线性嵌入、 拉普拉斯特征映射、 局部保留投影等。 1 PCA最大方差角度理解 PCA无监督学习算法。 PCA的目标&#xff0c; 即最大化投影方差&#xff0c; 也就是让数据在主轴上投影的方差最大。 在黄线所处的轴上&…

Jekyll框架编译GithubPages,提示没有docs

Jekyll Converters::Scss build issue: No such file or directory dir_chdir - /github/workspace/docs Error: No such file or directory dir_chdir - /github/workspace/docs 解决方案&#xff1a; 修改github page仓库中–> 设置—> pages 把里面的\docs&#xf…

【星海出品】flask 与docker

import os from flask import Flask, request from flask import Response, make_response, jsonify import cv2 import base64 import io import uuid from main import eye ​ app Flask(__name__)​ app.route(/, methods[GET, POST]) # 添加路由blend def upload_file():…

2023 全栈工程师 Node.Js 服务器端 web 框架 Express.js 详细教程(更新中)

Express 框架概述 Express 是一个基于 Node.js 平台的快速、开放、极简的Web开发框架。它本身仅仅提供了 web 开发的基础功能&#xff0c;但是通过中间件的方式集成了外部插件来处理HTTP请求&#xff0c;例如 body-parser 用于解析 HTTP 请求体&#xff0c;compression 用于压…

dgl安装教程

我在矩池云服务器上安装了一个dgl的环境&#xff0c;以后都可以用这个了 首先我的基础环境是 最终的版本如下 安装步骤如下 pip install dgl0.9.1 -f https://s3.us-west-2.amazonaws.com/dgl-data/wheels/cu113/repo.html注意不能直接使用 pip install dgl -f https://s…

Nginx网关配置

安装Nginx 下载最新版本Nginx nginx: download 解压 双击nginx.exe启动 浏览器访问 localhost 看到如下界面 微服务准备 准备两个服务&#xff0c;例如&#xff1a;product微服务和order微服务 分别启动后&#xff0c;访问相应服务接口 product服务 http://localhost:9001/…

detectron2环境搭建及自定义coco数据集(voc转coco)训练

detectron2建议ubuntu进行环境搭建&#xff0c;Windows大概率报错 一 环境搭建 创建虚拟环境 conda create -n detectron2 python3.8 -y conda activate detectron2后面下载源代码建议存到git中再git clone git clone https://github.com/facebookresearch/detectron2.git …

王道p40 1.设计一个递归算法,递归删除单链表L中所有值为x的结点(c语言)

视频讲解在这里&#xff1a;&#x1f447; p40 第1题 王道数据结构课后代码题c语言代码实现_哔哩哔哩_bilibili 本题代码如下 void delete(linklist* L,int x)//递归删除x {if((*L)->next! NULL){if ((*L)->next->data x)//找到x{lnode* p (*L)->next;(*L)-&…

【第2章 Node.js基础】2.2 Node.js回调函数

学习目标 &#xff08;1&#xff09;理解Node.js的回调函数&#xff1b; &#xff08;2&#xff09;掌握回调函数的使用。 什么是回调函数 回调函数是一种特殊的函数&#xff0c;它作为参数传递给另一个函数&#xff0c;并在特定的事件或条件发生时被调用。回调函数通常用于异…

FreeRTOS学习笔记——SysTick中断

FreeRTOS学习笔记——SysTick中断_freertos tick中断-CSDN博客 FreeRTOS 之六 任务调度原理解析&#xff08;Systick、PendSV、SVC&#xff09;_freertos m0-CSDN博客 FreeRTOS中关于时间的管理分为两部分&#xff1a;一部分是任务的延时管理;前面叙述过一些&#xff0c;还有…