python的openpyxl库设置表格样式:字体/边框/对齐/颜色等

图片

学习目录

1. 安装和使用openpyxl库设置表格样式

2 设置字体font

3 设置边框

4 设置对齐方式

5 设置单元格数据格式

6 设置行高和列宽 

7 填充单元格颜色

附录-关于颜色说明

本章节主要介绍如何使用openpyxl库设置表格中的一些样式,比如字体,边框,对齐方式,单元格格式,行高和列宽等。

1 安装和使用openpyxl库设置表格样式

执行pip命令安装openpyx库:

pip install openpyxl -i https://mirrors.aliyun.com/pypi/simple/

目前最新版本3.1.5,安装后在styles目录下有多个模块

图片

在styles目录的文件__init__.py中导入了一些常用的类。

  • Color类: 设置颜色
  • Font类: 设置字体
  • Alignment类:设置示对齐方式
  • Border和Side:设置边框样式
  • PatternFill:填充单元格颜色
  • 2 设置字体font

    我们先导入Font类:

    from openpyxl.styles import Font

    Font类初始化函数如下:

    图片

    一些常用参数具体解释如下:

    name

    设置字体名称。比如"Arial","Times New Roman","微软雅黑",‘宋体’,‘仿宋’等

    sz或者size

    字体大小,比如数字11

    i或者italic

    是否设置斜体。

    strike

    是否设置删除线。

    outline

    是否设置轮廓

    shadow

    是否设置阴影

    colour

    字体颜色

    b或者bold

    是否设置加粗

    underline

    是否设置下划线

    family

    设置字体集。

    charset

    设置字符集

    其中字体的颜色需要用到类openpyxl.colors.Color类

    图片

    对应的一些color信息在colors.py文件最上方的元组COLOR_INDEX中有预置的颜色数据

    图片

    黑色BLACK为第1个元素,白色WHITE为第2个元素,红色RED为第3个元素等

    所以颜色对象可设置为:

    from openpyxl.styles import colors
    #颜色设置为红色
    color_ins = colors.Color(index=2)

    关于颜色的说明,参考文章最末尾。

    在单元格上设置字体,完整代码如下:

    from openpyxl.styles import Font,colors
    from openpyxl import Workbook
    wb = Workbook()
    #先创建1个sheet对象
    sheet0 = wb.create_sheet('sheet0',0)
    #单元格设置内容
    cell0 = sheet0.cell(1,1,'hello python')
    #设置字体对象 颜色为红色
    font_ins = Font(name="微软雅黑", sz=18, family=2, b=True, i=True,
    color=colors.Color(index=2), scheme="minor")
    #将字体对象赋予单元格
    cell0.font = font_ins
    #保存文件
    wb.save('1.xlsx') #保存文件

    结果如下:

    图片

    3 设置边框

    跟设置字体一样,我们先导入Border类和Side类:

    from openpyxl.styles import Border,Side

    Border类初始化函数如下:

    图片

    初始化函数的常用参数解释如下:

    left

    设置左边框,为一个Side对象,可以指定边框的样式(如细线、粗线等)和颜色。

    right

    设置右边框,同上

    top

    设置上边框,同上

    bottom

    设置下边框,同上

    diagonal

    设置对角线样式,同上

    diagonalUp

    设置对角线的方向,表示从右上到左下。

    diagonalDown

    设置对角线的方向,表示从左上到右下。

    而Side类同Border类在同一模块文件中:

    图片

    由于Border类的各个边框属性(left、right、top、bottom等)都是Side对象,因此了解Side类的属性也很重要:

  • style:指定边框的样式。可选值如下:
  • "thin":细线;"medium":中等粗细线;"thick":粗线

    "double":双线;"hair":细线;"dotted":点线

    "dashDot":点划线;"dashDotDot":双点划线;"dashed":虚线

    "dashDotDot":双点划线;"mediumDashDot":中等点划线

    "mediumDashed":中等虚线;"mediumDashDotDot":中等双点划线

    "slantDashDot":斜线点划线

  • color:设置边框的颜色。可以使用颜色名称的字符串。
  • 测试代码如下:

    from openpyxl import Workbook
    from openpyxl.styles import Border, Side
    
    # 创建一个新的工作簿和工作表
    wb = Workbook()
    sheet0 = wb.active
    
    # 创建一个Border对象并设置其属性
    border = Border(
    left=Side(style='thick', color='FF0000'), # 左边框:粗线,红色
    right=Side(style='thin', color='FF0000'), # 右边框:细线,红色色
    top=Side(style='double', color='FF0000'), # 顶部边框:双线,红色
    bottom=Side(style='medium', color='FF0000') # 底部边框:粗线,红色
    diagonal=Side(style='medium', color='000000'),# 对角线:粗线,黑色
    diagonalDown=True #对角线,左上到右下
    )
    
    # 将Border对象应用到单元格的边框属性上
    sheet0 ['A1'].border = border
    
    # 也可以为特定区域设置边框
    for row in sheet0 ['A1:C3']:
    for cell in row:
    cell.border = border
    
    # 保存工作簿
    wb.save("2.xlsx")

    结果:

    图片

    4 设置对齐方式

    跟设置字体一样,我们先导入Alignment类

    from openpyxl.styles import Alignment

    Alignment类初始化函数如下:

    图片

    主要属性具体解释如下:

    horizontal

    设置水平对齐方式

    ‘general’(默认): 一般对齐

    ‘left’:左对齐

    ‘center’:居中对齐

    ‘right’:右对齐

    ‘fill’:填充对齐

    ‘justify’:两端对齐

    ‘centerContinuous’:连续居中对齐

    ‘distributed’:分散对齐

    vertical

    设置垂直对齐方式

    ‘top’:顶部对齐

    ‘center’:居中对齐

    ‘bottom’:底部对齐

    ‘justify’:两端对齐

    ‘distributed’:分散对齐

    shrinkToFit

    如果为True,当文本过长时,将缩小字体以适应单元格宽度;默认为False。

    textRotation或者text_rotation

    设置字体旋转方向,数值为0-180之间的数字

    indent

    文本缩进级别,整数值,默认为0。

    wrapText或者wrap_text

    是否设置自动换行

    测试代码:
    from openpyxl import Workbook
    from openpyxl.styles import Alignment
    # 创建一个新的工作簿和工作表
    wb = Workbook()
    ws = wb.active
    # 创建一个对齐对象并设置属性
    alignment = Alignment(horizontal='center', vertical='center', wrap_text=True, indent=1, text_rotation=20)
    # 设置一个单元格对象并应用对齐方式的对象
    ws['A1'] = "Hello Pyhon"
    ws['A1'].alignment = alignment
    # 保存工作簿到文件
    wb.save('3.xlsx')
    结果:

    图片

    5 设置单元格数据格式

    导入数据格式的字典:

    from openpyxl.styles.numbers import BUILTIN_FORMATS

    字典如下:

    图片

    跟excel表中我们定义单元格格式中的自定义格式是一样的

    图片

    测试代码如下:
    from openpyxl import Workbook
    from openpyxl.styles.numbers import BUILTIN_FORMATS
    # 创建一个新的Excel工作簿和工作表
    wb = Workbook()
    ws = wb.active
    # 将一些数据写入单元格
    ws['A1'] = 12345.6789
    # 设置单元格A1的数字格式为带有两位小数的格式
    ws['A1'].number_format = BUILTIN_FORMATS[2]
    #填入日期
    ws['B1'] = datetime(2024,11,23)
    # 设置日期格式
    ws['B1'].number_format = BUILTIN_FORMATS[16]
    # 保存Excel文件
    wb.save('4.xlsx')

    结果如下:

    图片

    6 设置行高和列宽

    使用Worksheet对象的row_dimensions和column_dimensions属性来设置行高和列宽。

    测试代码:

    from openpyxl import Workbook
    # 创建一个新的工作簿和工作表
    wb = Workbook()
    sheet = wb.active
    # 设置第2行的高度为30(单位通常是磅)
    sheet.row_dimensions[2].height = 30
    # 设置第C列的宽度为20 (这是一个字符宽度单位,不是像素或磅)
    sheet.column_dimensions['C'].width = 20
    # 保存工作簿
    wb.save('5.xlsx')

    7 填充单元格颜色

    跟设置字体一样,我们先导入PatternFill类

    from openpyxl.styles import PatternFill

    PatternFill类初始化函数如下:

    图片

  • fill_type: 填充类型
  • None:没有填充样式。

    solid:实心填充。

    darkVertical:暗色的垂直线条填充。

    darkHorizontal:暗色的水平线条填充。

    darkGrid:暗色的网格线条填充。

    darkTrellis:暗色的网格线条填充。

    lightHorizontal:亮色的水平线条填充。

    lightVertical:亮色的垂直线条填充。

    lightGrid:亮色的网格线条填充。

    lightTrellis:亮色的网格线条填充。

    gray0625:灰色的网格线条填充。

    lightGray:亮灰色的网格线条填充。

    darkGray:暗灰色的网格线条填充。

    darkUp:暗色的向上对角线条填充。

    darkDown:暗色的向下对角线条填充。

    darkGrid:暗色的网格线条填充。

    darkTrellis:暗色的 trellis 网格线条填充。

  • start_color: 起始颜色,输入颜色16进制的字符串。
  • end_color: 结束颜色,输入颜色16进制的字符串。
  • fgColor:起始颜色,通常为Color对象
  • bgColor:结束颜色,通常为Color对象
  • 测试代码:

    from openpyxl import Workbook
    from openpyxl.styles import PatternFill,colors
    # 创建一个新的工作簿和工作表
    wb = Workbook()
    ws = wb.active
    # 选择一个单元格并应用填充颜色
    ws['A1'].fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="darkUp")
    # 设置单元格的值
    ws['A1'] = "这是一个黄色背景的单元格"
    # 选择一个单元格并应用填充颜色
    ws['A2'].fill = PatternFill(fgColor=colors.Color(indexed="778899"), bgColor=colors.Color(indexed="778899"),
    fill_type="lightTrellis")
    # 设置单元格的值
    ws['A2'] = "这是一个浅石板灰背景的单元格"
    # 选择一个单元格并应用填充颜色
    ws['A3'].fill = PatternFill(start_color="F0F8FF", end_color="F0F8FF", fill_type="solid")
    # 设置单元格的值
    ws['A3'] = "这是一个爱丽丝蓝背景的单元格"
    # 保存工作簿
    wb.save("example.xlsx")

    结果:

    图片

    附录

    关于颜色说明

    在OpenPyXL库中,用于Excel电子表格处理时,颜色是以RGB (Red, Green, Blue) 或者 16 进制格式来表示的。16进制颜色代码通常由#开头,随后跟着六个字符,前两个代表红色分量(00 到 FF),中间两个代表绿色分量,最后两个代表蓝色分量(同样范围)。例如,#FF0000 表示红色,#00FF00 表示绿色,#0000FF 表示蓝色。

    形像颜色

    对应颜色

    形像颜色

    对应颜色

    纯白

    FFFFFF

    亮紫色

    FF00FF

    纯黑

    000000

    纯紫

    FF00FF

    象牙色

    FFFFF0

    纯红

    FF0000

    浅黄色

    FFFFE0

    老饰带

    FDF5E6

    柠檬黄

    FFFF00

    浅秋麒麟黄

    FAFAD2

    黄色

    FFFF00

    亚麻布

    FAF0E6

    FFFAFA

    古代的白色

    FAEBD7

    花的白色

    FFFAF0

    鲜肉(鲑鱼)色

    FA8072

    柠檬薄纱

    FFFACD

    幽灵的白色

    F8F8FF

    玉米色

    FFF8DC

    适中的春天的绿色

    F5FFFA

    海贝壳

    FFF5EE

    白烟

    F5F5F5

    偏红的淡紫色

    FFF0F5

    小麦色

    F5DEB3

    番木瓜

    FFEFD5

    沙棕色

    F4A460

    漂白的杏仁

    FFEBCD

    蔚蓝色

    F0FFFF

    薄雾玫瑰

    FFE4E1

    蜂蜜

    F0FFF0

    (浓汤)乳脂,番茄等

    FFE4C4

    爱丽丝蓝

    F0F8FF

    鹿皮鞋

    FFE4B5

    卡其布

    F0E68C

    Navajo白

    FFDEAD

    淡珊瑚色

    F08080

    桃色

    FFDAB9

    灰秋麒麟

    EEE8AA

    FFD700

    紫罗兰

    EE82EE

    粉红

    FFC0CB

    深鲜肉(鲑鱼)色

    E9967A

    浅粉色

    FFB6C1

    薰衣草花的淡紫色

    E6E6FA

    橙色

    FFA500

    淡青色

    E1FFFF

    浅鲜肉(鲑鱼)色

    FFA07A

    结实的树

    DEB887

    深橙色

    FF8C00

    李子

    DDA0DD

    珊瑚

    FF7F50

    Gainsboro

    DCDCDC

    热情的粉红

    FF69B4

    猩红

    DC143C

    番茄

    FF6347

    苍白的紫罗兰红色

    DB7093

    橙红色

    FF4500

    秋麒麟

    DAA520

    深粉色

    FF1493

    兰花的紫色

    DA70D6

    D8BFD8

    淡蓝色

    87CEFA

    浅灰色

    D3D3D3

    天蓝色

    87CEEB

    晒黑

    D2B48C

    灰色

    808080

    巧克力

    D2691E

    橄榄绿

    808000

    秘鲁

    CD853F

    紫色

    800080

    印度红

    CD5C5C

    栗色

    800000

    适中的紫罗兰红色

    C71585

    绿玉

    7FFFAA

    银白色

    C0C0C0

    查特酒绿

    7FFF00

    深卡其布

    BDB76B

    草坪绿

    7CFC00

    玫瑰棕色

    BC8F8F

    适中的板岩暗蓝灰色

    7B68EE

    适中的兰花紫

    BA55D3

    浅石板灰

    778899

    耐火砖

    B22222

    石板灰

    708090

    火药蓝

    B0E0E6

    米色(浅褐色)

    6B8E23

    淡钢蓝

    B0C4DE

    板岩暗蓝灰色

    6A5ACD

    苍白的绿宝石

    AFEEEE

    暗淡的灰色

    696969

    绿黄色

    ADFF2F

    矢车菊的蓝色

    6495ED

    淡蓝

    ADD8E6

    军校蓝

    5F9EA0

    深灰色

    A9A9A9

    橄榄土褐色(褐绿色)

    556B2F

    棕色

    A52A2A

    靛青

    4B0082

    黄土赭色

    A0522D

    适中的绿宝石

    48D1CC

    深兰花紫

    9932CC

    深岩暗蓝灰色

    483D8B

    苍白的绿色

    98FB98

    钢蓝

    4682B4

    深蓝紫色

    9400D3

    宝蓝

    4.17E+04

    适中的蓝紫色

    9370DB

    绿宝石

    40E0D0

    淡绿色

    90EE90

    春天的绿色

    3CB371

    深海洋绿

    8FBC8F

    酸橙绿

    32CD32

    马鞍棕色

    8B4513

    深石板灰

    2F4F4F

    深紫色

    8B008B

    海洋绿

    2E8B57

    深红色

    8B0000

    森林绿

    228B22

    深紫罗兰的蓝色

    8A2BE2

    浅海洋绿

    20B2AA

    道奇蓝

    1E90FF

    深天蓝

    00BFFF

    午夜的蓝色

    191970

    深青色

    008B8B

    水绿色,青色

    00FFFF

    水鸭色

    008080

    薄荷奶油

    00FF7F

    深绿色

    006400

    绿色

    00FF00

    蓝色

    0000FF

    适中的碧绿色

    00FA9A

    适中的蓝色

    0000CD

    深绿宝石

    00CED1

    深蓝色

    00008B

    海军蓝,深靛蓝

    000080

    作者:科雷learning

    物联沃分享整理
    物联沃-IOTWORD物联网 » python的openpyxl库设置表格样式:字体/边框/对齐/颜色等

    发表回复