Python中openpyxl库的基础解析与代码实例

目录

[1. 前言](#1. 前言)

[2. 安装openpyxl](#2. 安装openpyxl)

[3. 创建一个新的工作簿](#3. 创建一个新的工作簿)

[4. 打开一个已有的工作簿](#4. 打开一个已有的工作簿)

[5. 读取和写入单元格](#5. 读取和写入单元格)

[6. 操作工作表](#6. 操作工作表)

[7. 样式设置](#7. 样式设置)

[8. 插入图像](#8. 插入图像)

[9. 插入图表](#9. 插入图表)

[10. 数据验证](#10. 数据验证)

[11. 条件格式](#11. 条件格式)

[12. 工作簿保护](#12. 工作簿保护)

[13. 保存和关闭工作簿](#13. 保存和关闭工作簿)

[14. 总结](#14. 总结)


1. 前言

在数据分析和处理的过程中,Excel文件是一种非常常见的数据格式。Python作为一种强大的编程语言,提供了多种库来处理Excel文件,其中openpyxl是一个非常流行的库。openpyxl是一个专门用于读取和写入Excel xlsx/xlsm/xltx/xltm文件的Python库。它提供了丰富的功能,可以满足我们在处理Excel文件时的大部分需求。在本篇博客中,我将详细介绍openpyxl库的基本用法和一些常用功能。无论你是初学者还是有一定经验的开发者,都可以通过本文了解如何使用openpyxl来操作Excel文件。

2. 安装openpyxl

在使用openpyxl之前,我们需要先安装它。可以使用pip命令来安装:

bash 复制代码
pip install openpyxl

3. 创建一个新的工作簿

python 复制代码
from openpyxl import Workbook

# 创建一个新的工作簿
wb = Workbook()

# 获取当前活动的工作表
ws = wb.active

# 给工作表设置标题
ws.title = "My First Sheet"

# 保存工作簿
wb.save("example.xlsx")

4. 打开一个已有的工作簿

python 复制代码
from openpyxl import load_workbook

# 打开一个已有的工作簿
wb = load_workbook('example.xlsx')

# 获取所有工作表的名称
print(wb.sheetnames)

# 获取特定的工作表
ws = wb['My First Sheet']

5. 读取和写入单元格

python 复制代码
# 写入数据到单元格
ws['A1'] = 'Hello'
ws['B1'] = 'World'

# 读取单元格的值
print(ws['A1'].value)  # 输出:Hello

# 另一种写入方式
ws.append([1, 2, 3])  # 在最后一行追加一行数据

6. 操作工作表

python 复制代码
# 创建新的工作表
ws1 = wb.create_sheet("New Sheet")

# 复制工作表
ws2 = wb.copy_worksheet(ws1)
ws2.title = "Copied Sheet"

# 删除工作表
del wb['New Sheet']

7. 样式设置

python 复制代码
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side

# 设置字体
font = Font(name='Arial', size=12, bold=True, italic=True, color='FF0000')
ws['A1'].font = font

# 设置对齐方式
alignment = Alignment(horizontal='center', vertical='center')
ws['A1'].alignment = alignment

# 设置填充颜色
fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
ws['A1'].fill = fill

# 设置边框
border = Border(
    left=Side(style='thin'),
    right=Side(style='thin'),
    top=Side(style='thin'),
    bottom=Side(style='thin')
)
ws['A1'].border = border

8. 插入图像

python 复制代码
from openpyxl.drawing.image import Image

# 插入图像
img = Image('example.jpg')
ws.add_image(img, 'D1')

9. 插入图表

python 复制代码
from openpyxl.chart import BarChart, Reference

# 准备数据
data = Reference(ws, min_row=1, min_col=1, max_row=5, max_col=2)

# 创建图表
chart = BarChart()
chart.add_data(data, titles_from_data=True)

# 设置图表标题
chart.title = "Sales Data"
chart.x_axis.title = 'Month'
chart.y_axis.title = 'Sales'

# 添加图表到工作表
ws.add_chart(chart, "E1")

10. 数据验证

python 复制代码
from openpyxl.worksheet.datavalidation import DataValidation

# 创建数据验证规则
dv = DataValidation(type="list", formula1='"Apple,Banana,Cherry"', showDropDown=True)

# 将数据验证应用到单元格
dv.add('A2:A10')
ws.add_data_validation(dv)

在Excel的A2到A10单元格区域,会自动生成一个下拉列表 ,用户只能从预设的选项中选择值(AppleBananaCherry),而不能输入其他内容。

11. 条件格式

python 复制代码
from openpyxl.styles import Font
from openpyxl.formatting.rule import CellIsRule

# 设置条件格式规则
red_font = Font(color='FF0000')
rule = CellIsRule(type='greaterThan', formula=['50'], font=red_font)

# 应用条件格式
ws.conditional_formatting.add('B2:B10', rule)

上面代码的功能是为Excel工作表中的特定单元格区域(B2:B10)设置条件格式,实现"当单元格的值大于50时,字体变为红色"的效果。

12. 工作簿保护

python 复制代码
# 保护工作簿
wb.security.workbook_password = 'secret'
wb.security.lockStructure = True

# 保护工作表
ws.protection.sheet = True
ws.protection.password = 'sheetsecret'

13. 保存和关闭工作簿

python 复制代码
# 保存工作簿
wb.save('example.xlsx')

# 关闭工作簿(在某些情况下可能需要)
wb.close()

14. 总结

openpyxl是一个功能强大且易于使用的Python库,用于处理Excel文件。从基本的创建和打开工作簿,到复杂的样式设置、图表插入、数据验证等高级功能,openpyxl都能满足我们的需求。通过本篇博客的介绍,大家应该已经掌握了openpyxl的基本用法和一些常用功能。在实际项目中,openpyxl可以帮助我们高效地处理Excel数据,提高工作效率。我是橙色小博,关注我,一起在人工智能领域进步!

相关推荐
乐予吕1 分钟前
Promise 深度解析:从原理到实战
前端·javascript·promise
P7Dreamer2 分钟前
优雅封装:Vue3 + Element Plus 智能紧凑型搜索组件开发实践
前端·javascript
Turing_0102 分钟前
HarmonyOS隐私保护全攻略:从入门到精通
前端
Turing_0103 分钟前
HarmonyOS应用安全全攻略:从系统到代码的全面防护
前端
Beginner x_u9 分钟前
[AJAX 实战] 图书管理系统下 编辑图书
前端·javascript·ajax·bootstrap
Ace_317508877610 分钟前
# 唯品会商品详情接口开发指南
前端
Beginner x_u12 分钟前
【AJAX 实战】图书管理系统上 渲染图书列表+新增图书+删除图书
前端·ajax·bootstrap
恋猫de小郭16 分钟前
Flutter 里的像素对齐问题,深入理解为什么界面有时候会出现诡异的细线?
android·前端·flutter
Jooolin21 分钟前
【Python】什么?Python 可以用来写 Galgame?
python·游戏·ai编程
anyup29 分钟前
AI 也救不了的前端坑,你遇到过吗?社区、AI、源码三重排查!
前端·数据可视化·cursor