接上文Python开发从零开始-50.21-Office 文档处理,本文小编与大家分享 Python 处理 Office 文档的相关知识。
(2)使用命名样式对象设置单元格样式
openpyxl.styles.named_styles.NamedStyle 是命名样式对象,它允许用户自定义样式,并将其应用到多个单元格中,这比直接在每个单元格上设置样式要高效得多,尤其是在处理大量单元格时。区别于普通临时原生样式,它可以被注册到工作簿中,生成的 Excel 文件会将该样式保存到内置样式列表里,支持在 Excel 界面中直接选中复用。
使用NamedStyle 对象的基本步骤如下:
创建 NamedStyle 对象,并设置样式属性;
在工作簿中注册 NamedStyle 对象;
将 NamedStyle 对象应用于单元格样式。
1)创建 NamedStyle 对象
NamedStyle 对象的构造函数原型如下:
NamedStyle( name='Normal', font=None, fill=None, border=None, alignment=None, number_format=None, protection=None, builtinId=None, hidden=False, xfId=None) |
参数解释(部分):
name:字符串,命名样式的唯一标识,注册到工作簿后会显示在 Excel 样式面板中;
font:Font对象,定义该样式对应的字体格式;
fill:PatternFill对象,定义单元格背景填充样式;
border:Border对象,定义单元格边框样式;
alignment:Alignment对象,定义单元格文本对齐规则;
number_format:字符串,定义单元格数字格式,适配日期、金额、百分比等特殊场景;
protection:Protection对象,定义单元格保护规则,支持锁定、隐藏配置。
注意:name 参数不能和 Excel 内置默认样式重名,否则会覆盖系统自带的常规样式引发显示异常;所有样式参数(font、border 等)如果不传参,会自动继承 Excel 默认的常规样式配置。
创建 NamedStyle 对象的代码片段示例如下:
from openpyxl.styles import NamedStyle, Font# 创建自定义命名样式对象myStyle = NamedStyle(name="myStyle")# 对自定义命名样式对象的样式属性进行赋值myStyle.font = Font(bold=True, size=20, color='FF0000')
2)在工作簿中注册 NamedStyle 对象
可以通过工作簿对象的 add_named_style() 方法将 NamedStyle 对象注册到工作簿中。代码片段示例如下:
# 将自定义命名样式对象注册到工作簿中wb.add_named_style(myStyle)
3)将 NamedStyle 对象应用于单元格样式
将 NamedStyle 对象应用于单元格样式可以通过以下方法:
将 NamedStyle 对象赋值给单元格对象的 style 属性;
将 NamedStyle 对象的名称赋值给单元格对象的 style 属性;
代码片段示例如下:
# 将 NamedStyle 对象的名称赋值给单元格对象的 style 属性ws['B2'].style= 'myStyle'# 将 NamedStyle 对象的赋值给单元格对象的 style 属性ws['D4'].style= myStyle
openpyxl 库 提供了一些内置的命名样式,例如:
"Good"、"Bad"、"Neutral"、"Title"、"Heading 1"等等,可以直接使用这些内置样式。代码片段示例如下:
# 将内置 NamedStyle 对象的名称赋值给单元格对象的 style 属性ws['A6'].style= 'Good'
4)完整的代码示例
from openpyxl import Workbookfrom openpyxl.styles import NamedStyle, Fontwb = Workbook()ws = wb.active# 创建自定义命名样式对象myStyle = NamedStyle(name="myStyle")# 对自定义命名样式对象的样式属性进行赋值myStyle.font = Font(bold=True, size=20, color='FF0000')# 将自定义命名样式对象注册到工作簿中wb.add_named_style(myStyle)ws['B2'].value = 'B2 测试文本'ws['D4'].value = 'D4 测试文本'ws['A6'].value = 'A6 测试文本'# 将 NamedStyle 对象的名称赋值给单元格对象的 style 属性ws['B2'].style= 'myStyle'# 将 NamedStyle 对象的赋值给单元格对象的 style 属性ws['D4'].style= myStyle# 将内置 NamedStyle 对象的名称赋值给单元格对象的 style 属性ws['A6'].style= 'Good'wb.save("excel_style5.xlsx")
代码执行后,会生成 excel_style5.xlsx 文档,文档内容如下图所示:

受文章篇幅所限,下文将继续介绍 Python 处理 Office 文件的相关知识。
夜雨聆风