Python酷库之旅-第三方库openpyxl(02)

目录

一、 openpyxl库的由来

1、背景

2、起源

3、发展

4、特点

4-1、支持.xlsx格式

4-2、读写Excel文件

4-3、操作单元格

4-4、创建和修改工作表

4-5、样式设置

4-6、图表和公式

4-7、支持数字和日期格式

二、openpyxl库的优缺点

1、优点

1-1、支持现代Excel格式

1-2、功能丰富

1-3、易于使用

1-4、与Excel兼容性

1-5、性能良好

1-6、社区支持

1-7、跨平台

2、缺点

2-1、不支持旧版格式

2-2、某些特性支持有限

2-3、内存占用

2-4、文档和示例可能不足

2-5.、依赖关系

2-6、学习曲线

三、openpyxl库的用途

1、读取Excel文件

2、写入Excel文件

3、修改Excel文件

4、自动化

5、与Excel交互

6、数据迁移和转换

7、创建模板化的报告

四、如何学好openpyxl库?

1、获取openpyxl库的属性和方法

2、获取xlwt库的帮助信息

3、用法精讲

3-6、openpyxl.Workbook.get_index方法

3-6-1、语法

3-6-2、参数

3-6-3、功能

3-6-4、返回值

3-6-5、说明

3-6-6、用法

3-7、openpyxl.Workbook.get_sheet_by_name方法

3-7-1、语法

3-7-2、参数

3-7-3、功能

3-7-4、返回值

3-7-5、说明

3-7-6、用法 

3-8、openpyxl.Workbook.get_sheet_names方法

3-8-1、语法

3-8-2、参数

3-8-3、功能

3-8-4、返回值

3-8-5、说明

3-8-6、用法 

3-9、openpyxl.Workbook.index方法

3-9-1、语法

3-9-2、参数

3-9-3、功能

3-9-4、返回值

3-9-5、说明

3-9-6、用法

3-10、openpyxl.Workbook.move_sheet方法

3-10-1、语法

3-10-2、参数

3-10-3、功能

3-10-4、返回值

3-10-5、说明

3-10-6、用法

五、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、 openpyxl库的由来

        openpyxl库的由来可以总结为以下几点:

1、背景

        在openpyxl库诞生之前,Python中缺乏一个专门用于读取和编写Office Open XML格式(如Excel 2010及更高版本的.xlsx文件)的库。

2、起源

        openpyxl库的创建是为了解决上述提到的Python在处理Excel文件时的不足,它的开发受到了PHPExcel团队的启发,因为openpyxl最初是基于PHPExcel的。

3、发展

        随着时间的推移,openpyxl逐渐发展成为一个功能强大的Python库,专门用于处理Excel文件。它支持Excel 2010及更高版本的文件格式,并提供了丰富的API,用于读取、写入、修改Excel文件。

4、特点
4-1、支持.xlsx格式

        openpyxl主要用于处理Excel 2010及更新版本的.xlsx文件。

4-2、读写Excel文件

        使用openpyxl可以读取现有的Excel文件,获取数据,修改数据,并保存到新的文件中。

4-3、操作单元格

        openpyxl允许用户按行、列或具体的单元格进行数据的读取和写入。

4-4、创建和修改工作表

        用户可以创建新的工作表,复制和删除现有的工作表,设置工作表的属性等。

4-5、样式设置

        openpyxl支持设置单元格的字体、颜色、边框等样式。

4-6、图表和公式

        用户可以通过openpyxl创建图表、添加公式等。

4-7、支持数字和日期格式

        openpyxl能够正确处理数字和日期格式,确保在Excel中显示正确的格式。

        综上所述,openpyxl库的出现填补了Python在处理Excel文件时的空白,经过不断的发展和完善,成为了一个功能丰富、易于使用的Python库。

二、openpyxl库的

        openpyxl库是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库,它基于Python,并且对于处理Excel文件提供了很多便利的功能,其主要点有:

1、优点
1-1、支持现代Excel格式

        openpyxl支持.xlsx格式的Excel文件,这是Excel 2010及更高版本使用的格式,也是目前广泛使用的格式。

1-2、功能丰富

        openpyxl提供了创建、修改和保存Excel工作簿、工作表、单元格、图表、公式、图像等功能。

1-3、易于使用

        openpyxl的API设计得相对直观,使得Python开发者能够很容易地掌握和使用。

1-4、与Excel兼容性

        openpyxl能够处理Excel文件中的很多复杂特性,如公式、样式、条件格式等,这确保了与Excel的良好兼容性。

1-5、性能良好

        在处理大型Excel文件时,openpyxl通常能够保持较好的性能。

1-6、社区支持

        openpyxl是一个开源项目,拥有活跃的社区支持和维护,这意味着开发者可以获得帮助和修复错误的快速响应。

1-7、跨平台

        openpyxl可以在不同的操作系统上运行,包括Windows、Linux和macOS等。

2、缺点
2-1、不支持旧版格式

        openpyxl不支持较旧的.xls格式(Excel 97-2003)。如果需要处理这种格式的文件,需要使用其他库如xlrd和xlwt(尽管这些库也面临一些兼容性和维护问题)。

2-2、某些特性支持有限

        虽然openpyxl支持许多Excel特性,但可能对于某些高级或特定的Excel功能支持有限或不支持。

2-3、内存占用

        在处理大型Excel文件时,openpyxl可能会占用较多的内存。这是因为openpyxl会将整个工作簿加载到内存中。

2-4、文档和示例可能不足

        尽管openpyxl的文档相对完整,但对于某些高级功能或特定用例,可能缺乏足够的示例或详细解释。

2-5.、依赖关系

        openpyxl依赖于lxml和et_xmlfile这两个Python库来处理XML和Excel文件,在某些环境中,可能需要额外安装这些依赖项。

2-6、学习曲线

        虽然openpyxl的API设计得相对直观,但对于初学者来说,可能需要一些时间来熟悉和掌握其用法。

三、openpyxl库的用途

        openpyxl是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它是用Python编写的,不需要Microsoft Excel,并且支持多种Excel数据类型,包括图表、图像、公式等,其主要用途有:

1、读取Excel文件

        你可以使用openpyxl来读取 Excel 文件中的数据,如单元格值、工作表名称、公式等,它支持多种数据类型,如字符串、数字、日期等。

2、写入Excel文件

        使用openpyxl,你可以创建新的Excel文件或向现有文件添加数据,你可以设置单元格的字体、颜色、边框等样式,你还可以添加图表、图像和其他复杂的Excel功能。

3、修改Excel文件

        你可以使用openpyxl来修改现有的Excel文件,如更改单元格值、添加或删除工作表等,这对于自动化数据处理和报告生成非常有用。

4、自动化

        openpyxl可以与其他Python库和框架(如 pandas、numpy、matplotlib 等)结合使用,以自动化数据处理和分析任务。你可以编写脚本来从多个数据源收集数据,将数据整合到 Excel 文件中,并执行各种数据分析任务。

5、与Excel交互

        如果你正在开发需要与Excel交互的应用程序或工具,openpyxl可以提供一个强大的API来处理Excel文件,它允许你读取和写入Excel文件,而无需依赖Microsoft Excel或其他第三方库。

6、数据迁移和转换

        使用openpyxl,你可以轻松地将数据从Excel文件迁移到其他数据库或文件格式,或将其他数据源的数据导入到Excel文件中。

7、创建模板化的报告

        你可以使用openpyxl来创建模板化的Excel报告,并在需要时填充数据,这对于需要定期生成具有一致格式和布局的报告的场景非常有用。

        总之,openpyxl是一个功能强大的库,可用于在Python中处理Excel文件,它提供了灵活的API来读取、写入、修改和自动化Excel文件的各个方面。

四、如何学好openpyxl库?

1、获取openpyxl库的属性和方法

        用print()和dir()两个函数获取openpyxl库所有属性和方法的列表

# ['DEBUG', 'DEFUSEDXML', 'LXML', 'NUMPY', 'Workbook', '__author__', '__author_email__', '__builtins__', '__cached__', 
# '__doc__', '__file__', '__license__', '__loader__', '__maintainer_email__', '__name__', '__package__', '__path__',
# '__spec__', '__url__', '__version__', '_constants', 'cell', 'chart', 'chartsheet', 'comments', 'compat', 'constants',
# 'descriptors', 'drawing', 'formatting', 'formula', 'load_workbook', 'open', 'packaging', 'pivot', 'reader', 'styles',
# 'utils', 'workbook', 'worksheet', 'writer', 'xml']
2、获取xlwt库的帮助信息

        用help()函数获取openpyxl库的帮助信息

Help on package openpyxl:

NAME
    openpyxl - # Copyright (c) 2010-2024 openpyxl

PACKAGE CONTENTS
    _constants
    cell (package)
    chart (package)
    chartsheet (package)
    comments (package)
    compat (package)
    descriptors (package)
    drawing (package)
    formatting (package)
    formula (package)
    packaging (package)
    pivot (package)
    reader (package)
    styles (package)
    utils (package)
    workbook (package)
    worksheet (package)
    writer (package)
    xml (package)

SUBMODULES
    constants

DATA
    DEBUG = False
    DEFUSEDXML = False
    LXML = True
    NUMPY = True
    __author_email__ = 'charlie.clark@clark-consulting.eu'
    __license__ = 'MIT'
    __maintainer_email__ = 'openpyxl-users@googlegroups.com'
    __url__ = 'https://openpyxl.readthedocs.io'

VERSION
    3.1.3

AUTHOR
    See AUTHORS

FILE
    e:\python_workspace\pythonproject\lib\site-packages\openpyxl\__init__.py
3、用法精讲
3-6、openpyxl.Workbook.get_index方法
3-6-1、语法
get_index(self, worksheet)
    Return the index of the worksheet.
    
    .. note::
        Deprecated: Use wb.index(worksheet)
3-6-2、参数

3-6-2-1、self(必须)一个对实例对象本身的引用,在类的所有方法中都会自动传递。

3-6-2-2、worksheet(必须)一个工作表对象,表示要获取索引的工作表对象。

3-6-3、功能

         用于获取已知工作表在工作簿中的索引。

3-6-4、返回值

        返回一个整数,代表工作表在工作簿中的索引位置,从0开始。

3-6-5、说明

        无

3-6-6、用法
# 6、openpyxl.Workbook.get_index方法
from openpyxl import Workbook
# 创建一个新的工作簿
wb = Workbook()
# 获取活动工作表
active_sheet = wb.active
# 在工作簿中添加新工作表
new_sheet = wb.create_sheet("New Sheet")
# 获取工作表的索引
index = wb.get_index(new_sheet)
print(f"新工作表的索引是:{index}")
3-7、openpyxl.Workbook.get_sheet_by_name方法
3-7-1、语法
get_sheet_by_name(self, name)
    Returns a worksheet by its name.
    
            :param name: the name of the worksheet to look for
            :type name: string
    
            
    
    .. note::
        Deprecated: Use wb[sheetname]
3-7-2、参数

3-7-2-1、self(必须)一个对实例对象本身的引用,在类的所有方法中都会自动传递。

3-7-2-2、name(必须)一个字符串,表示要获取的工作表的名称。

3-7-3、功能

        用于根据工作表名称获取相应的工作表。

3-7-4、返回值

        返回对应工作表对象。如果名称不匹配或工作表不存在,可能会抛出KeyError异常。

3-7-5、说明

        该方法从openpyxl 2.5版本开始已被弃用,并在之后的版本中被正式移除。推荐使用Workbook[sheet_name]或Workbook.get_sheet_by_name(sheet_name)来代替。

3-7-6、用法 
# 7、openpyxl.Workbook.get_sheet_by_name方法
from openpyxl import Workbook
# 创建一个新的工作簿
wb = Workbook()
# 创建一个新工作表
wb.create_sheet("NewSheet")
# 使用推荐的方法根据名称获取工作表
sheet = wb["NewSheet"]
# 使用已弃用方法根据名称获取工作表
# sheet = wb.get_sheet_by_name("NewSheet")  # 仍然可用,但不建议使用
print(f"获取到的工作表名称是:{sheet.title}")
3-8、openpyxl.Workbook.get_sheet_names方法
3-8-1、语法
get_sheet_names(self)
    .. note::
        Deprecated: Use wb.sheetnames
3-8-2、参数

3-8-2-1、self(必须)一个对实例对象本身的引用,在类的所有方法中都会自动传递。

3-8-3、功能

        用于获取工作簿中所有工作表的名称列表。

3-8-4、返回值

        返回一个包含工作簿中所有工作表名称的列表。

3-8-5、说明

        该方法在openpyxl 2.5版本中被弃用,并在之后的版本中被移除。推荐使用wb.sheetnames属性来替代。

3-8-6、用法 
# 8、openpyxl.Workbook.get_sheet_names方法
from openpyxl import Workbook
# 创建一个新的工作簿
wb = Workbook()
# 使用已弃用方法获取所有工作表的名称
# sheet_names = wb.get_sheet_names() # 仍然可用,但不建议使用
# 使用推荐方法获取所有工作表的名称
sheet_names = wb.sheetnames
print(sheet_names)
3-9、openpyxl.Workbook.index方法
3-9-1、语法
index(self, worksheet)
    Return the index of a worksheet.
3-9-2、参数

3-9-2-1、self(必须)一个对实例对象本身的引用,在类的所有方法中都会自动传递。

3-9-2-2、worksheet(必须)一个Worksheet对象,表示需要获取索引位置的工作表对象。

3-9-3、功能

        用于获取指定工作表在工作簿中的索引位置。

3-9-4、返回值

      返回一个整数,表示指定工作表在工作簿中的索引位置,从0开始计数。

3-9-5、说明

3-9-5-1、确保worksheet是属于当前工作簿的一个有效工作表对象。

3-9-5-2、如果指定的工作表不在工作簿中,将会引发ValueError异常,因此在调用该方法前,可以先检查工作表是否在工作簿中。通过这种方式,你可以轻松获取任何工作表在工作簿中的索引位置,以便在其他操作中使用。

3-9-6、用法
# 9、openpyxl.Workbook.index方法
from openpyxl import Workbook
# 创建一个新的工作簿
wb = Workbook()
# 创建新的工作表
ws1 = wb.create_sheet(title="Sheet1")
ws2 = wb.create_sheet(title="Sheet2")
# 获取工作表索引
index_ws1 = wb.index(ws1)
index_ws2 = wb.index(ws2)
print(f"Sheet1 的索引位置是: {index_ws1}")
print(f"Sheet2 的索引位置是: {index_ws2}")
3-10、openpyxl.Workbook.move_sheet方法
3-10-1、语法
move_sheet(self, sheet, offset=0)
    Move a sheet or sheetname
3-10-2、参数

3-10-2-1、self(必须)一个对实例对象本身的引用,在类的所有方法中都会自动传递。

3-10-2-2、sheet(必须)一个worksheet对象,表示需要移动的工作表对象。

3-10-2-3、offset(可选)一个整数(默认值为0),表示移动的偏移量,可以是正数(向右移动)或负数(向左移动)。

3-10-3、功能

        用于在工作簿中移动工作表到新的位置。

3-10-4、返回值

        该方法没有返回值,但会直接在工作簿中移动指定的工作表。

3-10-5、说明

3-10-5-1、有效范围:offset参数的值必须在有效范围内,即不能超出工作表的总数量范围。如果offset超出范围,会引发IndexError异常。

3-10-5-2、方向:正数offset表示向右移动,负数 offset表示向左移动。

3-10-5-3、引用:确保传入的sheet对象是当前工作簿中的有效工作表。

3-10-6、用法
# 10、openpyxl.Workbook.move_sheet方法
from openpyxl import Workbook
# 创建一个新的工作簿
wb = Workbook()
# 创建多个工作表
ws1 = wb.create_sheet(title="Sheet1")
ws2 = wb.create_sheet(title="Sheet2")
ws3 = wb.create_sheet(title="Sheet3")
# 初始工作表顺序
print([sheet.title for sheet in wb.worksheets])
# 将 "Sheet3" 移动到第一个位置
wb.move_sheet(ws3, -2)
# 移动后的工作表顺序
print([sheet.title for sheet in wb.worksheets])

五、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 第 401 场周赛题解

Leetcode 第 401 场周赛题解 Leetcode 第 401 场周赛题解题目1:3178. 找出 K 秒后拿着球的孩子思路代码复杂度分析 题目2:3179. K 秒后第 N 个元素的值思路代码复杂度分析 题目3:3180. 执行操作可获得的最大总奖励 I思路代码复杂度分析 题目4…

leetcode 二分查找·系统掌握 寻找旋转排序数组中的最小值II

题目: 题解: 本题比普通的寻找旋转排序数组中的最小值多了一个数组中的元素可以重复这一点。 这会时原来的思路出现一个漏洞(大家感兴趣可以看看我做普通版寻找旋转排序数组最小值的思路),就是旋转后的数组中的第二个…

AI在线免费视频工具2:视频配声音;图片说话hedra

1、视频配声音 https://deepmind.google/discover/blog/generating-audio-for-video/ https://www.videotosoundeffects.com/ (免费在线使用) 2、图片说话在线图片生成播报hedra hedra 上传音频与图片即可合成 https://www.hedra.com/ https://www.…

论文浅读之Mamba: Linear-Time Sequence Modeling with Selective State Spaces

介绍 这篇论文提出了一种新型的"选择性状态空间模型"(Selective State Space Model, S6)来解决之前结构化状态空间模型(SSM)在离散且信息密集的数据(如文本)上效果较差的问题。 Mamba 在语言处理、基因组学和音频分析等领域的应用中表现出色。…

读AI新生:破解人机共存密码笔记08超级智能

1. 发现动作 1.1. 时间跨度长的智能行为,需要具备在多个抽象层次上分层规划和管理活动的能力,从攻读博士学位(可能涉及1万亿个动作),到给一根手指发送一个运动控制指令,从而键入求职信的字符,无…

JavaWeb——Mysql的启动/登录/卸载

目录 1.Mysql服务器 2.Mysql的简单使用 2.1 启动Mysql: 2.2 登录Mysql 2.3 退出 3. 连接别人的数据库 4.卸载mqsql 1.Mysql服务器 安装了Mysql的计算机都成为Mysql服务器 2.Mysql的简单使用 2.1 启动Mysql: 第一种方法:搜索服务&am…

用户态协议栈05—架构优化

优化部分 添加了in和out两个环形缓冲区&#xff0c;收到数据包后添加到in队列&#xff1b;经过消费者线程处理之后&#xff0c;将需要发送的数据包添加到out队列。添加数据包解析线程&#xff08;消费者线程&#xff09;&#xff0c;架构分层 #include <rte_eal.h> #inc…

【Redis】List的常用命令以及常用场景

Redis List 是一个简单的链表&#xff0c;支持在两端进行插入和删除操作。这种数据结构在许多场景下非常有用&#xff0c;例如任务队列、消息队列等。Redis 提供了一系列针对 List 的操作命令&#xff0c;帮助我们更高效地操作链表。 1. List常用命令 操作类型命令时间复杂度…

Redis-使用 jedis 操作数据

文章目录 1、Jedis简介2、环境准备3、创建maven普通项目,导入如下依赖4、测试JAVA程序和Redis之间的通信 1、Jedis简介 "Jedis" 通常是作为 "Java Redis" 的缩写或简称来理解的。Java Embedded Data Structures Interface 表示 Java嵌入式数据结构接口 2、…

如何生成protobuf文件

背景 protobuf是一种用于序列化结构数据的工具&#xff0c;实现数据的存储与交换&#xff0c;与编程语言和开发平台无关。 序列化&#xff1a;将结构数据或者对象转换成能够用于存储和传输的格式。 反序列化&#xff1a;在其他的计算环境中&#xff0c;将序列化后的数据还原为…

解决双击bootstrap.bat没有生成b2.exe文件

双击bootstrap.bat但是并没有没有生成b2.exe文件&#xff0c;会报如下错误&#xff1a; "cl" 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。D:\cppsoft\boost_1_85_0\tools\build\src\engine>dir *.exe 驱动器 D 中的卷是 Data 卷的序列号是…

Swoole_loader扩展安装图文教程 Swoole扩展文件下载

Swoole_loader扩展安装图文教程 Swoole扩展文件下载 安装和配置Swoole Loader 1 - 下载Swoole Loader 请下载兼容PHP7.2和非线程安全的Swoole Loader扩展&#xff0c;点击下载适配环境的扩展文件 2 - 安装Swoole Loader 将刚才下载的Swoole Loader扩展文件&#xff08;swo…

AI播客下载:Machine Learning Street Talk(AI机器学习)

该频道由 Tim Scarfe 博士、Yannic Kilcher 博士和 Keith Duggar 博士管理。 他们做了出色的工作&#xff0c;对每个节目进行了彻底的研究&#xff0c;并与机器学习行业中一些受过最高教育、最全面的嘉宾进行了双向对话。 每一集都会教授一些新内容&#xff0c;并且提供未经过滤…

【从零到一】电子元器件网站建设/开发方案、流程及搭建要点全解

电子元器件行业在数字化转型的大潮下也迎来了前所未有的发展机遇。一个高效、专业、用户友好的电子元器件网站&#xff0c;不仅能够提升品牌形象&#xff0c;还能显著提高销售转化率&#xff0c;增强客户粘性。道合顺芯站点将详细阐述电子元器件开发方案、实施流程&#xff0c;…

STM32通过SPI硬件读写W25Q64

文章目录 1. W25Q64 2. 硬件电路 3. 软件/硬件波形对比 4. STM32中的SPI外设 5. 代码实现 5.1 MyI2C.c 5.2 MyI2C.h 5.3 W25Q64.c 5.4 W25Q64.h 5.5 W25Q64_Ins.h 5.6 main.c 1. W25Q64 对于SPI通信和W25Q64的详细解析可以看下面这篇文章 STM32单片机SPI通信详解-C…

C语言 | Leetcode C语言题解之第172题阶乘后的零

题目&#xff1a; 题解&#xff1a; int trailingZeroes(int n) {int ans 0;while (n) {n / 5;ans n;}return ans; }

南昌代理记账报税的详细说明

随着社会经济的发展和企业运营的需要&#xff0c;越来越多的企业开始寻找专业的会计服务&#xff0c;我们特别为您提供南昌代理记账报税的相关信息。 https://www.9733.cn/news/detail/166.html 代理记账的主要功能 1、代理记账为企业提供专业化的财务咨询服务。 2、及时准确…

【Linux系统】Linux 命令行查看当前目录的总大小/总磁盘空间

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-06-22 0…

ECharts 蓝色系-荧光图标折线图01案例

ECharts 蓝色系-荧光图标折线图01案例 图表意义 本折线图案例展示了一周内不同路线的使用情况或数据统计。通过折线的上升和下降&#xff0c;可以直观地观察到每条路线的流量或数据变化趋势&#xff0c;从而进行分析和决策。 效果预览 效果图展示不同路线的数据统计和个性化…

DVWA 靶场 Authorisation Bypass 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…