接上文,本文小编与大家分享 Python 处理 Office 文档的相关知识。
④ 设置单元格对齐样式
Alignment 对象用于设置单元格对齐样式。其构造函数原型为:
Alignment(
horizontal=None, vertical=None,
textRotation=0, wrapText=None,
shrinkToFit=None, indent=0,
relativeIndent=0, justifyLastLine=None,
readingOrder=0, text_rotation=None,
wrap_text=None, shrink_to_fit=None,
mergeCell=None)
参数解释(部分):
horizontal:字符串,设置水平对齐方式,支持左对齐、居中、右对齐等多种模式。可选值包括:
"general":Excel 默认常规对齐方式,数字右对齐、文本左对齐;
"left":文本左对齐,搭配 indent 参数可实现文本层级缩进;
"center":文本水平居中,是报表表头最常用的配置;
"right":文本右对齐,适合金额、编号类字段;
"justify":两端对齐,长文本排版时自动补全字符间距;
"centerContinuous":跨列连续居中,适配合并单元格场景。
vertical:字符串,设置垂直对齐方式,支持顶部对齐、居中、底部对齐。可选值包括:
top:文本靠单元格顶部对齐;
center:文本垂直居中,多行内容也会整体居中展示;
bottom:文本靠单元格底部对齐,是 Excel 默认的垂直对齐方式;
justify:垂直方向两端对齐,自动拉伸行内文本间距。
text_rotation:整型,设置文字旋转角度,取值范围 0~180,实现斜向文字效果;
wrap_text:布尔型,True 表示对长文本进行自动换行,适配单元格宽度;
shrink_to_fit:布尔型,True 表示自动缩小文字字号,让内容完整适配单元格尺寸;
indent:整型,设置文本左侧的缩进字符数,单位为标准字符宽度。使用注意事项:
仅在 horizontal 设置为 left 或 right 时生效,其他对齐模式下缩进配置会被自动忽略;
取值为非负整数,每增加 1 对应增加 1 个标准字符的缩进距离,最大支持缩进 15 个字符;
适合制作带层级的目录、分类说明类报表,无需手动输入空格实现缩进效果。
完整的设置单元格对齐样式的代码示例如下:
from openpyxl import Workbookfrom openpyxl.styles import Font, Color, Alignmentwb = Workbook()ws = wb.activecell = ws["B3"]# 为便于演示,设置字体cell.font = Font( name = '仿宋', size = 16, color = '0000FF', bold = True)cell.value = "测试文本"# 创建一个 Alignment 对象,水平垂直居中,文字旋转 45°,自动换行,无缩进和不自动缩小字号适应单元格align = Alignment( horizontal='center', vertical='center', text_rotation=45, wrap_text=True, shrink_to_fit=False, indent=0)# 应用样式到单元格cell.alignment = alignwb.save("excel_style4.xlsx")
from openpyxl import Workbook
from openpyxl.styles import Font, Color, Alignment
wb = Workbook()
ws = wb.active
cell = ws["B3"]
# 为便于演示,设置字体
cell.font = Font(
name = '仿宋',
size = 16,
color = '0000FF',
bold = True)
cell.value = "测试文本"
# 创建一个 Alignment 对象,水平垂直居中,文字旋转 45°,自动换行,无缩进和不自动缩小字号适应单元格
align = Alignment(
horizontal='center', vertical='center',
text_rotation=45, wrap_text=True,
shrink_to_fit=False, indent=0)
# 应用样式到单元格
cell.alignment = align
wb.save("excel_style4.xlsx")
代码执行后生成 excel_style4.xlsx 文档,文档内容如下图所示:
Alignment 对象使用注意事项:
indent 参数仅在 horizontal 设置为 left 或 right 时生效,其他对齐模式下配置的缩进值会被自动忽略,不会产生任何排版变化;
text_rotation 取值范围严格限制在 0~180 之间,传入超出范围的数值会直接抛出参数异常,且旋转角度超过 90° 后垂直对齐效果会自动适配调整;
wrap_text 和 shrink_to_fit 两个参数不能同时设置为 True,因为 Excel 会优先执行自动缩小字号逻辑,自动换行配置会被覆盖失效。
受文章篇幅所限,下文将继续介绍 Python 处理 Office 文件的相关知识。