Python-对表格修饰
总结:
字体,大小,内容在表格中的位置,字体颜色,表格填充色,都可以直接在代码中实现
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")
)
更多推荐



所有评论(0)