python—openpyxl操作excel详解
前言
openpyxl属于第三方模块,在python中用来处理excel文件。
可以对excel进行的操作有:读写、修改、调整样式及插入图片等。
但只能用来处理【 .xlsx】 后缀的excel文件。
使用前需要先安装,安装方法:
pip install openpyxl
注:一个excel文件可看做是一个工作簿,工作簿中的一个Sheet就是一个工作表。
详细使用方法
1、创建一个excel工作簿对象
进行读写、修改等操作前,需要创建一个可供操作的excel工作簿对象。
分以下2种情况和方法:
第一种:新建一个excel工作簿对象
情况1:写入数据,本地没有现成可直接写入的excel工作簿时。
使用Workbook类,新建一个excel工作簿对象,用来后续进行读写等处理。
from openpyxl import Workbook
# 新建一个excel工作簿对象
wb = Workbook()
# 保存新建的excel工作簿
wb.save('excel_test.xlsx')
注:(1)该类在新建excel工作簿的同时,也会新建了一个工作表(默认名为:Sheet)。
(2).save(保存路径)方法,对excel进行保存,写入或修改excel后,都需要保存。
(3)如果当前保存路径下,已经有一个同名excel文件,不会提示且原文件被覆盖。
上述代码,.save()保存,运行后,如下图:

第二种:读取已有excel
情况2:读取本地已存在的excel,用来后续进行读写等处理。
方法:load_workbook(已有excel文件路径),如果路径中excel文件不存在,将会报错。
from openpyxl import load_workbook
# 读取已存在的excel工作薄
wb = load_workbook('excel_test.xlsx')
2、创建excel工作簿中的工作表
openpyxl提供了可自定义工作表的方法。
工作表,即是常见说法的【Sheet】。
创建自定义名称的工作表,语法如下:
Workbook.create_sheet(title,index)
title:工作表的名称,可省略,系统自动命名(Sheet, Sheet1, Sheet2, ...)。 index:工作表的位置,可省略,默认插在工作表末尾,0表示插在第一个。
# 自定义工作表
ws1 = wb.create_sheet('test')
ws2 = wb.create_sheet()
# 保存
wb.save('excel_test.xlsx')

3、查看excel工作簿中的所有工作表
查看excel工作簿中已存在的所有工作表,有以下3种方法。
第一种:.sheetnames
# 查看所有工作表
sheet_lis = wb.sheetnames
print(sheet_lis)
![]()
第二种:.get_sheet_names()
# 查看所有工作表
sheet_lis1 = wb.get_sheet_names()
print(sheet_lis1)
![]()
第三种:循环得到所有工作表
# 查看所有工作表
for sheet in wb:print(sheet.title)

4、获取工作表
进行读写、修改数据等操作时,首先需要获取工作簿中的工作表(即Sheet),作为操作对象。
3种获取工作表的方法,如下:
第一种:.active 方法
默认获取工作簿的第一张工作表
# 获取第一张工作表
ws = wb.active
![]()
第二种:通过工作表名获取指定工作表
ws = wb['test']
print(ws)
![]()
第三种:.get_sheet_name()
通过工作表名,使用方法:.get_sheet_name(工作表名)
ws3 = wb.get_sheet_by_name('Sheet1')
print(ws3)
![]()
5、修改工作表的名称
使用.title属性,修改工作表名称。
修改工作表名称前,要先指定需要修改的工作表
# 获取要修改的工作表
ws1 = wb['text']
ws2 = wb['Sheet1']
# 修改工作表的名称
ws1.title = '测试'
ws2.title = '测试1'
# 保存
wb.save('excel_test.xlsx')

6、数据操作
以下是openpyxl最常用的【读写】操作。
在进行【读写】操作时,首先需要创建一个excel工作簿对象,然后对该对象中的工作表(sheet)进行操作。
以下,将以读取本地已存在的excel_test.xlsx作为工作簿对象wb,进行举例。
from openpyxl import load_workbook
# 读取已存在的excel工作薄
wb = load_workbook('excel_test.xlsx')
注:在进行读写、修改等操作后,记得保存。
6.1、写入数据
(1)按单元格写入
直接赋值法
# 选择要写入的工作表
sheet1 = wb['测试']
# 写入单元格
cell = sheet1['A1']
cell.value = '测试数据'
# 保存
wb.save('excel_test.xlsx')

上述可以简化为:
# 选择要写入的工作表
sheet1 = wb['测试']
sheet1['A2'] = '姓名'
# 保存
wb.save('excel_test.xlsx')

通过指定坐标赋值方式,将数据写入单元格。
方法:.cell(row,column,value)
row :行, column :列数,value:需要写入的数据。
# 选择要写入的工作表
sheet1 = wb['测试']
# 写入数据
sheet1.cell(row=3, column=4, value='一位代码')
# 保存
wb.save('excel_test.xlsx')

(2)按行写入数据
.append(data)方法,传一个单层列表格式数据。
# 选择要写入的工作表
sheet1 = wb['测试1']
# 写入一行数据
data1 = [1, 2, 3, 4]
sheet1.append(data1)
# 保存
wb.save('excel_test.xlsx')
注:append()只能接受单层列表格式数据,多层列表需要循环写入

6.2、读取数据
(1)获取工作表中已有全部数据
.values:获取目标工作表中已有全部数据,返回值是一个对象,需要进行转换。
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 获取所有值
print('返回值:', sheet1.values)
print('返回值转换后:', list(sheet1.values))

以上方法,还可以用循环来写,如下:
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 循环获取
for row in sheet1.values:print(row)
![]()
(2)获取指定范围内的值
获取指定单元格的值
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 指定单位格的值
cell1 = sheet1['A1']
print(cell1.value)
获取指定范围内单元格的值
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 指定坐标范围
cells = sheet1['A1':'B2'] # 还可以写成['A1:B2']
print('指定范围:', cells)
# 获取单元格的值
for row in cells:for cell in row:print(cell.value)

获取指定列的值
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 指定列
cells = sheet1['A']# 多列['A:c']
print('指定列:', cells)
for cell in cells:print(cell.value)

获取指定行的值
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 指定行
cells = sheet1[1]# 多行[1:5]
print('指定行:', cells)
for cell in cells:print(cell.value)

注:这里的行下标从[1]开始,区别于列表或元组等
(3)按行、列获取工作表中已有全部数据
.rows,获取工作表中存在数据的所有行
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 获取所有的行
for row in sheet1.rows:print(row)
![]()
.columns,获取工作表中存在数据的所有列
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 获取所有的列
for column in sheet1.columns:print(column)

上述返回的值都是对象,需要根据for循环去取每个单元格的值。
如,获取所有列的值:
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 获取所有的列的值
for column in sheet1.columns:for cell in column:print(cell.value)

7、保存
.save() 方法:保存excel工作簿。
新建、写入或修改数据后都需要保存,处理操作才会生效。
这里需要再次注意一下,openpyxl只支持.xlsx后缀文件,如下:
wb.save('excel_test.xlsx') # excel_test.xlsx保存的路径、文件名
以上就是openpyxl最常使用的方法,可供参考。
相关文章:
python—openpyxl操作excel详解
前言 openpyxl属于第三方模块,在python中用来处理excel文件。 可以对excel进行的操作有:读写、修改、调整样式及插入图片等。 但只能用来处理【 .xlsx】 后缀的excel文件。 使用前需要先安装,安装方法: pip install openpyxl…...
汽车行驶性能的主观评价方法(2)-驾驶员的任务
人(驾驶员)-车辆-环境闭环控制系统 驾驶过程中,驾驶员承担着操纵车辆和控制车辆的任务。驾驶员在不知不觉中接受了大量光学、声学和动力学信息并予以评价,同时不断地通过理论值和实际值的比较来完成控制作用(图 2.1&a…...
server2012 通过防火墙开启局域网内限定IP进行远程桌面连接
我这里需要被远程桌面的电脑系统版本为windows server2012 1、打开允许远程连接设置 2、开启防火墙 3、设置允许“远程桌面应用”通过防火墙 勾选”远程桌面“ 3、入站规则设置 高级设置→入站规则→远程桌面-用户模式(TCP-In) 进入远程桌面属性的作用域——>远程IP地址—…...
lvs+keepalived: 高可用集群
lvskeepalived: 高可用集群 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,于是keepalived软件。实现的是调度器的高可用。 但是:keepalived不是专门为集群服务的,也可以做其他服务器的高可用。 lvs的高可用集群…...
C++标准模板(STL)- 类型支持 (类型特性,is_pointer,is_lvalue_reference,is_rvalue_reference)
类型特性 类型特性定义一个编译时基于模板的结构,以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为,除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实…...
C++——类和对象(上)
1.面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 例如手洗衣服 C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间…...
ffmpeg中examples编译报不兼容错误解决办法
ffmpeg中examples编译报不兼容错误解决办法 参考examples下的README可知,编译之前需要设置 PKG_CONFIG_PATH路径。 export PKG_CONFIG_PATH/home/user/work/ffmpeg/ffmpeg/_install_uclibc/lib/pkgconfig之后执行make出现如下错误: 基本都是由于库的版…...
Python与CAD系列基础篇(十一)图形旋转、镜像、缩放
目录 0 简述1 图形旋转2 图形镜像3 图形缩放0 简述 本篇详细介绍使用①通过pyautocad连接AutoCAD进行处理②通过ezdxf处理dxf格式文件进行图形旋转、镜像、缩放的方法。 1 图形旋转 pyautocad方式 from pyautocad import Autocad, APoint, aDouble import mathacad = Autoca…...
STM32串口通信
数据通信的基础概念 在单片机的应用中,数据通信是必不可少的一部分,比如:单片机和上位机、单片机和外 围器件之间,它们都有数据通信的需求。由于设备之间的电气特性、传输速率、可靠性要求各 不相同,于是就有了各种通信…...
Kafka笔记
一、Kafka 概述 1.1.定义 传统定义:Kafka 是一个分布式的基于发布/订阅模式的消息队列,主要用于大数据实时处理领域。最新定义:Kafka 是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务…...
【1.2】神经网络:神经元与激活函数
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 神经网络(随缘更新) ✨特色…...
【PythonRS】Pyrsgis库安装+基础函数使用教程
pyrsgis库是一个用于处理地理信息系统(GIS)数据的Python库。它提供了一组功能强大的工具,可以帮助开发人员使用Python语言创建、处理、分析和可视化GIS数据。通过使用pyrsgis库,开发人员可以更轻松地理解和利用地理信息。 pyrsgis库包含了许多常见的GIS操…...
线扫相机DALSA--分频倍频计算公式及原理
分频倍频计算公式及原理 推导原理: 假设编码器脉冲精度为P;同步轮/辊周长为C,Fov为视野,Res为线扫相机分辨率,N代表N倍频编码器,分频为D,倍频为M 线扫项目常规采用N(N 4࿰…...
1818_ChibiOS的计数信号量
全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 之前见过计数信号量,也是在FreeRTOS中看到的。也看到过这样的功能在驱动设计中的应用,但是当时没有理解这个使用的方式。 1.…...
企业微信接入芋道SpringBoot项目
背景:使用芋道框架编写了一个数据看板功能需要嵌入到企业微信中,方便各级人员实时观看 接入企业微信的话肯定不能像平常pc端一样先登录再根据权限看页面,不然的话不如直接手机浏览器打开登录账号来得更为方便,所以迎面而来面临两…...
群晖上搭建teamspeak3语音服务器
什么是 TeamSpeak ? TeamSpeak (简称 TS)是一款团队语音通讯工具,但比一般的通讯工具具有更多的功能而且使用方便。它由服务器端程序和客户端程序两部分组成,如果不是想自己架设 TS 服务器,只需下载客户端程…...
Python爬虫(二十四)_selenium案例:执行javascript脚本
本章叫介绍如何使用selenium在浏览器中使用js脚本,更多内容请参考:Python学习指南 隐藏百度图片 #-*- coding:utf-8 -*- #本篇将模拟执行javascript语句from selenium import webdriver from selenium.webdriver.common.keys import Keysdriver webdri…...
Devops团队
DevOps(Development 和 Operations的缩写)是一种软件开发和运维(IT运营)之间协作和沟通的文化、原则和实践。DevOps团队是专注于实施DevOps原则的团队,旨在促进软件开发和运维之间的紧密协作,以加速软件交付…...
力扣labuladong——一刷day10
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣76. 最小覆盖子串二、力扣567. 字符串的排列三、力扣438. 找到字符串中所有字母异位词四、力扣3. 无重复字符的最长子串 前言 一、力扣76. 最小覆盖子串…...
https下载图片
OpenSSL用法示例 OpenSSL源码安装 对于ubuntu,懒得编译源码可以直接安装 sudo apt-get install libssl–dev /usr/include/openssl/ssl.h CMakeLists中添加 link_libraries(ssl crypto) apt-get安装不需要再制定libssl.a, libcrypto.a的路径了, 就像用libc标…...
别再死记硬背了!用sklearn的LogisticRegression搞定手写数字识别,附完整代码与参数调优心得
逻辑回归实战:从参数困惑到手写数字识别调优指南 当你第一次面对sklearn的LogisticRegression那十几个参数时,是否感到无从下手?特别是当官方文档用专业术语解释solver、C、max_iter时,大多数教程只会告诉你"照这样设置就行&…...
seo代写文章的质量如何保证_seo代写文章的优势是什么
SEO代写文章的质量如何保证 在数字营销的世界里,SEO代写文章逐渐成为企业提升网站排名和吸引流量的重要工具。SEO代写文章的质量直接关系到网站的搜索引擎排名和用户体验。如何保证SEO代写文章的质量呢? 选择可靠的代写服务提供商是保证SEO代写文章质量…...
释放AI潜能:在快马平台利用多模型协作构建高级任务规划Agent
今天想和大家分享一个特别有意思的实践:如何利用InsCode(快马)平台的多AI模型协作能力,快速搭建一个能处理复杂任务的智能规划Agent。这个项目特别适合想体验AI辅助开发的朋友,整个过程不需要复杂的环境配置,直接在网页上就能完成…...
ComfyUI-Impact-Pack:3个强力方案解锁AI图像创作新维度
ComfyUI-Impact-Pack:3个强力方案解锁AI图像创作新维度 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: https:/…...
【配网故障恢复+重构】主动配电网故障恢复的重构与孤岛划分统一模型Matlab实现
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...
从‘套娃’结构到SOTA效果:我是如何用U2-Net搞定商品抠图与海报生成的
从‘套娃’结构到SOTA效果:我是如何用U2-Net搞定商品抠图与海报生成的 去年双十一大促前,我们电商团队遇到了一个棘手问题:每天新增的上万张商品图需要快速去除背景,用于生成营销海报。传统Photoshop手动处理每张图需要5-10分钟&a…...
OpenClaw隐私保护机制:Qwen3.5-9B本地化处理法律文件
OpenClaw隐私保护机制:Qwen3.5-9B本地化处理法律文件 1. 为什么律师事务所需要本地化AI方案 上个月,我帮一家本地律所部署了OpenClawQwen3.5-9B的解决方案。他们的核心诉求很简单:处理客户合同时,既要实现自动化识别关键条款&am…...
手机域名可以用于 SEO 优化吗
手机域名可以用于 SEO 优化吗 在互联网的时代,网站的域名不仅是识别和访问的关键,还对搜索引擎优化(SEO)有着重要影响。在这个背景下,很多企业和个人用户开始关注,手机域名是否也可以用于 SEO 优化。本文将…...
3MF插件全面指南:打造高效3D打印工作流
3MF插件全面指南:打造高效3D打印工作流 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 3MF插件是Blender中实现3D打印工作流的重要工具,它能帮助用…...
5分钟成为Switch游戏安装专家:Awoo Installer终极指南
5分钟成为Switch游戏安装专家:Awoo Installer终极指南 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 还在为Switch游戏安装而烦恼吗&a…...
