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最常使用的方法,可供参考。

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

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

相关文章

Doceker-compose——容器群集编排管理工具

目录 Docker-compose 1、Docker-compose 的三大概念 2、YAML文件格式及编写注意事项 1)使用 YAML 时需要注意下面事项 2)ymal文件格式 3)json格式 3、Docker Compose配置常用字段 4、Docker-compose的四种重启策略 5、Docker Compos…

k8s statefulSet 学习笔记

文章目录 缩写: stsweb-sts.yaml创建sts扩缩容金丝雀发布OnDelete 删除时更新 缩写: sts 通过 kubectl api-resources 可以查到: NAMESHORTNAMESAPIVERSIONNAMESPACEDKINDstatefulsetsstsapps/v1trueStatefulSet web-sts.yaml apiVersion: v1 kind: Service met…

Canal整合SpringBoot详解(一)

文章目录 Canal整合SpringBoot详解(一)什么是canal搭建Kafka3.2.1集群⭐Kafka集群机器规划创建3台虚拟机(centos7系统)必要的环境准备(3台虚拟机都要执行如下操作)⭐分别修改每个服务器的hosts文件&#xf…

docker - window Docker Desktop升级

文章目录 前言docker - window Docker Desktop升级 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来…

【python画画】蘑菇云爱心

来源于网上短视频 数学原理不懂,图个乐 import math from turtle import *def x(i):return 15 * math.sin(i) ** 3 * 20def y(i):return 20 * (12 * math.cos(i) - 5 * math.cos(2 * i) - 2 * math.cos(4 * i))speed(0) color(red) pensize(10) for i in range(51…

C++设计模式_14_Facade门面模式

本篇介绍的Facade门面模式属于“接口隔离”模式的一种,以下进行详细介绍。 文章目录 1. “接口隔离”模式1. 1 典型模式 2. 系统间耦合的复杂度3. 动机(Motivation)4. 模式定义5. Facade门面模式的代码实现6. 结构7. 要点总结8. 其他参考 1. “接口隔离”模式 在组…

笔记44:Batch_Normlization 过程详解

笔记本地地址:D:\work_file\DeepLearning_Learning\03_个人笔记\2.图像处理任务\BN a a a a a a a a a a a a a a a a a

抖音上怎么挂小程序?制作小程序挂载抖音视频

公司企业商家现在已经把抖音作为营销的渠道之一,目前抖音支持短视频挂载小程序,可方便做营销。以下给大家分享这一操作流程。 一、申请自主挂载能力 首先需要在抖音开放平台官网注册一个抖音小程序账号,然后申请短视频自主挂载能力。 二、搭…

Liunx两台服务器实现相互SSH免密登录

一、首先准备两台Linux虚拟机当作此次实验的两台服务器 服务器1:server IPV4:192.168.110.136 服务器2:client IPV4: 192.168.110.134 二、准备阶段 [rootserver ~]# systemctl disable firewalld #关…

Umijs创建一个antd+Ts项目环境

上文搭建Umijs环境并创建一个项目 介绍基本操作中 我们构建了一个Umijs环境的环境 但也只创建了一个页面 真正开发来讲 也不可能只创建几个界面这么简单 这里面的创建 还是非常完整的 这里 我创建一个文件夹 主要是做我们的项目目录 然后 我们在终端输入命令 然后 打开目录终…

C#版字节跳动SDK - SKIT.FlurlHttpClient.ByteDance

前言 在我们日常开发工作中对接第三方开放平台,找一款封装完善且全面的SDK能够大大的简化我们的开发难度和提高工作效率。今天给大家推荐一款C#开源、功能完善的字节跳动SDK:SKIT.FlurlHttpClient.ByteDance。 项目官方介绍 可能是全网唯一的 C# 版字节…

【C++进阶】set和map的基本使用(灰常详细)

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

基于springboot实现网上图书商城管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现网上图书商城管理系统演示 摘要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括网上图书商城的网络应用,在外国网上图书商城已经是很普遍的方式,不过国内的管理网站可能还处于起步…

基于nodejs+vue全国公考岗位及报考人数分析

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表4.2.3三元组表的转置、加法、乘法、操作转置加法乘法算法测试实验结果代码整合 4.2.1 矩阵的数组表示 【数据结构】数组和字符串…

竞赛 深度学习实现行人重识别 - python opencv yolo Reid

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0c…

论文阅读——BART

Arxiv: https://arxiv.org/abs/1910.13461 一个去噪自编码器的预训练序列到序列的模型。是一个结合了双向和自回归transformers的模型。 预训练分为两个阶段:任意噪声函数破坏文本和序列模型重建原始文本 一、模型 input:被破坏的文本-->bidirecti…

基于Canal同步MySQL数据到Elasticsearch

基于Canal同步MySQL数据到Elasticsearch 基于 canal 同步 mysql 的数据到 elasticsearch 中。 1、canal-server 相关软件的安装请参考&#xff1a;《Canal实现数据同步》 1.1 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmln…

1. 两数之和、Leetcode的Python实现

博客主页&#xff1a;&#x1f3c6;看看是李XX还是李歘歘 &#x1f3c6; &#x1f33a;每天分享一些包括但不限于计算机基础、算法等相关的知识点&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知识点&#x1f4d6;是你想要的&#x1f497; ⛽️今…

虚拟机构建部署单体项目及前后端分离项目

目录 一.部署单体项目 1.远程数据库 1.1远程连接数据库 1.2 新建数据库运行sql文件 2.部署项目到服务器中 3.启动服务器运行 二.部署前后端分离项目 1.远程数据库和部署到服务器 2.利用node环境启动前端项目 3.解决主机无法解析服务器localhost问题 方法一 ​编辑 方法二 一.部…