【python将word中的标签替换为指定内容(文本、图片、表格)二】

上一篇内容的表格添加到word中之后没有边框线。
可以将代码修改为如下:

def replace_tag_with_table(doc, tag, data):
    '''
    将word中的标签替换为表格
    :param doc: 文档 Document
    :param tag: 标签 string
    :param data: 表格数据  第一个数组为表头  [['A', 'B', 'C'], ['见附件是垃圾', '2', '3'], ['4', '5', '6']]
    :return: 无
    '''
    for paragraph in doc.paragraphs:
        if tag in paragraph.text:
            # 创建表格
            table = doc.add_table(rows=len(data), cols=len(data))
            for i, row in enumerate(data):
                for j, cell in enumerate(row):
                    table.cell(i, j).text = cell
            # 替换段落中的标签为表格
            paragraph.text = ''
            paragraph._p.addnext(table._tbl)
            for i, row in enumerate(data):
                for j, cell in enumerate(row):
                    cell_1 = table.cell(i, j)
                    #设置单元格边框
                    set_cell_border(cell_1)
                    # 设置段落居中
                    cell_1.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
                    # 设置文本居中
                    for paragraph in cell_1.paragraphs:
                        for run in paragraph.runs:
                            #run._element.rPr.rFonts.set(qn('w:eastAsia'), 'SimSun')  # 设置中文字体为宋体,根据需要调整
                            run.font.bold = i == 0  # 只加粗表头

# 设置单元格边框样式
def set_cell_border(cell, size=12, color='000000'):
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
    borders = tcPr.find(qn('w:tcBorders'))
    if borders is None:
        borders = OxmlElement('w:tcBorders')
        tcPr.append(borders)

    for border_name in ['top', 'left', 'bottom', 'right']:
        border = OxmlElement('w:{}'.format(border_name))
        border.set(qn('w:val'), 'single')  # 设置边框为单线
        border.set(qn('w:sz'), str(size))  # 设置边框大小
        border.set(qn('w:color'), color)  # 设置边框颜色
        border.set(qn('w:space'), '0')  # 设置边框间距
        borders.append(border)

        # 确保tcPr元素中有tcBorders元素
    if tcPr.getparent() is not None:
        tcPr.getparent().remove(tcPr)
        tc.append(tcPr)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值