python除了熟悉的pandas,openpyxl库也很方便的支持编辑Excel表
excel表格是大家经常用到的文件格式,各行各业都会跟它打交道。之前文章我们介绍了使用openpyxl和xlrd库读取excel表数据,使用xlwt库创建和编辑excel表,在办公自动化方面可以方便我们快速处理数据,帮助我们提升效率。
python之openpyxl快速读取Excel表内容
测开不得不会的python之xlrd库读取excel表内容
python之xlwt库编辑写入excel表内容
本次我们介绍使用openpyxl创建和编辑excel表。
官网文档:
https://openpyxl.readthedocs.io/en/stable/
官网显示,openpyxl是一个用于读/写Excel2010后缀为XLSX/XLSM/XLTX/XLTM文件的python库。
了解下电脑中的excel表格文件格式
微软或者金山的excel表格编辑保存时一般要选择文件后缀,有xls和xlsx两类。
xls和xlsx后缀文件的主要区别:
-
文件格式:xls是二进制格式,而xlsx是基于XML的压缩方式。
-
版本:xls是Excel 2003及以前版本生成的文件格式,而xlsx是Excel 2007及以后版本生成的文件格式。
-
兼容性:xlsx格式向下兼容,而xls格式不支持向后兼容。
安装openpyxl库
pip install openpyxl -i https://mirrors.aliyun.com/pypi/simple/
目前最新版本3.1.5,安装后目录结果如下,初始化文件__init__.py文件如下:
使用openpyxl库
初始化文件__init__.py文件已经导入了Workbookl类:
该函数用于创建和编辑excel表,使用时我们只需要通过如下命令直接导入即可:
from openpyxl import Workbook
该Workbook类可以创建和操作sheet页对象(class为openpyxl.worksheet. worksheet.Worksheet),通过sheet对象不同的函数来编辑表格中的内容。
创建并编辑,保存Excel表
1导入openpyxl库的Workbook类
from openpyxl import Workbook
2用一个图展示下编辑表格常用的函数(WorkBook和Worksheet类中的函数)
3操作sheet对象
首先我们先初始化Workbook对象
wb = Workbook()
我们编辑表格,其实编辑的都是表格下方的sheet页,所以我们初始化后要先创建sheet页对象,当然也可以复制,删除,移动,复制sheet页对象。
a 创建sheet对象
1)使用wb.active属性函数获取sheet对象
#获取表格sheet页,一般是默认第1个,也可以选择其他并保存后,获取的就是保存后的sheet页对象
sheet = wb.active
2)使用create_sheet函数创建sheet对象
-
参数title代表 sheet页的名称,可以不填。
-
参数index:传值时代表创建第几个sheet页;不传值时,则按照顺序依次创建。
测试代码:创建三个sheet页对象
wb = Workbook()
sheet0 = wb.create_sheet('sheet0',0)
sheet1 = wb.create_sheet('sheet1',1)
sheet2 = wb.create_sheet('sheet2')
b 获取sheet对象
1)当创建了多个sheet对象后,可指定获取第N个sheet页对象
wb.active = 1
sheet = wb.active
2)使用wb._sheets获取所有sheet页对象列表,并通过index获取单个sheet页对象
sheet = wb._sheets[0]
3)使用wb.sheetnames获取所有sheet页名称,并通过wb[sheetname]获取sheet页对象
sheetnames = wb.sheetnames
print(sheetnames )
sheet = wb['functions']
4)使用wb.worksheets获取所有sheet页对象列表,并通过index获取单个sheet页对象
print(wb.worksheets)
sheet = wb.worksheets[0]
c 复制sheet页对象
函数copy_worksheet传入已存在的sheet对象,并复制一个对象。
测试代码:
wb = Workbook()
sheet0 = wb.active
sheet1 = wb.copy_worksheet(sheet0)
wb.save(‘1.xlsx’) #保存文件
结果:
d 删除sheet对象
有2种方式删除sheet对象:
wb.remove(worksheet) or del wb[sheetname]
测试代码:
wb = Workbook()
#先创建三个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
sheet1 = wb.create_sheet('sheet1',1)
sheet2 = wb.create_sheet('sheet2')
#删除两个对象
wb.remove(sheet0)
del wb['sheet1']
wb.save(‘2.xlsx’) #保存文件
结果:sheet0和sheet1被删除
e move_sheet:用于移动对象
函数move_sheet可以将sheet对象移动offsheet偏移量。
参数sheet可以传sheet对象或者sheet的名称。
测试代码:
wb = Workbook()
#先创建三个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
sheet1 = wb.create_sheet('sheet1',1)
sheet2 = wb.create_sheet('sheet2')
#移动两个对象
wb.move_sheet(sheet0,3)
wb.move_sheet('sheet1',4)
wb.save('3.xlsx') #保存文件
结果:sheet0和sheet1移动到了右边位置
4 编辑sheet页
a cell()函数:设置单元格的值
cell函数的参数:
- row代表第几行,column代表第几列,需要大于等于1,都则会报错,
- value参数如果传值会设置为该单元格的值
以上函数返回的是单元格对象,class为openpyxl.cell.cell.Cell
Cell对象的几个属性:
- value :单元格的值
- row:单元格所在的行数
- column:单元格所在的列数
- data_type:单元格内容对应的数据类型
测试代码:
wb = Workbook()
#先创建1个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
#填入第1行第1列和第1行第2列的值
sheet0.cell(1,1,'hello')
sheet0.cell(1,2,'python')
wb.save('3.xlsx') #保存文件
结果:
b 像设置列表元素一样输入和删除单元格的值
之前文章我们讲过(python中类class的魔法方法),在类中实现了__getitem__、__setitem__,__delitem__魔法方法,我们就可以对该类的对象,像使用list列表一样获取、设置、删除元素。
-
按照如下格式输入单元格内容:sheet0['A1'] =‘hello’
-
按照如下格式删除单元格内容:del sheet0['B1']
解释:A1代表第1列第1行的单元格,B1代表第2列第1行的单元格; 相信大家已经清楚的知道字母代表列,数字代表行(跟我们打开表格看到的是一样的)
测试代码:
wb = Workbook()
#先创建1个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
#填入第1行第1列和第1行第2列的值
sheet0['A1'] = 'hello'
sheet0['B1'] = 'python'
del sheet0['B1']
wb.save('4.xlsx') #保存文件
结果:单元格B1的内容又被删掉了
c append()函数:按行批量添加可迭代对象的元素
通过下图可知,参数需要为可迭代对象:列表/元组/字典等,默认从第1行开始写入;
如果为字典,则字典的key需要满足大写字母A到ZZZ,或者为数字,代表在第几列输入字典的value。
测试代码:
wb = Workbook()
#先创建1个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
#设置列表和字典变量
data1 = ['hello','python','my','friend']
data2 = {'A':'hello','C':'python'}
data3 = {1:'hello',2:'python',4:'friend'}
sheet0.append(data1)
sheet0.append(data2)
sheet0.append(data3)
wb.save('6.xlsx') #保存文件
结果:
d 插入/删除行和列
insert_rows,insert_cols,delete_rows,delete_cols四个函数分别代表插入行/插入列/删除行/删除列
参数都是有两个idx和amount:
- idx代表插入或者删除的位置
- amount代表插入或者删除的数量(amount值>=1)
比如 insert_rows(2,3) 代表在第2行上面插入3行
比如 insert_cols(2,3) 代表在第2列左面插入3列
比如 delete_rows(5,3) 代表在第5行上面删除3行
比如 delete_cols(5,3) 代表在第5列左面删除3列
e move_range:移动一个范围内的单元格
move_range 方法需要几个参数:
- cell_range:一个字符串,表示要移动的单元格范围(例如 'A1:C3')。
- rows:一个整数,表示要向下移动的行数(正数表示向下,负数表示向上)。
- cols:一个整数,表示要向右移动的列数(正数表示向右,负数表示向左)。
注意:移动时单元格会被覆盖,请务必小心。
测试代码:
wb = Workbook()
#先创建1个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
#设置列表和字典变量
data1 = ['hello','python','my','friend']
data2 = {'A':'hello','C':'python'}
data3 = {1:'hello',2:'python',4:'friend'}
sheet0.append(data1)
sheet0.append(data2)
sheet0.append(data3)
#移动一个范围
sheet0.move_range('A1:C1',2,3)
wb.save('6.xlsx') #保存文件
f merge_cells函数用于合并单元格
合并后的单元格将拥有合并前单元格的数据和样式,并且可以跨越多个行和列。合并单元格可能会导致原有数据丢失,大家要慎重使用。
参数介绍:
- range_string:指定要合并的单元格区域,例如'A1:B2'表示合并从A1到B2的单元格区域。
- 其他四个参数:分别表示合并的起始行、起始列、结束行和结束列。比如(1, 1, 3,2)表示合并第1行第1列到第3行第2列的单元格。
测试代码:
wb = Workbook()
#先创建1个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
#设置列表和字典变量
data1 = ['hello','python','my','friend']
data2 = {'A':'hello','C':'python'}
data3 = {1:'hello',2:'python',4:'friend'}
sheet0.append(data1)
sheet0.append(data2)
sheet0.append(data3)
#以下两种方式 同样的效果
sheet0.merge_cells('A1:C2')
sheet0.merge_cells(start_row=1,start_column=1,end_row=3,end_column=2)
wb.save('6.xlsx') #保存文件
结果:
g unmerge_cells 取消合并单元格
跟merge_cells函数功能相反,取消合并的单元格,参数跟merge_cells一致,参考上面的介绍
h 属性函数最大行/最大列/最小行/最小列
max_row: 代表最大行
max_column:代表最大列
min_row: 代表最小行
min_column:代表最小列
测试代码:
wb = Workbook()
#先创建1个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
#设置列表和字典变量
data1 = ['hello','python','my','friend']
data2 = {'A':'hello','C':'python'}
data3 = {1:'hello',2:'python',4:'friend'}
sheet0.append(data1)
sheet0.append(data2)
sheet0.append(data3)
#打印最大行 最大列等信息
print(f'max_row: {sheet0.max_row}')
print(f'max_colunn: {sheet0.max_column}')
print(f'min_row: {sheet0.min_row}')
print(f'min_column: {sheet0.min_row}')
wb.save('6.xlsx') #保存文件
结果:
max_row: 3
max_colunn: 4
min_row: 1
min_column: 1
i add_image:在单元格中添加图片
- 参数image需要传入一个image对象,而不是某个图片;
- anchor填入单元格位置,比如“A1”
image对象依赖另一个库pillow,我们先安装这个库:
pip install pillow -i https://mirrors.aliyun.com/pypi/simple/
测试代码:
from openpyxl.drawing.image import Image
from openpyxl import Workbook
wb = Workbook()
#先创建1个sheet对象
sheet0 = wb.create_sheet('sheet0',0)
#定义image对象imageins = Image('xxxx.jpg')#在单元格A1处添加图片
sheet0.add_image(imageins,'A1')
wb.save('6.xlsx') #保存文件
共勉:东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳。
----感谢读者的阅读和学习,点个赞和关注吧,谢谢大家。
相关文章:
python除了熟悉的pandas,openpyxl库也很方便的支持编辑Excel表
excel表格是大家经常用到的文件格式,各行各业都会跟它打交道。之前文章我们介绍了使用openpyxl和xlrd库读取excel表数据,使用xlwt库创建和编辑excel表,在办公自动化方面可以方便我们快速处理数据,帮助我们提升效率。 python之open…...
go语言怎么实现bash cmd里的mv功能?
在Go语言中实现类似于Bash命令行中的mv命令的功能,主要是通过文件系统的操作来完成的。mv命令可以用来移动文件或目录,也可以用来重命名文件或目录。在Go语言中,可以使用标准库中的os和io/ioutil包来实现这些功能。 以下是一个简单的例子&…...
Vue前端面试进阶(五)
使用Element UI开发的实际项目 在实际项目中,我使用Element UI来快速构建用户界面。Element UI是一套为开发者、设计师和产品经理准备的基于Vue 2.0的桌面端组件库,它提供了丰富的UI组件,极大地提高了开发效率。然而,在使用过程中…...
面试手撕题积累
1、实现滑动窗口限流,允许每分钟最多有100个请求 阿里一面题。 核心: 时间窗口管理:滑动窗口会根据时间流逝不断更新,需要记录请求的时间戳,并根据当前时间计算窗口内的请求数量。 限流判断:每次请求到来…...
notepad++文件github下载
1、github下载网址:Releases notepad-plus-plus/notepad-plus-plus GitHub 2、找到操作系统支持的软件: 3、CSDN下载链接:https://download.csdn.net/download/u013083576/90046203...
.NET新知识点笔记
using 用法介绍 using (SqlCommand cmd new SqlCommand(SQLString, connection)) 为什么使用上面的using 而不直接使用下述的来直接 SqlCommand cmd new SqlCommand(SQLString, connection)如果你需要使用一个对象,这个对象需要占用很多紧缺的资源&am…...
数据结构:链表进阶
链表进阶 1. ArrayList的缺陷2. 链表2.1 链表的概念及结构2.2 链表的实现 3.链表面试题4.LinkedList的使用5.1 什么是LinkedList4.2 LinkedList的使用 5. ArrayList和LinkedList的区别 1. ArrayList的缺陷 通过源码知道,ArrayList底层使用数组来存储元素࿱…...
Python 爬虫入门教程:从零构建你的第一个网络爬虫
网络爬虫是一种自动化程序,用于从网站抓取数据。Python 凭借其丰富的库和简单的语法,是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识,并实现一个简单的爬虫项目。 1. 什么是网络爬虫? 网络爬虫&#x…...
Java面试题、八股文——JVM篇最终篇
1.如何选择垃圾收集器? 选择合适的垃圾收集器(Garbage Collector, GC)对于优化Java应用程序的性能至关重要。不同的应用场景和系统需求可能需要不同类型的垃圾收集器来满足。以下是一些考虑因素以及常见的垃圾收集器选项,帮助您做…...
Spring Boot整合Redis Stack构建本地向量数据库相似性查询
Spring Boot整合Redis Stack构建本地向量数据库相似性查询 在微服务架构中,数据的高效存储与快速查询是至关重要的。Redis作为一个高性能的内存数据结构存储系统,不仅可以用作缓存、消息代理,还可以扩展为向量数据库,实现高效的相…...
shell脚本基础学习_总结篇(完结)
细致观看可以,访问shell脚本学习专栏,对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义: 2. 主要特点: 3. shell脚本的基本结构 4. S…...
什么是 C++ 中的函数对象?它有什么特点?
在 C 中,函数对象(Function Object)是一种可调用对象,它允许像函数一样被调用,但实际上它可能并不是真正的函数。函数对象可以是以下几种类型之一: 普通函数: 一个普通的、定义在命名空间或类…...
css:项目
这是一个完整的网站制作的流程 美工会先制作一个原型图: 原型图写的不详细,就是体现一个网页大致的布局 然后美工再做一个psd样例图片 然后再交给程序员 项目 模块化开发:把代码的不同的样式封装起来,需要用到相同样式的标签就…...
macOS 开发环境配置与应用开发指南
macOS 开发环境配置与应用开发指南 macOS作为苹果公司推出的操作系统,因其稳定性、优雅的用户界面和强大的开发支持,已成为开发者和创意专业人士的首选平台之一。无论是开发iOS、macOS桌面应用,还是Web应用、跨平台程序,macOS都提…...
[A-19][V06]ARMv8/v9-内存虚拟化原理
ver0.2 [看前序文章有惊喜,关注W\X\G=Z+H=“浩瀚架构师”,可以解锁全部文章] 前言 前一篇文章,我们介绍了ARM内存的属性,算是一个小小的里程碑点,接下来我们会把注意力重新拉回虚拟化的赛道。我们从[V-05] 虚拟化基础-异常模型(Exception model)之后,花了很多笔墨介绍…...
registry 删除私有仓库镜像
原文链接:https://blog.csdn.net/yogima/article/details/122172744 如果需要彻底删除,只需进行register 磁盘删除镜像 彻底删除了,就可以到达彻底删除的目的。 如果只需要软删除,则只需进行通过API删除。 curl --header "Ac…...
UPLOAD LABS | UPLOAD LABS 靶场初识
关注这个靶场的其它相关笔记:UPLOAD LABS —— 靶场笔记合集-CSDN博客 0x01:UPLOAD LABS 靶场简介 UPLOAD LABS 靶场是一个专门用于学习文件上传漏洞攻击和防御的靶场。它提供了一系列文件上传漏洞的实验环境,用于帮助用户了解文件上传漏洞的…...
Samba服务器常见问题处理
指定的网络文件夹目前是以其他用户名和密码进行映射的。要用其他用户名和密码进行连接,首先请断开所有现有的连接到网络共享的映射 解决方案 单击“开始”菜单,选择“运行…”。 在弹出的窗口中,输入cmd 进入命令行模式,并输入…...
Java基础 设计模式——针对实习面试
目录 Java基础 设计模式单例模式工厂模式观察者模式策略模式装饰器模式其他设计模式 Java基础 设计模式 单例模式 单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。适用场景&…...
最大公约数和最小公倍数-多语言
目录 C 语言实现 Python 实现 Java 实现 Js 实现 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析: 最小公倍数输入的两个数之积除于它们的最大公约数,关键是求出最大公约数; 求最大公约数用辗转…...
第三方数据库连接免费使用和安装
是强大的一体化数据库开发解决方案,可从单一应用程序无缝连接多个数据库,包括 MySQL、PostgreSQL、MongoDB、MariaDB、SQL Server、Oracle、SQLite 和 Redis。 下载:https://download.csdn.net/download/mo3408/90045937 升级特性 模型&…...
水库大坝安全监测之量水堰计应用
量水堰计是水库大坝安全监测系统中的一种关键设备,主要用于测量水库水位、流量等水力参数。以下是量水堰计在水库大坝安全监测中的应用及注意事项: 一、量水堰计的工作原理 量水堰计是一种专门用于测量水流流量的仪器,其工作原理主要基于水流…...
算法笔记:滑动窗口
前言 滑动窗口作为一个考点较高的算法,广泛应用于子串问题中,本文将进行详细讲解。 一、滑动窗口是什么 滑动窗口是双指针算法的一种,基本思路为维护一个窗口,然后从前往后遍历元素进行运算。 二、滑动窗口算法和其他双指针算…...
Ubuntu下的Graphviz的基础使用方法
一、Graphviz介绍 graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局 1、什么是Graphviz 官网地址,https://www.graphviz.org/ Gr…...
微积分复习笔记 Calculus Volume 1 - 6.8 Exponential Growth and Decay
6.8 Exponential Growth and Decay - Calculus Volume 1 | OpenStax...
React的ts文件中通过createElement拼接一段内容出来
比如接口返回一个值 const values [23.00, 40.00/kg];想做到如下效果, 如果单纯的用render渲染会很简单, 但是在ts文件中处理,所以采用了createElement拼接 代码如下: format: (values: string[]) > {if (!values || !val…...
Pinia之1:介绍Pinia、项目中引入Pinia
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
Python双向链表、循环链表、栈
一、双向链表 1.作用 双向链表也叫双面链表。 对于单向链表而言。只能通过头节点或者第一个节点出发,单向的访问后继节点,每个节点只能记录其后继节点的信息(位置),不能向前遍历。 所以引入双向链表,双…...
5G基础学习笔记
功能软件化 刚性网络:固定连接、固定功能、固化信令交互 柔性网络:网元拆解成服务模块,基于API接口调用 服务化架构(SBA) Service based Architecture (SBA): 借鉴了业界成熟的SOA、微服务架…...
Python plotly库介绍
一、引言 在数据可视化领域,Python提供了众多强大的库。其中,plotly是一个功能强大、交互式的可视化库,可以创建各种类型的图表,包括线图、散点图、柱状图、饼图、3D图表等。它不仅提供了美观的可视化效果,还支持交互式…...
高港区住房和城乡建设局网站/厦门seo网站排名优化
Webpack 简介 什么是 Webpack? webpack是一种前端资源构建工具,一个静态模块打包器在webpack看来,前端所有的资源文件都会作为模块处理它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)’ Webpack 五个核心…...
做设计那个素材网站最好/企业seo关键字优化
1,git安装完之后,打开git bash 命令行,执行以下命令: ssh-keygen -t rsa 然后按三下默认回车 2.执行查看公钥的命令: cat ~/.ssh/id_rsa.pub 3.最后把公钥复制放在阿里云的增加公钥里面 在本地仓库执行初始化&am…...
政府网站app/网络广告策划书范文
近日,一家VR(虚拟现实)创业公司Pico对外披露,该公司已被字节跳动收购。受这件事的催化,一个很多人都不认识的新名词——“元宇宙”,进入了大众的视野。 当我们还在试图理解消化这个新概念时,一…...
大理中小企业网站建设/营销推广软文案例
CK_Label_v13一、产品参数 1. 电池供电版 产品型号 CK_Label_v13 尺寸 70x34.7x13.6mm 屏幕尺寸 2.1 inch 分辨率 250*122 像素密度 130dpi 显示技术 电子墨水屏显示 显示颜色 黑/白 外观颜色 黑色 按键 1 指示灯 1 RGB灯 灯光颜色 7种(红/绿/蓝/黄/紫/白…...
台州网站设计/恩城seo的网站
开发jQuery插件时总结的一些经验分享一下。 一、先看 jQuery(function(){ }); 全写为 jQuery(document).ready(function(){ }); 意义为在DOM加载完毕后执行了ready()方法。 二、再看 (function(){ })(jQuery); 其实际上是执行()(para)匿名方法,只不过是传递了jQuery…...
哪些编程语言适合网站开发/市场营销考试题目及答案2022
一、要命的端口 计算机要与外界进行通信,必须通过一些端口。别人要想入侵和控制我们的电脑,也要从某些端口连接进来。某日笔者查看了一位朋友的系统,吃惊地发现开放了139、445、3389、4899等重要端口,要知道这些端口都可以为黑客…...