如何使用 python-docx 在单元格内同时对齐和设置颜色

How to align and set color at the same time inside a cell with python-docx

我正在尝试用 python-docx 制作 table。 这是我想要的输出:

¡--OK(粗体)--¡--MIDDLE(红色)--¡----RIGHT¡

这就是我得到的:

¡--OK(粗体)--¡MIDDLE(红色)----¡RIGHT----¡

我使用的代码是:

    from docx import Document
    from docx.shared import RGBColor
    from docx.enum.text import WD_ALIGN_PARAGRAPH

    document = Document()

    table = document.add_table(rows=1, cols=3, style='Table Grid')
    fila = table.rows[0].cells

    # First cell: OK in bold
    texto = 'OK'
    dentro = fila[0].paragraphs[0]
    dentro.add_run(texto).bold = True
    dentro.alignment = WD_ALIGN_PARAGRAPH.CENTER

    # Second cell: Middle in red
    texto = 'MIDDLE'
    dentro = fila[1].paragraphs[0].add_run(texto)
    dentro.alignment = WD_ALIGN_PARAGRAPH.CENTER
    font = dentro.font
    font.color.rgb = RGBColor(255,0,0) # Red

    # Third cell : Right
    texto = 'RIGHT'
    dentro = fila[2].paragraphs[0]
    dentro.add_run(texto)
    dentro.aligment = WD_ALIGN_PARAGRAPH.RIGHT

    document.save('demo.docx')

我有两个问题:第一个是我在添加颜色时没有在中间单元格中正确对齐。第二个是在中间一个错误输出后的单元格中,对齐似乎不起作用。我该如何解决?我必须等到下一个版本(实际 0.8.10)吗?谢谢,

中间单元格的代码不同。您分配新的 运行 dentro 而不是段落。这会导致将对齐值分配给 运行,而它什么都不做。

变化:

dentro = fila[1].paragraphs[0].add_run(texto)

至:

dentro = fila[1].paragraphs[0]
run = dentro.add_run(texto)
font = run.font
font.color.rgb = RGBColor(255, 0, 0)

我不确定如何解释第三个单元格上的 RIGHT 对齐而不是 "taking";我会进行此修复,然后看看您的进展情况。