You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenPyXL创建带样式的Excel表格?

使用openpyxl创建带样式的Excel表格

以下是基于openpyxl实现带自定义边框、合并单元格和单元格着色的Excel表格的Python脚本,可完成工作簿初始化、工作表添加,并应用多种样式效果。

完整实现代码

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

# 定义不同类型的边框样式
THIN_BORDER = Border(left=Side(border_style='thin',color='FF000000'),
                    right=Side(border_style='thin',color='FF000000'),
                    top=Side(border_style='thin',color='FF000000'),
                    bottom=Side(border_style='thin',color='FF000000')
                    )
                    
THICK_BORDER = Border(left=Side(border_style='thin',color='FF000000'),
                    right=Side(border_style='thin',color='FF000000'),
                    top=Side(border_style='thin',color='FF000000'),
                    bottom=Side(border_style='medium',color='FF000000')
                    )
DOUBLE_BORDER = Border(left=Side(border_style='dashed',color='FF000000'),
                    right=Side(border_style='dashed',color='FF000000'),
                    top=Side(border_style='double',color='FF000000'),
                    bottom=Side(border_style='double',color='FF000000')
                    )
MEDIUM_BORDER = Border(left=Side(border_style='medium',color='FF000000'),
                    right=Side(border_style='medium',color='FF000000'),
                    top=Side(border_style='medium',color='FF000000'),
                    bottom=Side(border_style='medium',color='FF000000')
                    ) 

def create_styled_table():
        
    wb=Workbook()
    ws1=wb.active
    ws1.title = "Sheet1"
    ws1.sheet_properties.tabColor = '000000FF'
    
    # 定义单元格填充样式
    fill_cell = PatternFill(fill_type=fills.FILL_SOLID,start_color='00FFFF00',end_color='00FFFF00')
    # 定义表格尺寸:行数、列数
    row_num=9
    col_num=8 
    # 表格起始位置
    start_row, row_loc = 10, 10
    start_column, col_loc = 2, 2
    # 要创建的表格数量
    Table_num=1
    dis=2 # 多个表格之间的间距
    for _ in range(Table_num):
        for i in range (row_loc,row_loc+row_num):
            for j in range (col_loc,col_num+col_loc):
                # 默认应用细边框
                ws1.cell(row=i, column=j).border=THIN_BORDER
                # 表格首行应用双边框+黄色填充
                if i==row_loc:
                    ws1.cell(row=i, column=j).border=DOUBLE_BORDER
                    ws1.cell(row=i, column=j).fill=fill_cell
                # 表格末行应用底部中等边框
                if i==row_loc+row_num-1:
                    ws1.cell(row=i, column=j).border=THICK_BORDER
        # 更新下一个表格的起始行位置
        row_loc= row_loc+row_num+dis
        
    # 合并首行指定列范围的单元格,并应用中等边框
    ws1.merge_cells(start_row=start_row, start_column=start_column+2, end_row=start_row, end_column=start_column+col_num-1)
    ws1.cell(row=start_row, column=start_column+col_num-1).border=MEDIUM_BORDER
    
    # 合并首列的前两行单元格
    ws1.merge_cells(start_row=start_row, start_column=start_column, end_row=start_row+1, end_column=start_column)
    # 合并首列从第三行到表格末行的单元格
    ws1.merge_cells(start_row=start_row+2, start_column=start_column, end_row=start_row+row_num-1, end_column=start_column)
            
    wb.save('table.xlsx')

关键功能解析

  • 边框样式定义:提前定义4种边框样式(细边框、底部加粗边框、上下双边框+左右虚线边框、全中等边框),便于后续批量调用。
  • 单元格填充:通过PatternFill创建黄色纯色填充样式,用于表格首行的高亮区分。
  • 表格布局控制:用变量定义表格的尺寸、起始位置、数量及间距,支持批量创建多个独立表格。
  • 合并单元格:对首行和首列的特定区域进行单元格合并,模拟复杂表头结构。
  • 样式批量应用:通过嵌套循环遍历表格单元格,根据行位置自动匹配对应样式,提升代码复用效率。

内容的提问来源于stack exchange,提问作者Yuval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:24:56