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

如何用Python Docx为段落中的指定文本添加边框并设置粗细?

为Python Docx中的Run添加文本边框

python-docx库本身没有直接提供为单个Run添加边框的高层API,因为Word的字符边框是通过OOXML(Office Open XML)底层元素控制的。要实现需求,需直接操作Run对应的XML节点:

实现步骤

  1. 获取目标Run的底层运行属性(rPr)节点,不存在则创建
  2. 创建字符边框(w:borders)节点,为上、下、左、右四个方向定义边框样式
  3. 将边框节点添加到运行属性节点中

完整代码示例

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

# 初始化文档
document = Document()

# 原段落构建代码
p6 = document.add_paragraph()
p6.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
# 添加普通文本
p6.add_run("SCOLARITE       Suffisante     ")

# 添加需要加边框的文本
span = p6.add_run("OUI")
span.font.size = Pt(14)
span.font.name = 'Arial'
span.bold = True
span.font.color.rgb = RGBColor(0, 0, 0)

# 为Run添加边框的工具函数
def add_run_border(run, border_size=2, color="000000"):
    # 获取或创建run的属性节点
    rPr = run._element.get_or_add_rPr()
    
    # 创建边框根节点
    borders = OxmlElement('w:borders')
    
    # 定义四个方向的边框参数
    border_types = ['top', 'bottom', 'left', 'right']
    for border_type in border_types:
        border = OxmlElement(f'w:{border_type}')
        border.set(qn('w:val'), 'single')  # 边框样式:实线
        border.set(qn('w:sz'), str(border_size * 8))  # Word边框单位为1/8磅,需转换
        border.set(qn('w:color'), color)  # 十六进制RGB颜色
        border.set(qn('w:space'), '0')  # 边框与文本的间距
        borders.append(border)
    
    # 将边框节点加入属性节点
    rPr.append(borders)

# 为目标Run添加边框
add_run_border(span, border_size=2, color="000000")

# 保存文档
document.save("带边框文本.docx")

代码说明

  • qn()函数用于处理OOXML命名空间,确保节点被Word正确解析
  • 边框大小需转换为Word的1/8磅单位,比如2磅对应数值16
  • w:val可设置不同边框样式,比如double(双线)、dashed(虚线)等
  • 颜色参数为不带#的十六进制RGB值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:01:01