总结:

字体,大小,内容在表格中的位置,字体颜色,表格填充色,都可以直接在代码中实现

1、直接看代码

from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side

# 1. 创建工作簿对象(默认带一个工作表 Sheet)
wb = Workbook()

# 2. 获取活动工作表(默认第一个)
ws = wb.active
ws.title = "用户信息"  # 重命名工作表

# 3. 写入数据(三种方式)
# 方式1:按单元格坐标写入(A1、B1 等)
ws["A1"] = "姓名"
ws["B1"] = "年龄"
ws["C1"] = "性别"
ws["D1"] = "语文成绩"
ws["E1"] = "数学成绩"
ws["F1"] = "英语成绩"

# 方式2:按行写入(append 方法,批量添加行)
ws.append(["小明", 18, "男", 99, 98, 100])
ws.append(["小红", 25, "女", 67, 32, 44])
ws.append(["小刚", 30, "男", 55, 77, 43])

# 方式3:按行列索引写入(行/列从 1 开始)
ws.cell(row=4, column=2, value=22)  # 第4行第2列(B4)写入 22

# 4. 设置样式
# 4.1 表头样式:加粗、居中、背景色、字体颜色
header_font = Font(name="微软雅黑", size=12, bold=True, color="FFFFFF")  # 白色字体
header_fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid")  # 蓝色背景
header_alignment = Alignment(horizontal="center", vertical="center")  # 居中对齐

# 修复:遍历表头行(A1:F1)的所有单元格,直接应用样式
# 遍历表头行(A1:F1),先拿到行对象,再遍历行内每个单元格
for row in ws["A1:F1"]:  # row 是 (A1,B1,C1,D1,E1,F1) 这个元组
    for cell in row:     # 遍历每个单元格
        cell.font = header_font
        cell.fill = header_fill
        cell.alignment = header_alignment

# 4.2 数据行样式:居中、边框
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")
)

# 给数据行(A2:F4)应用样式
for row in ws["A2:F4"]:
    for cell in row:
        cell.alignment = data_alignment
        cell.border = border

# 4.3 调整列宽(补充D-F列)
ws.column_dimensions["A"].width = 10  # 姓名
ws.column_dimensions["B"].width = 8   # 年龄
ws.column_dimensions["C"].width = 8   # 性别
ws.column_dimensions["D"].width = 10  # 语文成绩
ws.column_dimensions["E"].width = 10  # 数学成绩
ws.column_dimensions["F"].width = 10  # 英语成绩

# 5. 保存文件(修复路径转义问题)
wb.save(r"D:\基础写入示例2.xlsx")  # 原始字符串避免转义
wb.close()
print("文件创建并写入完成!")

我们先看第一行代码:

from openpyxl.styles import Font, Alignment, PatternFill, Border, Side
1. Font 类:控制「字体样式」

对应 Excel 里的「字体」组(字体名称、大小、加粗、颜色、斜体、下划线等)。

  • 核心作用:设置单元格内文字的外观,比如 “加粗、红色、14 号微软雅黑”。
  • 常用参数

    表格

    参数名 说明
    name 字体名称(如 "微软雅黑")
    size 字体大小(pt 磅)
    bold 是否加粗(True/False)
    color 字体颜色(十六进制 RGB)
    italic

    是否斜体

这里的name,就是字体库中的名称,大家如果不知道有哪些,可以去表格中直接右边单击,看一下

size则比较简单了,就是数字大小

先来看看最简单的bold,就是是否加粗,bold=1就是加粗

而颜色则相对复杂一点,看起来好像是比较复杂,但是只要认真观察以下就会发现,从高位

往低位,依次对应的是RGB(R代表red,是红色,对应最高两位,G=green,是绿色,是中间两位,而B=blue是代表最后两位)。

又从下表中可以看出,白色就是FFFFFF,就是全白,也就是红绿蓝都百分百使能,大家甚至是可以自由搭配,顺便也可以学一下,RGB三种不同颜色搭配比例下,会得到什么颜色

颜色 十六进制代码
黑色 "000000"
白色 "FFFFFF"
红色 "FF0000"
蓝色 "0000FF"
绿色 "00FF00"
灰色 "808080"

我个人觉得最重要的就是加粗和字体颜色这两项,而italic则用的其实也不是很多

  • 示例

    python

    运行

    from openpyxl.styles import Font
    bold_red = Font(bold=True, color="FF0000", size=12)
    ws["A1"].font = bold_red  # A1单元格文字加粗红色
    
2. Alignment 类:控制「单元格对齐方式」Alignment

对应 Excel 里的「对齐方式」组(水平居中、垂直居中、自动换行、缩进等)。

  • 核心作用:控制单元格内容在单元格内的位置和换行行为,比如 “水平居中、垂直居中、自动换行”。
  • 常用参数

    表格

    参数名 说明
    horizontal 水平对齐(left/center/right)
    vertical 垂直对齐(top/center/bottom)
    wrap_text 是否自动换行(True/False)
    indent 缩进量
  • 示例

    python

    from openpyxl.styles import Alignment
    center_wrap = Alignment(horizontal="center", vertical="center", wrap_text=True)
    ws["A1"].alignment = center_wrap  # A1单元格内容居中+自动换行
    

alignment函数的形参和他们的作用

参数名 类型 可选值 官方默认值 Excel 表现效果
horizontal str left / center / right / justify / centerContinuous / distributed left 水平左对齐
vertical str top / center / bottom / justify / distributed center 垂直居中对齐
wrap_text bool True / False False 不自动换行(文本溢出单元格)
shrink_to_fit bool True / False False 不缩小字体
indent int 0~255 0 无缩进
relative_indent int - 0 无相对缩进
justify_last_line bool True / False False 最后一行不两端对齐
reading_order int 0 / 1 / 2 0 跟随上下文阅读顺序

其实常用的也就3种,horizontal,vertical,wrap_text,分别用来设置单元格中数据的水平垂直位置,和是否自动换行

3. PatternFill 类:控制「单元格背景填充色」,这个也需要重点学习一下

对应 Excel 里的「填充颜色」功能(纯色填充、图案填充)。从英文名称也可以看出来,pattern是模式的意思,Fail是填充的意思。这里就是模式填充的意思

  • 核心作用:给单元格设置背景色,比如 “正常状态下表头浅蓝背景、异常状态浅红背景”。
  • 常用参数

    表格

    参数名 说明
    start_color 填充颜色(十六进制 RGB)
    fill_type 填充类型(solid 纯色最常用)
  • 示例

    python

    from openpyxl.styles import PatternFill
    light_red = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid")
    ws["A1"].fill = light_red  # A1单元格背景浅红
    
参数名 类型 可选值 / 说明 默认值 你的代码示例
fill_type str 填充类型,核心参数:- none:无填充- solid:纯色填充-(其实记住这两个最常用的即可,其他一般我们也用不上) darkGray/lightGray:深浅灰色网格- darkHorizontal/lightHorizontal:水平条纹- darkVertical/lightVertical:垂直条纹- darkDown/lightDown:向下对角线条纹- darkUp/lightUp:向上对角线条纹- darkGrid/lightGrid:网格图案- darkTrellis/lightTrellis:菱形网格 none "solid"(纯色填充)
start_color str / Color 前景色(图案 / 纯色的主色),格式为6 位或 8 位十六进制 RGB(不带#)- 6 位:RRGGBB(如 FFCCCC = 浅红)- 8 位:AARRGGBB(前两位为透明度,FF= 不透明,00= 全透明) FFFFFF(白色) "FFCCCC"(浅红色)
end_color str / Color 背景色(图案的底色,纯色填充时与start_color一致) FFFFFF(白色) "FFCCCC"(与前景色一致)

这里需要注意的是start_color是代表是表格框架(也就是线)的颜色,而end_color就是背景颜色

4. Border + Side 类:控制「单元格边框」

两个类要配合使用(注意,这一点非常重要,)Side 定义边框的线条样式(side也就是定义边框的颜色),Border 把四个方向的边框(左 / 右 / 上 / 下)组合起来。

  • 核心作用:给单元格添加边框,比如 “给表格加细边框、表头加粗边框”。
  • Side 常用参数

    存在两个核心参数

    参数名 说明
    style 线条样式(thin 细边框、medium 中等、dashed 虚线等)
    color 边框颜色(十六进制 RGB)
  • Border 常用参数

    表格,其实也很好记,就是上下左右等几个边框

  • 参数名
    说明
    left 左边框 Side 对象
    right 右边框 Side 对象
    top 上边框 Side 对象
    bottom 下边框 Side 对象

真实代码如下,即先通过Border函数,先选定要设置那个边框,然后再加上括号,选择side设置style和color

border = Border(
    left=Side(style="thin"), right=Side(style="thin"),
    top=Side(style="thin"), bottom=Side(style="thin")
)

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐