预定义样式¶
本页面介绍如何使用库提供的预定义样式。
导入预定义样式¶
标题样式¶
主标题¶
wb = Workbook()
sheet = wb.create_worksheet("示例")
sheet.set_cell_value("A1", "主标题")
sheet.apply_style("A1", PredefinedStyles.title_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())
数据样式¶
文本数据¶
数字数据¶
货币数据¶
日期数据¶
from datetime import date
sheet.set_cell_value("D4", date(2024, 1, 1))
sheet.apply_style("D4", PredefinedStyles.date_style())
百分比数据¶
状态样式¶
成功状态¶
警告状态¶
错误状态¶
信息状态¶
特殊样式¶
总计样式¶
高亮样式¶
超链接样式¶
sheet.set_cell_value("A11", "https://example.com")
sheet.apply_style("A11", PredefinedStyles.hyperlink_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()