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

Python 操作 Excel,如何又快又好?

➤数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道。Python处理Excel 常用的系列库有:xlrd、xlwt、xlutils、openpyxl

◈xlrd - 用于读取 Excel 文件,支持.xls和.xlsx格式
◈xlwt - 用于写入 Excel 文件,只支持.xls格式
◈xlutils - 操作 Excel 文件的实用工具,如复制、分割、筛选等
◈openpyxl - 既可以读文件、也可以写文件、也可以修改文件;但是,openpyxl 库不支持 xls 格式的Excel文档。

一、安装库的操作

打开cmd,输入命令进行安装:pip install xlwt

打开cmd,输入命令进行安装:pip install xlrd

打开cmd,输入命令进行安装:pip install openpyxl 

二、xlwt库使用

◈xlwt - 用于写入 Excel 文件,只支持.xls格式

1.需求:创建一个新的xls文件中写入如下数据,然后保存为login.xls

2.使用xlwt写入数据的步骤

1)导包:import xlwt
2)创建一个文件对象:book=xlwt.Workbook()
3)添加一个sheet工作表:sh1=book.add_sheet(Sheetname)
4)添加内容:sh1.write(row,col,value)  #单元格行和列分别从0开始
5)保存文件:book.save(filename)

 3.代码实现

# coding = utf-8
import xlwt#创建一个excel文件对象
book = xlwt.Workbook() 
#添sheet工作表
sh1 = book.add_sheet('登录数据') 
sh1.write(0,0,'用户名') # 在A1单元格写入数据
sh1.write(0,1,'密码')   # 在B1单元格写入数据row1 = ['test','test123']
# 结合循环写入一行数据
for i in range(len(row1)): sh1.write(1,i,row1[i])book.save('login.xls') # 保存文件

 

三、xlrd库使用

◈xlrd - 用于读取 Excel 文件,支持.xls和.xlsx格式

1.需求:读取login.xls文件中指定的单元格、指定行、指定的列或者所有的数据

2.使用xlrd读取数据的步骤

1)导包:import xlrd
2)打开一个文件:book=xlrd.open_workbook(filename)
3)使用sheet工作表:sh1=book.sheet_by_name(sheet_name)
4)读取sheet工作表的属性信息print('sheet总行数',sh1.nrows)print('sheet总列数',sh1.ncols)
5)读取sheet工作表存储的文本内容1)读取一行:row1=sh1.row_values(row) # 行号从0开始2)读取一列:col1=sh1.col_values(col) # 列号从0开始3)读取一个单元格:cell_value=sh1.cell(row,col).value

3.代码实现

# coding = utf-8
import xlrdbook = xlrd.open_workbook('login.xls')
sh1 = book.sheet_by_name('登录数据')
# 读取第一行的数据
row1 = sh1.row_values(0)
print('第一行数据:',row1)# 读取第一列的数据
col1 = sh1.col_values(0)
print('第一列数据:',col1)# 读取指定单元格的数据
cell = sh1.cell(1,1).value
print('A2单元格的值:',cell)# 读取所有的数据
rows = sh1.nrows  # 获取当前工作表总的行数
for i in range(rows):print('所有数据打印,第{}行,数据为:{}:'.format(i,sh1.row_values(i)))

4.代码运行结果展示:

四、openpyxl库使用--写入数据

◈openpyxl - 既可以读文件、也可以写文件、也可以修改Excel文件;但是不支持 xls 格式

1.需求:对已存在的test_api.xlsx文件写入接口测试结果,如下图所示

2.使用openpyx写入数据的步骤

1)导包:import openpyxl
2)打开文件:book = openpyxl.load_workbook(filename)
3)使用sheet工作表:sheet = book[sheetname]
4) 单元格写入:sh1['F2'] = 'PASS'  或者 sh1.cell(row,col).value='FAIL'  #行和列的索从1开始
6:保存文件:book.save(filename)

 3.代码实现

# coding = utf-8
import openpyxl# 打开excel文件
book = openpyxl.load_workbook('test_api.xlsx')
# 通过工作表名字打开工作表
sh1 = book['register']
# 通过单元格的名称写入数据
sh1['I2'] = '不通过'
# 通过单元格的行、列写入数据
sh1.cell(3,9).value = '通过'
# 保存文件
book.save('test_api.xlsx')

五、openpyxl库使用--读取数据

1.需求:读取test_api.xls文件中login工作表指定的单元格、指定行、或者所有的数据

2.使用openpyx读取数据的步骤

1)导包:import openpyxl
2)打开文件:book = openpyxl.load_workbook(filename)
3)使用sheet工作表:sheet = book[sheetname]
4)读取sheet工作表的属性信息返回工作表的最大行数:sheet.max_row返回工作表的的最大列数:sheet.max_column
5)读取sheet工作表存储的文本内容
1)按单元格读取:cell1 = sh1['A1'].value 或者 cell2= sh1.cell(row,col).value #行和列的索引值是从1开始的
2) 按行读取for row in sheet.iter_rows(max_row=3):# 读取前3行数据for cell in row:print(cell.value,end='\t')print()

3.代码实现

# coding = utf-8
import openpyxlbook = openpyxl.load_workbook('test_api.xlsx')
sh1 = book['login']
# 读取单元格数据
cell1 = sh1['A1'].value
print('A1单元格的值为:',cell1)
cell2 = sh1.cell(1,2).value
print('B1单元格的值为:',cell2)# 读取前2行数据
print('读取前2行数据:') 
for row in sh1.iter_rows(max_row= 2): # 读取前2行数据for cell in row:print(cell.value,end='\t|\t') # 不换行输出这一行中每个单元格的值print() # 输出完一行之后换行# 读取所有的数据
print('读取所有的数据:')
rows = sh1.max_row  # 获取当前工作表总的行数
for row in sh1.iter_rows(max_row=rows): # 读取所有的数据for cell in row:print(cell.value, end='\t|\t') # 不换行输出这一行中每个单元格的值print() # 输出完一行之后换行

4、运行结果

 

相关文章:

Python 操作 Excel,如何又快又好?

➤数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道。Python处理Excel 常用的系列库有:xlrd、xlwt、xlutils、openpyxl ◈xlrd - 用于读取 Exce…...

Spring Redis 启用TLS配置支持(踩坑解决)

由于线上Redis要启用TLS,搜遍了google百度也没一个标准的解决方案,要不这个方法没有,要不那个类找不到...要不就是配置了还是一直连不上redis.... 本文基于 spring-data-redis-2.1.9.RELEASE 版本来提供一个解决方案: 1.运维那边提供过来三个文件,分别是redis.crt redis.key …...

centOS7忘记登录密码该如何重新修改登录密码

文章目录 前言一、重新修改登录密码1.1、第一步1.2、第二步1.3、第三步1.4、第四步1.5、第五步1.6、第六步1.7、第七步1.8、第八步 前言 忘记密码并不可怕,只要学会方法,密码随时都可以找回。 一、重新修改登录密码 1.1、第一步 当打开centOS7之后忘记…...

揭开基于 AI 的推荐系统的神秘面纱:深入分析

人工智能 (AI) 以多种方式渗透到我们的生活中,使日常任务更轻松、更高效、更个性化。人工智能最重要的应用之一是推荐系统,它已成为我们数字体验不可或缺的一部分。从在流媒体平台上推荐电影到在电子商务网站上推荐产品&#xff0…...

MySQL的事务特性、事务特性保证和事务隔离级别

事务是指要么所有的操作都成功执行,要么所有的操作都不执行的一组数据库操作。 一、MySQL提供了四个事务特性,即ACID: 1. 原子性(Atomicity):一个事务中的所有操作要么全部提交成功,要么全部回…...

shell脚本----函数

文章目录 一、函数的定义1.1 shell函数:1.2函数如何定义 二、函数的返回值三、函数的传参四、函数变量的作用范围五、函数的递归六、函数库 一、函数的定义 1.1 shell函数: 使用函数可以避免代码重复使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更…...

( 位运算 ) 693. 交替位二进制数 ——【Leetcode每日一题】

❓693. 交替位二进制数 难度:简单 给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 示例 1: 输入:n 5 输出:true 解释&#…...

http简述

HTTP(Hypertext Transfer Protocol)是一种用于在Web上传输数据的协议。它是Web的基础,使得我们能够在互联网上访问和共享信息。本文将介绍HTTP的基本概念、工作原理、请求和响应、状态码、安全性和未来发展等方面。 一、HTTP的基本概念 HTT…...

一顿饭的事儿,搞懂了Linux5种IO模型

大家好,我是老三,人生有三大难题,事业、爱情,和 ——这顿吃什么! 人在家中躺,肚子饿得响,又到了不得不吃的时候,这顿饭该怎么吃?吃什么呢? Linux里有五种I…...

C#面向对象的概念

C#面向对象的概念 C#是一种面向对象的编程语言,面向对象编程的核心是将程序中的数据和操作封装在一个对象中。下面是一些面向对象的概念: 类(Class):类是用来描述一类对象的属性和方法的模板或蓝图,它定义…...

探索学习和入门使用GitHub Copilot:提升代码开发的新利器

目录 引言1. 什么是GitHub Copilot?2. 入门使用GitHub Copilot3. GitHub Copilot的基础知识4. GitHub Copilot的应用场景结论 在最近的开发工作中,发现了一个比较实用的工具,github copilot,这是一款基于人工智能的代码助手工具&a…...

在字节跳动做了6年软件测试,4月无情被辞,想给划水的兄弟提个醒

先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入字节,以“人员优化”的名义无情被裁员,之后跳槽到了有赞,一直从事软件测试的工作。之前没有实习经历,算是6年的工作经验吧。 这6年之间完成了一次…...

常见信号质量问题、危害及其解决方法-信号完整性-过冲、噪声、回勾、边沿缓慢

概述 在电路设计中,“信号”始终是工程师无法绕开的一个知识点。不管是在设计之初,还是在测试环节中,信号质量问题都值得关注。在本文中,主要介绍信号相关的四类问题:信号过冲、毛刺(噪声)、回…...

Java 自定义注解及使用

目录 一、自定义注解1.使用 interface 来定义你的注解2.使用 Retention 注解来声明自定义注解的生命周期3.使用 Target 注解来声明注解的使用范围4.添加注解的属性 二、使用自定义的注解1.将注解注在其允许的使用范围2.使用反射获取类成员变量上的所有注解3.反射获取成员变量上…...

ChatGPT的强化学习部分介绍——PPO算法实战LunarLander-v2

PPO算法 近线策略优化算法(Proximal Policy Optimization Algorithms) 即属于AC框架下的算法,在采样策略梯度算法训练方法的同时,重复利用历史采样的数据进行网络参数更新,提升了策略梯度方法的学习效率。 PPO重要的突…...

JavaWeb ( 八 ) 过滤器与监听器

2.6.过滤器 Filter Filter过滤器能够对匹配的请求到达目标之前或返回响应之后增加一些处理代码 常用来做 全局转码 ,session有效性判断 2.6.1.过滤器声明 在 web.xml 中声明Filter的匹配过滤特征及对应的类路径 , 3.0版本后可以在类上使用 WebFilter 注解来声明 filter-cla…...

Notion Ai中文指令使用技巧

Notion AI 是一种智能技术,可以自动处理大量数据,并从中提取有用的信息。它能够 智能搜索:通过搜索文本和查询结果进行快速访问 自动归档:可以根据关键字和日期自动将内容归档 内容分类:可以根据内容的标签和内容的…...

Linux一学就会——编写自己的shell

编写自己的shell 进程程序替换 替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数 以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动 例程开始执行…...

编程练习【有效的括号】

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左…...

Android 音频开发——桌面小部件(七)

对于收音机的车机 APP 开发,一般都有配套的桌面小部件(Widget)开发,这里对小部件的具体实现就不介绍了,这里主要介绍一些桌面(Launcher)中的小部件(Widget)弹出窗口功能实现。 一、功能描述 在小部件上点击按钮,弹出一个有音源选择列表的弹窗,点击其他位置…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...