当前位置: 首页 > news >正文

使用openpyxl轻松操控Excel文件

目录

  • 1. `openpyxl` 简介
  • 2. 安装与快速入门
    • 2.1 安装 `openpyxl`
    • 2.2 快速创建一个 Excel 文件
    • 2.3 读取 Excel 文件
  • 3. `openpyxl` 的核心概念
    • 3.1 工作簿(Workbook)
    • 3.2 工作表(Worksheet)
    • 3.3 单元格(Cell)
    • 3.4 行与列
    • 3.5 范围(Range)
    • 3.6 公式与函数
    • 3.7 样式与格式
  • 4. Excel 文件的读取与写入
    • 4.1 读取 Excel 文件
    • 4.2 写入 Excel 文件
    • 4.3 实践:批量修改单元格
  • 5. 高级功能详解
    • 5.1 操作公式
    • 5.2 添加图表
    • 5.3 插入图片
    • 5.4 数据验证
    • 5.5 条件格式
  • 6. 样式与格式设置
    • 6.1 字体样式
    • 6.2 单元格填充
    • 6.3 边框设置
    • 6.4 对齐方式
    • 6.5 数字格式
    • 6.6 合并与拆分单元格
    • 6.7 实践:制作格式化报表

1. openpyxl 简介

Python 的 openpyxl 库是处理 Excel 文件的强大工具。在数据分析、自动化办公和报告生成等领域,经常需要对 Excel 文件进行读取、修改和创建操作。openpyxl 提供了全面的功能,允许开发者以编程方式操纵 Excel 文件,从而提高工作效率并减少手动操作的错误。

具体来讲,openpyxl 是一个用于读取和写入 Microsoft Excel 2010 xlsx/xlsm/xltx/xltm 文件的开源库。与其他处理 Excel 文件的库相比,openpyxl 专注于对现代 Excel 格式(即基于 XML 的 .xlsx 文件)的支持。

主要特点包括:

  • 读取和写入 Excel 文件:支持对单元格、行、列、工作表和工作簿的操作。
  • 格式化:可以修改单元格的字体、颜色、边框和对齐方式等格式属性。
  • 图表和图片:支持在工作表中插入图表和图片,增强数据的可视化。
  • 公式:能够读取和设置单元格中的公式,支持计算公式结果。

2. 安装与快速入门

2.1 安装 openpyxl

在开始使用 openpyxl 之前,需要先进行安装。可以通过 pip 进行安装:

pip install openpyxl

确保您的 Python 版本在 3.6 及以上,因为较早的版本可能不支持部分功能。

2.2 快速创建一个 Excel 文件

以下是一个使用 openpyxl 创建简单 Excel 文件的示例:

import openpyxl
from openpyxl import Workbook# 创建一个新的工作簿
wb = Workbook()# 激活默认的工作表
ws = wb.active# 在单元格中写入数据
ws['A1'] = 'Hello'
ws['B1'] = 'World!'# 保存工作簿
wb.save('hello_world.xlsx')

运行上述代码后,将在当前目录下生成一个名为 hello_world.xlsx 的 Excel 文件,内容如下:

AB
HelloWorld!

2.3 读取 Excel 文件

openpyxl 还可以读取已有的 Excel 文件。下面是读取刚才创建的文件并打印单元格内容的示例:

import openpyxl# 加载已有的工作簿
wb = openpyxl.load_workbook('hello_world.xlsx')# 选择活动的工作表
ws = wb.active# 读取并打印单元格内容
print(ws['A1'].value)  # 输出: Hello
print(ws['B1'].value)  # 输出: World!

通过以上简单的示例,我们已经了解了如何使用 openpyxl 创建和读取 Excel 文件。在接下来的章节中,我们将详细介绍 openpyxl 的核心概念和高级功能。

3. openpyxl 的核心概念

在使用 openpyxl 操作 Excel 文件时,需要理解一些核心概念,这将有助于我们更有效地利用该库。

3.1 工作簿(Workbook)

工作簿是 Excel 文件的顶层容器,包含了所有的工作表、全局设置和属性。

  • 创建工作簿wb = Workbook()
  • 加载工作簿wb = load_workbook(filename)

3.2 工作表(Worksheet)

工作簿包含一个或多个工作表,每个工作表都是一个二维的单元格网格。

  • 激活工作表ws = wb.active
  • 创建新工作表ws = wb.create_sheet(title='SheetName')
  • 访问特定工作表ws = wb['SheetName']

3.3 单元格(Cell)

单元格是工作表中的基本元素,包含数据、样式和其他属性。

  • 访问单元格cell = ws['A1']cell = ws.cell(row=1, column=1)
  • 设置单元格值ws['A1'] = 'Data'
  • 获取单元格值value = ws['A1'].value

3.4 行与列

可以通过行和列来批量操作单元格。

  • 迭代行for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
  • 迭代列for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):

3.5 范围(Range)

范围是指一组连续的单元格,可以对其进行批量操作。

  • 访问范围cell_range = ws['A1:C3']

3.6 公式与函数

可以在单元格中使用公式,openpyxl 支持 Excel 的大部分公式。

  • 设置公式ws['A2'] = '=SUM(A1:A10)'
  • 读取公式结果:需要在 Excel 中打开文件,或使用 data_only 参数加载工作簿。
wb = load_workbook('formula.xlsx', data_only=True)

3.7 样式与格式

openpyxl 提供了丰富的样式和格式选项,可以设置字体、颜色、对齐方式等。

设置字体

from openpyxl.styles import Font
ws['A1'].font = Font(name='Calibri', size=14, bold=True)

设置填充颜色

from openpyxl.styles import PatternFill
ws['A1'].fill = PatternFill(fill_type='solid', start_color='FF0000')

4. Excel 文件的读取与写入

在数据处理过程中,读取和写入 Excel 文件是最常见的操作。openpyxl 提供了简单直观的方法来完成这些任务。

4.1 读取 Excel 文件

加载工作簿

使用 load_workbook 函数加载已有的 Excel 文件:

from openpyxl import load_workbookwb = load_workbook('data.xlsx')

选择工作表

可以通过多种方式选择工作表:

使用工作表名称:

ws = wb['Sheet1']

使用 active 属性:

ws = wb.active

读取单元格数据

读取单元格的值:

value = ws['A1'].value

或者使用行列索引:

value = ws.cell(row=1, column=1).value

遍历数据

遍历所有行和列:

for row in ws.iter_rows(values_only=True):print(row)

4.2 写入 Excel 文件

写入单元格

在特定单元格中写入数据:

ws['A1'] = 'New Data'

或者使用行列索引:

ws.cell(row=1, column=1, value='New Data')

插入行和列

插入一行:

ws.insert_rows(idx=2)

插入一列:

ws.insert_cols(idx=3)

删除行和列

删除一行:

ws.delete_rows(idx=2)

删除一列:

ws.delete_cols(idx=3)

保存工作簿

完成所有修改后,保存工作簿:

wb.save('modified_data.xlsx')

4.3 实践:批量修改单元格

假设我们有一个成绩表,需要将所有学生的成绩提高 5 分。

from openpyxl import load_workbookwb = load_workbook('scores.xlsx')
ws = wb.active# 假设成绩在 B 列,从第 2 行开始
for row in ws.iter_rows(min_row=2, min_col=2, max_col=2):for cell in row:if isinstance(cell.value, (int, float)):cell.value += 5wb.save('updated_scores.xlsx')

通过以上操作,我们成功地批量修改了 Excel 文件中的数据。

5. 高级功能详解

openpyxl 不仅可以进行基本的读取和写入操作,还提供了许多高级功能,例如图表、图片和数据验证等。

5.1 操作公式

可以在单元格中写入公式:

ws['A10'] = '=SUM(A1:A9)'

openpyxl 不会自动计算公式结果,但可以通过设置 data_only=True 来读取公式计算后的值:

wb = load_workbook('formula.xlsx', data_only=True)
ws = wb.active
print(ws['A10'].value)

5.2 添加图表

以创建柱状图为例:

from openpyxl.chart import BarChart, Referencechart = BarChart()
data = Reference(ws, min_col=2, min_row=1, max_row=10)
chart.add_data(data, titles_from_data=True)
ws.add_chart(chart, 'E5')

可以设置图表的标题、轴标签等属性:

chart.title = "Sales Chart"
chart.x_axis.title = "Month"
chart.y_axis.title = "Sales"

5.3 插入图片

from openpyxl.drawing.image import Imageimg = Image('logo.png')

添加图片到工作表:

ws.add_image(img, 'A1')

5.4 数据验证

可以添加数据验证来限制单元格的输入内容。

创建数据验证对象

from openpyxl.worksheet.datavalidation import DataValidationdv = DataValidation(type="whole", operator="between", formula1=1, formula2=100)

添加数据验证到工作表

dv.add('A1:A10')
ws.add_data_validation(dv)

5.5 条件格式

根据单元格的值,动态地改变单元格的格式。

创建条件格式规则

from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import PatternFillred_fill = PatternFill(start_color='FFC7CE', end_color='FFC7CE', fill_type='solid')ws.conditional_formatting.add('A1:A10', CellIsRule(operator='greaterThan', formula=['80'], fill=red_fill))

通过以上高级功能的介绍,可以看出 openpyxl 在处理 Excel 文件时具有非常强大的能力,足以满足大多数复杂的需求。

6. 样式与格式设置

为了使 Excel 文件更加美观和专业,openpyxl 提供了丰富的样式和格式设置选项。

6.1 字体样式

设置字体

from openpyxl.styles import Fontbold_font = Font(bold=True)
italic_font = Font(italic=True)ws['A1'].font = bold_font
ws['A2'].font = italic_font

设置字体颜色和大小

from openpyxl.styles import Font, colorsfont_style = Font(color=colors.RED, size=14, name='Arial')
ws['A1'].font = font_style

6.2 单元格填充

设置背景颜色

from openpyxl.styles import PatternFillfill = PatternFill(fill_type='solid', start_color='FFFF00', end_color='FFFF00')
ws['A1'].fill = fill

6.3 边框设置

添加边框

from openpyxl.styles import Border, Sidethin_border = Border(left=Side(style='thin'),right=Side(style='thin'),top=Side(style='thin'),bottom=Side(style='thin'))ws['A1'].border = thin_border

6.4 对齐方式

设置对齐方式

from openpyxl.styles import Alignmentalignment = Alignment(horizontal='center', vertical='center')
ws['A1'].alignment = alignment

6.5 数字格式

设置数字格式

ws['A1'].number_format = '0.00'  # 保留两位小数

6.6 合并与拆分单元格

合并单元格

ws.merge_cells('A1:C1')

拆分单元格

ws.unmerge_cells('A1:C1')

6.7 实践:制作格式化报表

from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, Border, Sidewb = Workbook()
ws = wb.active# 写入表头
headers = ['姓名', '数学', '英语', '总分']
ws.append(headers)# 添加数据
data = [['张三', 85, 92],['李四', 78, 88],['王五', 90, 95]
]for row in data:total = row[1] + row[2]row.append(total)ws.append(row)# 设置表头样式
for cell in ws[1]:cell.font = Font(bold=True)cell.alignment = Alignment(horizontal='center')cell.border = Border(bottom=Side(style='thin'))# 设置列宽
ws.column_dimensions['A'].width = 15
for col in ['B', 'C', 'D']:ws.column_dimensions[col].width = 10# 保存工作簿
wb.save('report.xlsx')

通过以上代码,我们生成了一个格式化的成绩报表,包含表头加粗、单元格对齐、边框和列宽设置。

相关文章:

使用openpyxl轻松操控Excel文件

目录 1. openpyxl 简介2. 安装与快速入门2.1 安装 openpyxl2.2 快速创建一个 Excel 文件2.3 读取 Excel 文件 3. openpyxl 的核心概念3.1 工作簿(Workbook)3.2 工作表(Worksheet)3.3 单元格(Cell)3.4 行与列…...

指定PDF或图片多个识别区域,识别区域文字,并批量对PDF或图片文件改名

常见场景 用户有大量图片/PDF文件,期望能按照图片/PDF中的某些文字对图片/PDF文件重命名。期望工具可以批量处理、离线识别(保证数据安全性)。手工操作麻烦。具体场景:用户有工程现场照片,订单,简历等PDF或…...

Web3中的跨链技术:实现无缝连接的挑战

Web3的到来为互联网带来了去中心化的愿景,而跨链技术则是实现这一愿景的关键。跨链技术旨在解决不同区块链之间的互操作性问题,使得用户和应用能够在多个区块链网络之间无缝地传输数据和价值。尽管这一技术具有广阔的前景,但在实现过程中仍面…...

词袋(Bag of Words, BoW)

词袋(Bag of Words, BoW)模型详解 词袋(BoW)是一种用于文本处理的特征提取方法,常用于自然语言处理(NLP)任务中。在BoW模型中,文本被表示为一个词的无序集合,而忽略了词…...

HTTP Status 404 - /brand-demo/selectAllServlet错误解决原因-Servlet/JavaWeb/IDEA

检查xml文件的包名有无错误检查html文件的url有无写错,是否与Servlet的urlPatterns一致检查Servlet的urlpattern有没有写错(如写成name),检查doPost、doGet是否正常运行 注:IDEA新建Servlet时,默认的WebServlet注解中name需要改urlPatterns&…...

宁夏众智科技OA办公系统存在SQL注入漏洞

漏洞描述 宁夏众智科技OA办公系统存在SQL注入漏洞 漏洞复现 POC POST /Account/Login?ACTIndex&CLRHome HTTP/1.1 Host: Content-Length: 45 Cache-Control: max-age0 Origin: http://39.105.48.206 Content-Type: application/x-www-form-urlencoded Upgrade-Insecur…...

Spring邮件发送:配置与发送邮件详细步骤?

Spring邮件发送教程指南?怎么用Spring邮件发送服务? Spring框架提供了强大的邮件发送支持,使得开发者能够轻松地在应用程序中集成邮件发送功能。AokSend将详细介绍如何在Spring应用中配置和发送邮件,帮助开发者快速掌握这一关键技…...

iPhone/iPad技巧:如何解锁锁定的 iPhone 或 iPad

“在我更新 iPhone 上的软件后,最近我遇到了iPhone 被锁定到所有者的消息,该如何解决?” 根据我们的研究,许多用户在 iOS 18 更新或恢复出厂设置后都会遇到同样的问题。只要出现问题,您就无法使用 iPhone 或 第 1 部分…...

无源码实现免登录功能

因项目要求需要对一个没有源代码的老旧系统实现免登录功能,系统采用前后端分离的方式部署,登录时前端调用后台的认证接口,认证接口返回token信息,然后将token以json的方式存储到cookie中,格式如下: 这里有…...

大数据毕业设计选题推荐-民族服饰数据分析系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

疾风大模型气象,基于气象数据打造可视化平台

引言 随着气象数据的广泛应用,越来越多的行业依赖天气预报与气候分析来做出决策。从农业、航空、能源到物流,气象信息无时不刻影响着各行各业的运作。然而,气象数据本身复杂且多样,如何将这些数据转化为直观、易于理解的图形和信…...

PHP安装后Apache无法运行的问题

问题 按照网上教程php安装点击跳转教程,然后修改Apache的httpd.conf文件,本来可以运行的Apache,无法运行了 然后在"C:\httpd-2.4.62-240904-win64-VS17\Apache24\logs\error.log"(就是我下载Apache的目录下的logs中&am…...

[论文精读]Multi-Channel Graph Neural Network for Entity Alignment

论文网址:Multi-Channel Graph Neural Network for Entity Alignment (aclanthology.org) 论文代码:https:// github.com/thunlp/MuGNN 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&a…...

Study-Oracle-10-ORALCE19C-RAC集群搭建(一)

一、硬件信息及配套软件 1、硬件设置 RAC集群虚拟机:CPU:2C、内存:10G、操作系统:50G Openfile数据存储:200G (10G*2) 2、网络设置 主机名公有地址私有地址VIP共享存储(SAN)rac1192.168.49.13110.10.10.20192.168.49.141192.168.49.130rac2192.168.49.13210.10.10.3…...

1.8 物理层下的传输媒体

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 1 导引型传输媒体1.1 双绞线1.2 同轴电缆1.3 光缆 2 非导引型传输媒体2.1 无线电微波通信2.2 多径效应2.3 卫星通信2.4 无线局域网 在数据通信系统中,传输媒体是发…...

指纹定位的原理与应用场景

目录 原理 1. 信号特征收集 2. 定位算法 推导公式 距离估算公式 定位算法公式 使用场景 发展前景 指纹定位是一种基于无线信号强度(如Wi-Fi、RFID、蓝牙等)来实现室内定位的技术。它借助于环境中多个基站的信号特征来推断用户的位置。以下是对指纹定位的详细讲解,包…...

发现一款适合所有用户小巧且强大的编辑器(完美替换Windows记事本)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 编辑器 📒📝 功能亮点📝 适用场景📝 安装使用📝 替换Windows记事本🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 今天,发现一款小巧(仅1.26M)且功能强大的编辑器,适用于文本编辑,编程开发等,应该说是适…...

Mysql知识点整理

一、关系型数据库 mysql属于关系型数据库,它具备以下特点 关系模型:数据以二维表格形式存储,易于理解和使用。 数据一致性:通过事务处理机制(ACID特性:原子性、一致性、隔离性、持久性)保证数据…...

ISA-95制造业中企业和控制系统的集成的国际标准-(4)

ISA-95 文章目录 ISA-95ISA-95 & MES一、ISA-95是MES的系统标准二、ISA-95对MOM/MES的活动定义三、MES/MOM如何遵循ISA-95四、MES/MOM功能划分和边界定义 ISA-95 & MES ISA-95 作为企业系统与控制系统集成国际标准,提供了一个通用的框架,有助于…...

Redis篇(Redis原理 - 数据结构)(持续更新迭代)

目录 一、动态字符串 二、intset 三、Dict 1. 简介 2. Dict的扩容 3. Dict的rehash 4. 知识小结 四、ZipList 1. 简介 2. ZipListEntry 3. Encoding编码 五、ZipList的连锁更新问题 六、QuickList 七、SkipList 八、RedisObject 1. 什么是 redisObject 2. Redi…...

Disco公司的DBG工艺详解

知识星球里的学员问:可以详细介绍下DBG工艺吗?DBG工艺的优势在哪里? 什么是DBG工艺? DBG工艺,即Dicing Before Grinding,划片后减薄。Dicing即金刚石刀片划切,Grinding即背面减薄,…...

大学学校用电安全远程监测预警系统

1.概述: 该系统是基于移动互联网、云计算技术,通过物联网传感终端,将办公建筑、学校、医院、工厂、体育场馆、宾馆、福利院等人员密集场所的电气安全数据,实时传输至安全用申管理服务器,为用户提供不间断的数据跟踪&a…...

C++网络编程之IP地址和端口

概述 IP地址和端口共同定义了网络通信中的源和目标。IP地址负责将数据从源设备正确地传输到目标设备,而端口则确保在目标设备上数据被交付到正确的应用或服务。因此,在网络编程中,IP地址和端口是密不可分的两个概念,共同构成了网络…...

陶瓷4D打印有挑战,水凝胶助力新突破,复杂结构轻松造

大家好!今天要和大家聊聊一项超酷的技术突破——《Direct 4D printing of ceramics driven by hydrogel dehydration》发表于《Nature Communications》。我们都知道4D打印很神奇,能让物体随环境变化而改变形状。但陶瓷因为太脆太硬,4D打印一…...

网络安全的详细学习顺序

网络安全的详细学习顺序可以按照由浅入深、逐步递进的原则进行。以下是一个建议的网络安全学习顺序: 1. 基础知识学习 计算机网络基础:理解网络架构、TCP/IP协议栈、OSI七层模型、数据链路层到应用层的工作原理。 操作系统基础:了解Window…...

人工智能与机器学习原理精解【28】

文章目录 随机森林随机森林详解随机森林的详细解释1. 随机森林的基本概念、原理和应用场景、公式和计算2. 随机森林在机器学习、深度学习等领域的重要性3. 实际应用案例及其优势和局限性4. 随机森林在解决实际问题中的价值和意义 随机森林局限性的详细归纳随机森林主要的应用领…...

StarRocks 中如何做到查询超时(QueryTimeout)

背景 本文基于 StarRocks 3.1.7 主要是分析以下两种超时设置的方式: SESSION 级别 SET query_timeout 10;SELECT sleep(20);SQL 级别 select /* SET_VAR(query_timeout10) */ sleep(20); 通过本文的分析大致可以了解到在Starrocks的FE端是如何进行Command的交互以及数据流走…...

Windows 开发工具使用技巧 Visual Studio使用安装和使用技巧 Visual Studio 快捷键

一、Visual Studio配置详解 1. 安装 Visual Studio 安装时,选择你所需要的组件和工作负载。Visual Studio 提供多种工作负载,例如: ASP.NET 和 Web 开发:用于 Web 应用的开发。 桌面开发(使用 .NET 或 C&#xff09…...

计算机网络-系分(5)

目录 计算机网络 DNS解析 DHCP动态主机配置协议 网络规划与设计 层次化网络设计 网络冗余设计 综合布线系统 1. 双栈技术 2. 隧道技术 3. 协议转换技术 其他网络技术 DAS(Direct Attached Storage,直连存储) NAS(Net…...

React Native使用高德地图

在React Native项目中使用高德地图,主要涉及到几个关键步骤:安装高德地图相关的React Native模块、配置项目、申请高德地图API Key、以及在实际组件中使用高德地图功能。以下是一个详细的步骤指南: 一、安装高德地图React Native模块 首先&…...

济南软件开发培训机构/杭州网站seo价格

一次在使用json.dumps()过程中,出现错误提示:ERROR:"UnicodeDecodeError: utf8 codec cant decode byte 0xe1 in position 5: unexpected end of data"通过错误提示我们知道,肯定是编码问题,找到问题所在&am…...

wordpress扁平化主题/成都seo的方法

——阶段 动态规划问题通常都具有时间或空间上的次序性,因此求解这类问题时,首先要将问题按一定的次序划分成若干相互联系的阶段,以便能按一定次序去求解。如例1,可以按空间次序划分为A—B—C—D—E 4个阶段,而例2&…...

宁波网站推广软件/搜索引擎优化与推广技术

VMware Workstation 从软盘和/或 CD-ROM 直接安装未修改的操作系统。在构造一台虚拟机时,这个安装过程是第一步并且也是唯一必需的一步。但是,VMware 强烈建议你在每一台虚拟机中完成操作系统安装之后立即安装 VMware Tools 套件。在客户操作系统中安装…...

泉州seo-泉州网站建设公司/卡点视频软件下载

根据OLAP委员会的定义,OLAP是“使分析人员、管理人员或执行人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的并真实反映企业维特性的信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。”其特点如下&#…...

苏州网站建设网站开发/关键字广告

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Vue.js概述 Vue 是一套用于构建用户界面的渐进式JavaScript框架。 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层…...

怎么看一个网站是用什么程序做的/厦门关键词优化平台

第2章 Java应用程序介绍2.1 作业检查单2.2 实验前任务2.3 实验练习2.4 实验后任务第3章 Java applet 介绍3.1 作业检查单3.2 实验前任务3.3 实验练习3.4 实验后任务第4章 控制结构(一)4.1 作业检查单4.2 实验前任务4.3 实验练习4.4 实验后任务第2章 Java应用程序介绍2.1 作业检…...