乐于分享
好东西不私藏

Python开发从零开始-50.22-Office 文档处理

Python开发从零开始-50.22-Office 文档处理

接上文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 文件‌的相关知识。