跳转至

对齐

本页面介绍如何使用对齐样式。

水平对齐

基本对齐

from symphra_excel import Workbook
from symphra_excel.styles import CellStyle

wb = Workbook()
sheet = wb.create_worksheet("对齐示例")

left_style = CellStyle()
left_style.set_alignment(horizontal="left")
sheet.set_cell_value("A1", "左对齐")
sheet.apply_style("A1", left_style)

center_style = CellStyle()
center_style.set_alignment(horizontal="center")
sheet.set_cell_value("A2", "居中对齐")
sheet.apply_style("A2", center_style)

right_style = CellStyle()
right_style.set_alignment(horizontal="right")
sheet.set_cell_value("A3", "右对齐")
sheet.apply_style("A3", right_style)

垂直对齐

垂直位置

top_style = CellStyle()
top_style.set_alignment(vertical="top")
sheet.set_cell_value("B1", "顶部对齐")
sheet.apply_style("B1", top_style)
sheet.set_row_height(1, 40)

middle_style = CellStyle()
middle_style.set_alignment(vertical="center")
sheet.set_cell_value("B2", "居中对齐")
sheet.apply_style("B2", middle_style)
sheet.set_row_height(2, 40)

bottom_style = CellStyle()
bottom_style.set_alignment(vertical="bottom")
sheet.set_cell_value("B3", "底部对齐")
sheet.apply_style("B3", bottom_style)
sheet.set_row_height(3, 40)

文本换行

自动换行

wrap_style = CellStyle()
wrap_style.set_alignment(wrap_text=True)
sheet.set_cell_value("C1", "这是一段很长的文本内容,需要自动换行显示")
sheet.apply_style("C1", wrap_style)
sheet.set_column_width("C", 15)

缩小字体以适应

shrink_style = CellStyle()
shrink_style.set_alignment(shrink_to_fit=True)
sheet.set_cell_value("C2", "缩小字体以适应单元格宽度")
sheet.apply_style("C2", shrink_style)
sheet.set_column_width("C", 10)

文本旋转

旋转角度

rotate_style = CellStyle()
rotate_style.set_alignment(text_rotation=45)
sheet.set_cell_value("D1", "旋转45度")
sheet.apply_style("D1", rotate_style)

rotate_style2 = CellStyle()
rotate_style2.set_alignment(text_rotation=90)
sheet.set_cell_value("D2", "竖排")
sheet.apply_style("D2", rotate_style2)

缩进

设置缩进

indent_style = CellStyle()
indent_style.set_alignment(indent=2)
sheet.set_cell_value("E1", "缩进文本")
sheet.apply_style("E1", indent_style)

完整示例

示例1: 表头样式

from symphra_excel import Workbook
from symphra_excel.styles import CellStyle

with Workbook() as wb:
    sheet = wb.create_worksheet("表头")

    header_style = CellStyle()
    header_style.set_alignment(horizontal="center", vertical="center")
    header_style.set_font(bold=True)
    header_style.set_background_color("#4472C4")
    header_style.set_font_color("#FFFFFF")

    headers = ["编号", "姓名", "部门", "工资"]
    for col_idx, header in enumerate(headers, start=1):
        cell = f"{chr(64+col_idx)}1"
        sheet.set_cell_value(cell, header)
        sheet.apply_style(cell, header_style)
        sheet.set_row_height(1, 25)

    wb.save("header_alignment.xlsx")

示例2: 混合对齐

from symphra_excel import Workbook
from symphra_excel.styles import CellStyle

with Workbook() as wb:
    sheet = wb.create_worksheet("混合对齐")

    data = [
        ["产品", "左对齐"],
        [12345, "右对齐"],
        ["描述", "居中对齐"],
    ]

    alignments = ["left", "right", "center"]

    for row_idx, (value, desc) in enumerate(data, start=1):
        align_style = CellStyle()
        align_style.set_alignment(horizontal=alignments[row_idx-1])

        sheet.set_cell_value(f"A{row_idx}", value)
        sheet.apply_style(f"A{row_idx}", align_style)

        sheet.set_cell_value(f"B{row_idx}", desc)

    wb.save("mixed_alignment.xlsx")

对齐选项

水平对齐选项

horizontal_options = [
    "left",
    "center",
    "right",
    "justify",
    "distributed",
]

垂直对齐选项

vertical_options = [
    "top",
    "center",
    "bottom",
    "justify",
    "distributed",
]

最佳实践

✅ 推荐做法

header_style = CellStyle()
header_style.set_alignment(horizontal="center", vertical="center")

number_style = CellStyle()
number_style.set_alignment(horizontal="right")

text_style = CellStyle()
text_style.set_alignment(horizontal="left")

❌ 避免的做法

style = CellStyle()
style.set_alignment(horizontal="invalid")

style2 = CellStyle()
style2.set_alignment(text_rotation=999)

下一步