Python 第三方库:OpenPyXL(Excel 文件读写与操作)

OpenPyXL 是一个功能强大的第三方 Python 库,用于读取、写入与编辑 Excel 文件(.xlsx 格式)。

它可以创建新工作簿、修改单元格内容、设置样式、合并单元格、插入图表等,是进行 Excel 自动化处理的核心工具之一。

安装:

nginx 复制代码
pip install openpyxl

常见应用场景:

(1)创建与编辑 Excel 文件

从零创建工作簿,编写表格数据,保存为 .xlsx 文件。

(2)数据读取与分析

读取指定单元格、行列数据或整张表的内容。

(3)格式化与样式控制

支持字体、颜色、边框、对齐方式、合并单元格、行高列宽等格式调整。

(4)公式与图表支持

可在单元格中写入公式,插入折线图、柱状图等。

(5)批量报表与数据导出

常用于报表生成、数据统计或自动导出 Excel 文件。

◆ ◆

核心概念

1、工作簿(Workbook)

Excel 文件的整体对象,可包含多个工作表。

2、工作表(Worksheet)

每个工作表是一张表格,通过 wb.active 或 wb[sheet_name] 获取。

3、单元格(Cell)

Excel 的最小数据单元,可通过 ws["A1"] 或 ws.cell(row, column) 访问。

4、数据读写

写入:cell.value = ...

读取:value = cell.value

5、样式与格式

使用 openpyxl.styles 模块设置字体、颜色、对齐方式等。

6、保存与加载

使用 Workbook.save() 保存文件,load_workbook() 打开已有文件。

◆ ◆

应用举例

例 1:创建 Excel 文件并写入数据

go 复制代码
from openpyxl import Workbook
wb = Workbook()ws = wb.active
ws.title = "学生成绩"ws["A1"] = "姓名"ws["B1"] = "成绩"ws.append(["张三", 90])ws.append(["李四", 85])
wb.save("students.xlsx")

生成文件 students.xlsx,包含表头与两行数据。

例 2:读取已有 Excel 文件

python 复制代码
from openpyxl import load_workbook
wb = load_workbook("students.xlsx")ws = wb["学生成绩"]
for row in ws.iter_rows(values_only=True):    print(row)

输出:

javascript 复制代码
('姓名', '成绩')('张三', 90)('李四', 85)

例 3:设置单元格样式

python 复制代码
from openpyxl import Workbookfrom openpyxl.styles import Font, Alignment
wb = Workbook()ws = wb.active
ws["A1"] = "标题"ws["A1"].font = Font(size=16, bold=True, color="0070C0")ws["A1"].alignment = Alignment(horizontal="center")
wb.save("styled.xlsx")

单元格 A1 将以蓝色加粗大号字体居中显示。

例 4:合并单元格与设置列宽

apache 复制代码
from openpyxl import Workbook
wb = Workbook()ws = wb.active
ws.merge_cells("A1:C1")ws["A1"] = "销售报表"ws.column_dimensions["A"].width = 20ws.column_dimensions["B"].width = 15ws.column_dimensions["C"].width = 15
wb.save("merged.xlsx")

例 5:写入公式与插入图表

makefile 复制代码
from openpyxl import Workbookfrom openpyxl.chart import BarChart, Reference
wb = Workbook()ws = wb.active
ws.append(["月份", "销售额"])data = [("1月", 3000), ("2月", 4200), ("3月", 5000)]for row in data:    ws.append(row)
# 写入公式ws["C5"] = "=SUM(B2:B4)"
# 创建柱状图chart = BarChart()chart.title = "销售趋势"values = Reference(ws, min_col=2, min_row=1, max_row=4)cats = Reference(ws, min_col=1, min_row=2, max_row=4)chart.add_data(values, titles_from_data=True)chart.set_categories(cats)ws.add_chart(chart, "E2")
wb.save("chart.xlsx")

◆ ◆

常用函数与类速览

Workbook()

创建一个新的工作簿对象。

返回:Workbook 实例对象。

Workbook.active

获取当前活动工作表。

返回:Worksheet 对象。

Workbook.create_sheet(title=None)

创建新的工作表。

参数:

title:工作表名称(可选)。

返回:新创建的 Worksheet 对象。

Workbook.save(filename)

将工作簿保存为指定文件。

参数:

filename:输出文件名(含路径)。

返回:无。

load_workbook(filename)

加载一个现有的 Excel 文件。

参数:

filename:Excel 文件路径。

返回:Workbook 对象。

Worksheet.append(iterable)

在工作表末尾追加一行数据。

参数:

iterable:可迭代对象(如列表、元组)。

返回:无。

Worksheet.iter_rows(values_only=False)

按行迭代工作表内容。

参数:

values_only:若为 True,仅返回单元格值。

返回:生成器对象。

Worksheet.merge_cells(range_string)

合并指定区域的单元格。

参数:

range_string:合并范围(如 "A1:C1")。

返回:无。

Worksheet.column_dimensions

设置列宽或访问列属性。

返回:DimensionHolder 对象。

Cell.value

访问或设置单元格的值。

参数:无(属性访问)。

返回:单元格中的内容。

openpyxl.chart.BarChart()

创建柱状图对象,可用于插入 Excel 图表。

返回:BarChart 实例对象。

◆ ◆

补充说明

1、OpenPyXL 仅支持 Excel 2007 及以上版本的 .xlsx 格式,不支持旧版 .xls。

2、它支持 Pandas DataFrame 导出(通过 df.to_excel() 内部调用 openpyxl)。

3、当需要操作大型文件时,可使用 read_only=True 模式优化性能。

4、若需写入超大数据量,可结合 write_only=True 模式逐行写入,节省内存。

📘 小结

OpenPyXL 是 Python 操作 Excel 的事实标准库,集数据处理、格式控制与可视化于一体。

无论是办公自动化、报表生成还是科学计算,OpenPyXL 都能提供稳定而强大的支持。

"点赞有美意,赞赏是鼓励"

相关推荐
开开心心就好2 小时前
无需函数:Excel数据筛选工具推荐
xml·网络·pdf·华为云·word·excel·音视频
点云SLAM2 小时前
C++ 中dynamic_cast使用详解和实战示例
开发语言·c++·类型转换·dynamic_cast·c++多态·c++继承
oh,huoyuyan2 小时前
【火语言RPA实战案例】根据ISBN 编码批量查询孔夫子书籍信息,自动导出本地 Excel(附完整脚本)
excel·rpa
侯得山2 小时前
计算中央子午线(Excel版)
excel
CodeByV2 小时前
【C++】C++11:右值引用和移动语义
开发语言·c++
lovely_nn2 小时前
EXCEL 数字编码化排序(如部门层级排序)
excel
一水鉴天2 小时前
整体设计 全面梳理复盘 之37 元级自动化引擎三体项目(Designer/Master/Transformer)划分确定 + 自用规划工具(增强版)
开发语言·算法·transformer·公共逻辑
自学互联网3 小时前
python爬虫入门案例day05:Pexels
开发语言·爬虫·python
头发还没掉光光3 小时前
C/C++类型转换
c语言·开发语言·c++