使用Python创建带边框样式的Word表格的代码实现

 更新时间:2025年04月27日 11:08:01   作者:东方佑  
在生成Word文档时,表格的边框样式是提升专业度的重要细节本文将通过一个实例,展示如何使用python-docx库为表格添加上下边框加粗和内部边框隐藏的复杂样式,感兴趣的小伙伴跟着小编一起来看看吧

引言

在生成Word文档时,表格的边框样式是提升专业度的重要细节。本文将通过一个实例,展示如何使用python-docx库为表格添加上下边框加粗内部边框隐藏的复杂样式。代码将实现以下效果:

  • 表格位于页面底部
  • 表格首行和末行的上下边框加粗
  • 隐藏内部水平线

实现步骤

1. 安装依赖库

确保已安装python-docx库:

pip install python-docx==0.8.10  # 建议使用兼容版本

2. 核心代码解析

2.1 定义边框设置函数

from docx.oxml import OxmlElement
from docx.oxml.ns import qn

def set_cell_border(cell, **kwargs):
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
    tcBorders = tcPr.first_child_found_in("w:tcBorders")
    
    if tcBorders is None:
        tcBorders = OxmlElement('w:tcBorders')
        tcPr.append(tcBorders)

    for edge in ('start', 'top', 'end', 'bottom', 'insideH', 'insideV'):
        edge_data = kwargs.get(edge)
        if edge_data:
            tag = f'w:{edge}'
            element = tcBorders.find(qn(tag))
            if element is None:
                element = OxmlElement(tag)
                tcBorders.append(element)
            
            for key in ["sz", "val", "color", "space", "shadow"]:
                if key in edge_data:
                    element.set(qn(f'w:{key}'), str(edge_data[key]))

功能说明

  • 通过OxmlElement操作Word底层XML
  • 支持设置top/bottom等6个方向的边框
  • 参数含义:
    • sz:线宽(单位:磅)
    • val:边框类型(single实线/none无边框)
    • color:十六进制颜色值

2.2 创建表格并设置样式

doc = Document()

# 创建3行1列的表格
table = doc.add_table(rows=3, cols=1)
table_rows = table.rows

# 设置各单元格样式
for row_id, row in enumerate(table.rows):
    if row_id == 0:  # 首行
        for cell in row.cells:
            set_cell_border(
                cell,
                top={"sz": 16, "val": "single", "color": "#000000"},  # 上边框加粗
                bottom={"sz": 12, "val": "none"},  # 底边无边框
                insideH={"sz": 12, "val": "single", "color": "#FFFFFF"}  # 隐藏内部线
            )
    elif row_id == 1:  # 中间行
        for cell in row.cells:
            set_cell_border(
                cell,
                top={"sz": 12, "val": "none"}, 
                bottom={"sz": 12, "val": "single"},
                insideH={"sz": 12, "val": "single", "color": "#FFFFFF"}
            )
    else:  # 末行
        for cell in row.cells:
            set_cell_border(
                cell,
                top={"sz": 12, "val": "none"}, 
                bottom={"sz": 16, "val": "single", "color": "#000000"},  # 下边框加粗
                insideH={"sz": 12, "val": "single", "color": "#FFFFFF"}
            )

2.3 控制表格位置

# 通过段落间距将表格推至页面底部
p = doc.add_paragraph()
run = p.add_run('')
p.paragraph_format.space_after = Pt(500)  # 调整间距值

效果展示

生成的表格样式

内容样式说明
第一行上边框16磅加粗,下边框透明
中间行上下边框12磅实线,内部线隐藏
最后一行下边框16磅加粗

注意事项

  1. 边框逻辑

    • insideH控制行间水平线
    • 通过设置color为白色可隐藏内部线
    • 加粗效果通过增大sz值实现
  2. 版本兼容性

    • 推荐使用python-docx==0.8.10版本
    • 高版本可能需要调整导入路径:
from docx.oxml.shared import OxmlElement  # 0.8.11+版本
  • 表格定位技巧

    • 通过增大space_after段落间距实现
    • 更精确的底部对齐需要使用分节符设置页边距(参考本文开头的代码)

完整代码

# 完整代码见本文开头的代码示例
# 保存后运行:python your_script.py

扩展阅读

通过本文的实现,您可以快速掌握:

  • Word表格的底层XML操作技巧
  • 复杂边框样式的程序化实现
  • 文档元素的布局控制方法

这篇文章将代码功能、实现原理和注意事项结合,适合Python开发者快速上手表格样式设置。如需进一步优化,可以添加:

  • 文档分节符实现精确底部对齐
  • 图片印章的添加方法
  • 页眉页脚的完整实现

希望本文能帮助您提升Python文档处理能力!

from docx import Document
from docx.shared import Pt
from docx.oxml import OxmlElement
from docx.oxml.ns import qn


def set_cell_border(cell, **kwargs):
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()

    tcBorders = tcPr.first_child_found_in("w:tcBorders")
    if tcBorders is None:
        tcBorders = OxmlElement('w:tcBorders')
        tcPr.append(tcBorders)

    for edge in ('start', 'top', 'end', 'bottom', 'insideH', 'insideV'):
        edge_data = kwargs.get(edge)
        if edge_data:
            tag = 'w:{}'.format(edge)
            element = tcBorders.find(qn(tag))
            if element is None:
                element = OxmlElement(tag)
                tcBorders.append(element)

            for key in ["sz", "val", "color", "space", "shadow"]:
                if key in edge_data:
                    element.set(qn('w:{}'.format(key)), str(edge_data[key]))


doc = Document()

# 添加一些文本作为占位符
p = doc.add_paragraph()
run = p.add_run('')
run.font.size = Pt(12)

# 增加段落后间距,以尝试将接下来的表格推向页面底部
p.paragraph_format.space_after = Pt(500)  # 调整此值以适应不同的页面大小和内容量

# 创建并添加表格
table = doc.add_table(rows=3, cols=1)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '送:区。'
hdr_cells = table.rows[1].cells
hdr_cells[0].text = '发:。'
hdr_cells = table.rows[2].cells
hdr_cells[0].text = '发'

# 设置每个单元格的边框
for row_id, row in enumerate(table.rows):
    if row_id == 0:

        for cell in row.cells:
            set_cell_border(
                cell,
                top={"sz": 16, "val": "single", "color": "#000000"},  # 黑色实线上边框
                bottom={"sz": 12, "val": "none", },  # 黑色实线下边框
                start={"sz": 0, "val": "none"},  # 左边框无边框
                end={"sz": 0, "val": "none"},  # 右边框无边框
                insideH={"sz": 12, "val": "single", "color": "#FFFFFF"},  # 内部水平线颜色设为白色(或选择其他颜色以匹配背景)
            )
    elif row_id == 1:
        for cell in row.cells:
            set_cell_border(
                cell,
                top={"sz": 12, "val": "none", },  # 黑色实线上边框
                bottom={"sz": 12, "val": "single", "color": "#000000"},  # 黑色实线下边框
                start={"sz": 0, "val": "none"},  # 左边框无边框
                end={"sz": 0, "val": "none"},  # 右边框无边框
                insideH={"sz": 12, "val": "single", "color": "#FFFFFF"},  # 内部水平线颜色设为白色(或选择其他颜色以匹配背景)
            )
    else:
        for cell in row.cells:
            set_cell_border(
                cell,
                top={"sz": 12, "val": "none"},  # 黑色实线上边框
                bottom={"sz": 16, "val": "single", "color": "#000000"},  # 黑色实线下边框
                start={"sz": 0, "val": "none"},  # 左边框无边框
                end={"sz": 0, "val": "none"},  # 右边框无边框
                insideH={"sz": 12, "val": "single", "color": "#FFFFFF"},  # 内部水平线颜色设为白色(或选择其他颜色以匹配背景)
            )

doc.save('11.docx')

以上就是使用Python创建带边框样式的Word表格的代码实现的详细内容,更多关于Python创建带边框Word表格的资料请关注脚本之家其它相关文章!

相关文章

  • Python 脚本拉取 Docker 镜像问题

    Python 脚本拉取 Docker 镜像问题

    这篇文章主要介绍了 Python 脚本拉取 Docker 镜像问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Tensorflow实现酸奶销量预测分析

    Tensorflow实现酸奶销量预测分析

    这篇文章主要为大家详细介绍了Tensorflow酸奶销量预测分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • python使用递归解决全排列数字示例

    python使用递归解决全排列数字示例

    有1,2,3,4这4个数字,能组成多少个互不相同且无重复数字的三位数,下面是二种解决示例,需要的朋友可以参考下
    2014-02-02
  • Python计算代码运行时间的四种方法

    Python计算代码运行时间的四种方法

    这篇文章主要为大家详细介绍了使用Python计算代码运行时间的四种方法,文中的示例代码讲解详细,大家可以根据自己的需要进行选择
    2026-01-01
  • Python使用paramiko连接远程服务器执行Shell命令的实现

    Python使用paramiko连接远程服务器执行Shell命令的实现

    这篇文章主要介绍了Python使用paramiko连接远程服务器执行Shell命令的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • python模拟表单提交登录图书馆

    python模拟表单提交登录图书馆

    这篇文章主要为大家详细介绍了python模拟表单提交登录图书馆的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python基于Flask框架配置依赖包信息的项目迁移部署

    Python基于Flask框架配置依赖包信息的项目迁移部署

    这篇文章主要介绍了Python基于Flask框架配置依赖包信息的项目迁移部署小技巧,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-03-03
  • Python  reduce()函数的用法示例代码

    Python  reduce()函数的用法示例代码

    reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中,这篇文章主要介绍了Python reduce()函数的用法,需要的朋友可以参考下
    2023-05-05
  • Python IDE环境之 新版Pycharm安装详细教程

    Python IDE环境之 新版Pycharm安装详细教程

    这篇文章主要介绍了Python IDE环境之 新版Pycharm安装教程,本文教程给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 一文读懂Python版本管理工具Pyenv使用

    一文读懂Python版本管理工具Pyenv使用

    在开发Python程序的时候,有时候可能需要在不同版本的Python上进行测试。pyenv就是这么一个管理多版本Python的工具,今天给大家分享Python版本管理工具Pyenv使用,感兴趣的朋友一起看看吧
    2021-06-06

最新评论