跳转至

预定义样式

本页面介绍如何使用库提供的预定义样式。

导入预定义样式

from symphra_excel import Workbook
from symphra_excel.styles import PredefinedStyles

标题样式

主标题

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

sheet.set_cell_value("A1", "主标题")
sheet.apply_style("A1", PredefinedStyles.title_style())

副标题

sheet.set_cell_value("A2", "副标题")
sheet.apply_style("A2", PredefinedStyles.subtitle_style())

表头

headers = ["姓名", "年龄", "城市"]
for col_idx, header in enumerate(headers, start=1):
    cell = f"{chr(64+col_idx)}3"
    sheet.set_cell_value(cell, header)
    sheet.apply_style(cell, PredefinedStyles.header_style())

数据样式

文本数据

sheet.set_cell_value("A4", "张三")
sheet.apply_style("A4", PredefinedStyles.data_style())

数字数据

sheet.set_cell_value("B4", 12345.67)
sheet.apply_style("B4", PredefinedStyles.number_style())

货币数据

sheet.set_cell_value("C4", 12345.67)
sheet.apply_style("C4", PredefinedStyles.currency_style())

日期数据

from datetime import date

sheet.set_cell_value("D4", date(2024, 1, 1))
sheet.apply_style("D4", PredefinedStyles.date_style())

百分比数据

sheet.set_cell_value("E4", 0.85)
sheet.apply_style("E4", PredefinedStyles.percentage_style())

状态样式

成功状态

sheet.set_cell_value("A5", "成功")
sheet.apply_style("A5", PredefinedStyles.success_style())

警告状态

sheet.set_cell_value("A6", "警告")
sheet.apply_style("A6", PredefinedStyles.warning_style())

错误状态

sheet.set_cell_value("A7", "错误")
sheet.apply_style("A7", PredefinedStyles.error_style())

信息状态

sheet.set_cell_value("A8", "信息")
sheet.apply_style("A8", PredefinedStyles.info_style())

特殊样式

总计样式

sheet.set_cell_value("A9", "总计")
sheet.apply_style("A9", PredefinedStyles.total_style())

高亮样式

sheet.set_cell_value("A10", "重要")
sheet.apply_style("A10", PredefinedStyles.highlight_style())

超链接样式

sheet.set_cell_value("A11", "https://example.com")
sheet.apply_style("A11", PredefinedStyles.hyperlink_style())

注释样式

sheet.set_cell_value("A12", "这是一条注释")
sheet.apply_style("A12", PredefinedStyles.note_style())

边框样式

标准边框

sheet.set_cell_value("A13", "边框")
sheet.apply_style("A13", PredefinedStyles.border_style())

网格样式

sheet.set_cell_value("A14", "网格")
sheet.apply_style("A14", PredefinedStyles.grid_style())

完整示例

示例1: 数据报表

from symphra_excel import Workbook
from symphra_excel.styles import PredefinedStyles

with Workbook() as wb:
    sheet = wb.create_worksheet("销售报表")

    sheet.set_cell_value("A1", "2024年第一季度销售报表")
    sheet.apply_style("A1", PredefinedStyles.title_style())
    sheet.merge_cells("A1:D1")

    headers = ["产品", "数量", "单价", "总价"]
    for col_idx, header in enumerate(headers, start=1):
        cell = f"{chr(64+col_idx)}2"
        sheet.set_cell_value(cell, header)
        sheet.apply_style(cell, PredefinedStyles.header_style())

    data = [
        ["产品A", 100, 12.50, 1250.00],
        ["产品B", 200, 8.30, 1660.00],
        ["产品C", 150, 15.00, 2250.00],
    ]

    for row_idx, row in enumerate(data, start=3):
        sheet.set_cell_value(f"A{row_idx}", row[0])
        sheet.apply_style(f"A{row_idx}", PredefinedStyles.data_style())

        sheet.set_cell_value(f"B{row_idx}", row[1])
        sheet.apply_style(f"B{row_idx}", PredefinedStyles.number_style())

        sheet.set_cell_value(f"C{row_idx}", row[2])
        sheet.apply_style(f"C{row_idx}", PredefinedStyles.currency_style())

        sheet.set_cell_value(f"D{row_idx}", row[3])
        sheet.apply_style(f"D{row_idx}", PredefinedStyles.currency_style())

    total_row = len(data) + 3
    sheet.set_cell_value(f"C{total_row}", "总计")
    sheet.apply_style(f"C{total_row}", PredefinedStyles.total_style())
    sheet.set_cell_value(f"D{total_row}", f"=SUM(D3:D{total_row-1})")
    sheet.apply_style(f"D{total_row}", PredefinedStyles.total_style())

    wb.save("sales_report.xlsx")

示例2: 状态仪表板

from symphra_excel import Workbook
from symphra_excel.styles import PredefinedStyles

with Workbook() as wb:
    sheet = wb.create_worksheet("系统状态")

    sheet.set_cell_value("A1", "系统监控面板")
    sheet.apply_style("A1", PredefinedStyles.title_style())

    statuses = [
        ("数据库", "运行正常", "success"),
        ("API服务", "响应缓慢", "warning"),
        ("缓存系统", "连接失败", "error"),
        ("消息队列", "运行正常", "success"),
    ]

    for idx, (service, status, level) in enumerate(statuses, start=2):
        sheet.set_cell_value(f"A{idx}", service)
        sheet.apply_style(f"A{idx}", PredefinedStyles.data_style())

        sheet.set_cell_value(f"B{idx}", status)
        if level == "success":
            sheet.apply_style(f"B{idx}", PredefinedStyles.success_style())
        elif level == "warning":
            sheet.apply_style(f"B{idx}", PredefinedStyles.warning_style())
        elif level == "error":
            sheet.apply_style(f"B{idx}", PredefinedStyles.error_style())

    wb.save("dashboard.xlsx")

可用样式列表

所有预定义样式

  • title_style() - 主标题
  • subtitle_style() - 副标题
  • header_style() - 表头
  • data_style() - 文本数据
  • number_style() - 数字数据
  • currency_style() - 货币数据
  • date_style() - 日期数据
  • percentage_style() - 百分比数据
  • success_style() - 成功状态
  • warning_style() - 警告状态
  • error_style() - 错误状态
  • info_style() - 信息状态
  • total_style() - 总计样式
  • highlight_style() - 高亮样式
  • hyperlink_style() - 超链接样式
  • note_style() - 注释样式
  • border_style() - 标准边框
  • grid_style() - 网格样式
  • alternating_row_style() - 交替行样式

最佳实践

✅ 推荐做法

header_style = PredefinedStyles.header_style()
for col in ["A", "B", "C"]:
    sheet.apply_style(f"{col}1", header_style)

data_style = PredefinedStyles.data_style()
number_style = PredefinedStyles.number_style()

❌ 避免的做法

for i in range(10000):
    sheet.apply_style(f"A{i}", PredefinedStyles.header_style())

下一步