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) 以多种方式渗透到我们的生活中,使日常任务更轻松、更高效、更个性化。人工智能最重要的应用之一是推荐系统,它已成为我们数字体验不可或缺的一部分。从在流媒体平台上推荐电影到在电子商务网站上推荐产品࿰…...
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)弹出窗口功能实现。 一、功能描述 在小部件上点击按钮,弹出一个有音源选择列表的弹窗,点击其他位置…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
