乐于分享
好东西不私藏

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

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

接上文Python开发从零开始-50.17-Office 文档处理本文小编与大家分享 Python 处理 Office 文档的相关知识。

9、单元格样式设置

在 openpyxl 库中,单元格的样式可以直接通过单元格对象的属性以及通过样式对象进行设置。

(1)直接设置单元格对象的样式属性

1)单元格对象常用的样式属性

单元格对象常用的样式属性主要包括:

  • fontopenpyxl.styles.proxy.StyleProxy 对象,用于控制单元格内文字的字体样式;

  • fillopenpyxl.styles.proxy.StyleProxy 对象,用于设置单元格的背景填充效果;

  • borderopenpyxl.styles.proxy.StyleProxy 对象,用于自定义单元格的四边边框效果;

  • alignmentopenpyxl.styles.proxy.StyleProxy 对象,控制单元格内文字的对齐方式。

单元格对象常用的样式属性通常都是 StyleProxy 对象‌,样式快捷代理对象‌,封装了单元格的所有样式属性(只读),提供了一种便捷的方式来访问单元格的样式,从而无需直接操作底层样式对象。通过 StyleProxy 对象的链式操作(如 cell.font.name),无需提前导入各种样式对象,可以轻松地查询字体、边框、填充、对齐方式等属性。

2)样式属性(StyleProxy 对象)使用注意事项

① 每个 StyleProxy 对象封装单元格的样式属性都是只读的,不能修改属性值,例如:

# 以下语句程序将报错cell.font.size = "14"

② 每个 StyleProxy 对象只能使用赋值原生样式对象方式,例如:

# 设置字体样式cell.font = Font(name='宋体', size=14, bold=True, italic=True)

③ 每个 StyleProxy 对象都和唯一的单元格绑定,所有修改仅作用于当前单元格,不会影响其他单元格;

④ StyleProxy 对象自动映射了原生样式对象(例如:Font、Fill 等)的属性,无需手动实例化这些对象。

3)原生样式对象概述

所谓原生样式对象是指 openpyxl 定义的独立样式对象,与 StyleProxy 对象不同,它们定义在 openpyxl.styles 模块下,覆盖了单元格所有可配置的样式维度。常用原生样式对象包括:

① openpyxl.styles.fonts.Font 对象控制文字外观、字体名、字号、加粗、斜体、文字颜色、下划线等样式;openpyxl.styles 子模块中提供了别名导出,所以使用该对象前通常使用以下方式导入:

from openpyxl.styles import Font

② openpyxl.styles.fills.PatternFill 对象控制单元格背景填充类型、前景色、背景色等样式;openpyxl.styles 子模块中提供了别名导出,所以使用该对象前通常使用以下方式导入:

from openpyxl.styles import PatternFill

③ openpyxl.styles.borders.Side 对象辅助定义单条边框样式,如线条类型、线条颜色等样式;openpyxl.styles 子模块中提供了别名导出,所以使用该对象前通常使用以下方式导入:

from openpyxl.styles import Side

④ openpyxl.styles.borders.Border 对象:控制单元格边框样式,如边框线条颜色等样式;openpyxl.styles 子模块中提供了别名导出,所以使用该对象前通常使用以下方式导入:

from openpyxl.styles import Border

⑤ openpyxl.styles.alignment.Alignment 对象控制单元格对齐方式,如 水平/垂直对齐、自动换行、文字旋转角度等;openpyxl.styles 子模块中提供了别名导出,所以使用该对象前通常使用以下方式导入:

from openpyxl.styles import Alignment

4)单元格对象常用样式属性设置示例

① 设置单元格字体样式

Font 对象的构造函数原型如下所示:

Font(name=None,

     sz=None, b=None,

     i=None, charset=None,

     u=None, strike=None,

     color=None, scheme=None,

     family=None, size=None,

     bold=None, italic=None,

     strikethrough=None, underline=None,

     vertAlign=None, outline=None,

     shadow=None, condense=None,

     extend=None)

参数解释(部分):

  • name:字符串,字体名;

  • size: 整型,字体大小;

  • color:颜色对象,字体颜色;

  • bold:布尔型,表示字体是否为粗体,True 为粗体;

  • italic:布尔型,表示字体是否为斜体,True 为斜体。

设置单元格字体样式代码示例如下:

from openpyxl import Workbookfrom openpyxl.styles import Fontwb = Workbook()ws = wb.activecell = ws["A1"]cell.value = "测试文本"# 设置字体样式cell.font = Font(    name = '仿宋',    size = 16,    bold = True,    italic = True)wb.save("excel_style1.xlsx")

代码执行后,生成 excel_style1.xlsx 文档,文档内容如下图所示:

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