美文网首页
python docx 设置word表格边框(颜色/线型/粗细)

python docx 设置word表格边框(颜色/线型/粗细)

作者: 悟空Oo | 来源:发表于2019-10-16 10:11 被阅读0次

曾经在网上苦苦寻找过python docx对word表格边框的设置,一直没有,现在终于有了,包括边框颜色、线型、宽度粗细的设置,直接用这个函数set_cell_border就行了(附加office的参数参考),这是对单个单元格(cell)的上下左右四个边框进行设置的:

注意要提前安装python-docx模块呦,pip安装命令:pip install python-docx

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

def set_cell_border(cell, **kwargs):
    """
    Set cell`s border
    Usage:
    set_cell_border(
        cell,
        top={"sz": 12, "val": "single", "color": "#FF0000", "space": "0"},
        bottom={"sz": 12, "color": "#00FF00", "val": "single"},
        left={"sz": 24, "val": "dashed", "shadow": "true"},
        right={"sz": 12, "val": "dashed"},
    )
    """
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()

    # check for tag existnace, if none found, then create one
    tcBorders = tcPr.first_child_found_in("w:tcBorders")
    if tcBorders is None:
        tcBorders = OxmlElement('w:tcBorders')
        tcPr.append(tcBorders)

    # list over all available tags
    for edge in ('left', 'top', 'right', 'bottom', 'insideH', 'insideV'):
        edge_data = kwargs.get(edge)
        if edge_data:
            tag = 'w:{}'.format(edge)

            # check for tag existnace, if none found, then create one
            element = tcBorders.find(qn(tag))
            if element is None:
                element = OxmlElement(tag)
                tcBorders.append(element)

            # looks like order of attributes is important
            for key in ["sz", "val", "color", "space", "shadow"]:
                if key in edge_data:
                    element.set(qn('w:{}'.format(key)), str(edge_data[key]))

相关文章

网友评论

      本文标题:python docx 设置word表格边框(颜色/线型/粗细)

      本文链接:https://www.haomeiwen.com/subject/wmjymctx.html