1.5 格式化Excel - 让表格好看一点
- 2026-11-05 20:30:29
1.5 格式化Excel - 让表格好看一点










🎨 表格也要看脸
上一节我们学会了写入数据,但做出来的表格丑得连自己都看不下去...
原始表格:

格式化后:

这节课,就教你把表格变得漂漂亮亮的!
🎯 单元格格式化基础
1. 设置字体
from openpyxl.styles import Font# 创建格式bold_font = Font(name='微软雅黑', size=12, bold=True, color='FF0000')normal_font = Font(name='微软雅黑', size=11)# 应用到单元格sheet['A1'].font = bold_fontsheet['A2'].font = normal_font
2. 设置对齐

3. 设置填充颜色

4. 设置边框

💅 实战:美化成绩表
import openpyxlfrom openpyxl.styles import Font, Alignment, PatternFill, Border, Sidedef style_cell(cell, font=None, alignment=None, fill=None, border=None):"""设置单元格样式"""if font:cell.font = fontif alignment:cell.alignment = alignmentif fill:cell.fill = fillif border:cell.border = border# 创建工作簿wb = openpyxl.Workbook()sheet = wb.active# 定义样式header_font = Font(name='微软雅黑', size=14, bold=True, color='FFFFFF')header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')header_alignment = Alignment(horizontal='center', vertical='center')data_font = Font(name='微软雅黑', size=11)data_alignment = Alignment(horizontal='center', vertical='center')border = Border(left=Side(style='thin'),right=Side(style='thin'),top=Side(style='thin'),bottom=Side(style='thin'))# 写入表头headers = ['姓名', '语文', '数学', '英语', '总分']for col, header in enumerate(headers, start=1):cell = sheet.cell(row=1, column=col)cell.value = headerstyle_cell(cell, font=header_font, fill=header_fill,alignment=header_alignment, border=border)# 写入数据students = [('张三', 90, 85, 92),('李四', 78, 92, 88),('王五', 85, 80, 95),('赵六', 92, 88, 90),]for row_idx, (name, chinese, math, english) in enumerate(students, start=2):# 姓名cell = sheet.cell(row=row_idx, column=1)cell.value = namestyle_cell(cell, font=data_font, alignment=data_alignment, border=border)# 成绩for col, score in enumerate([chinese, math, english], start=2):cell = sheet.cell(row=row_idx, column=col)cell.value = scorestyle_cell(cell, font=data_font, alignment=data_alignment, border=border)# 总分公式cell = sheet.cell(row=row_idx, column=5)cell.value = f'=SUM(B{row_idx}:D{row_idx})'style_cell(cell, font=data_font, alignment=data_alignment, border=border)# 设置行高列宽sheet.row_dimensions[1].height = 30for col in ['A', 'B', 'C', 'D', 'E']:sheet.column_dimensions[col].width = 12wb.save('美化后的成绩表.xlsx')print("美化完成!")
🎨 常用格式设置
1. 设置数字格式

2. 自动换行

3. 条件格式

📏 调整行高列宽

🏆 表格样式模板
这里提供几个常用的表格样式模板,直接套用即可:

⚠️ 注意事项
1. 样式要提前定义
# ❌ 错误:每次都创建新样式for cell in sheet['A1:A10']:cell.font = Font(bold=True) # 这样会每次都创建新对象# ✅ 正确:提前定义样式bold_font = Font(bold=True)for cell in sheet['A1:A10']:cell.font = bold_font # 复用同一个对象
2. 颜色格式
# openpyxl使用RGB格式,颜色值以'FF'开头# FF0000 = 红色# 00FF00 = 绿色# 0000FF = 蓝色# FFFFFF = 白色# 000000 = 黑色
3. 样式覆盖
# 设置样式后,新的赋值不会清除样式sheet['A1'].value = '新文字' # 字体、颜色等样式会保留
🏃♂️ 练习题
练习1:美化通讯录创建一个通讯录表格,包含姓名、电话、邮箱地址,并美化格式。
练习2:销售报表创建一个销售报表,包含商品名称、销量、单价、销售额,使用合适的数字格式。
练习3:考勤表创建一个考勤表,使用颜色标注正常、迟到、缺勤等状态。
📝 代码模板
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side# ==================== 定义样式 ====================# 字体header_font = Font(name='微软雅黑', size=12, bold=True, color='FFFFFF')data_font = Font(name='微软雅黑', size=11)# 对齐center_align = Alignment(horizontal='center', vertical='center')# 填充header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')# 边框thin_border = Border(left=Side(style='thin'),right=Side(style='thin'),top=Side(style='thin'),bottom=Side(style='thin'))# ==================== 应用样式 ====================cell.font = header_fontcell.alignment = center_aligncell.fill = header_fillcell.border = thin_border# ==================== 调整尺寸 ====================sheet.row_dimensions[1].height = 25sheet.column_dimensions['A'].width = 15
🎓 小结
| 样式属性 | 说明 |
|---|---|
Font | 字体、大小、粗细、颜色 |
Alignment | 水平/垂直对齐、自动换行 |
PatternFill | 填充颜色 |
Border | 边框样式 |
number_format | 数字格式 |
下节预告:《批量合并多个Excel - 合并真的爽》
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。