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数据,提高工作效率。我是橙色小博,关注我,一起在人工智能领域进步!

相关推荐
程序小武5 分钟前
python编辑器如何选择?
后端·python
陈随易7 分钟前
薪资跳动,VSCode实时显示今日打工收入
前端·后端·程序员
七灵微11 分钟前
【前端】SPA v.s. MPA
前端
一叶知秋121113 分钟前
UV管理python项目
python
fqq319 分钟前
CSS级联样式(基础知识)备忘录
前端·css
前端小巷子19 分钟前
JS深拷贝与浅拷贝
前端·javascript·面试
AndrewHZ19 分钟前
【图像处理入门】2. Python中OpenCV与Matplotlib的图像操作指南
图像处理·python·opencv·计算机视觉·matplotlib·图像操作
用户214118326360220 分钟前
N8N教程-手把手教你搭建 N8N 自动化工作流:从安装到云部署全流程实战
前端·vue.js
Mintopia44 分钟前
Three.js 环境贴图:给你的 3D 世界加个梦幻滤镜
前端·javascript·three.js
Mintopia1 小时前
JavaScript 里的光影魔术师:光线投射
前端·javascript·计算机图形学