【问题标题】:docx center text in table cells表格单元格中的 docx 中心文本
【发布时间】:2021-02-19 05:34:32
【问题描述】:

所以我开始使用 pythons docx 库。现在,我创建了一个包含多行且只有 2 列的表,如下所示:

现在,我希望这些单元格中的文本水平居中。我怎样才能做到这一点?我搜索了docx API 文档,但只看到了有关对齐段落的信息。

【问题讨论】:

    标签: python python-docx


    【解决方案1】:

    有一个代码可以通过在创建单元格时设置对齐方式来做到这一点。

    doc=Document()
    table = doc.add_table(rows=0, columns=2)
    
    row=table.add_row().cells
    p=row[0].add_paragraph('left justified text')
    p.alignment=WD_ALIGN_PARAGRAPH.LEFT
    p=row[1].add_paragraph('right justified text')
    p.alignment=WD_ALIGN_PARAGRAPH.RIGHT
    

    代码作者:bnlawrence

    并将文本对齐到中心只需更改:

    p.alignment=WD_ALIGN_PARAGRAPH.CENTER
    

    在此处找到解决方案:Modify the alignment of cells in a table

    【讨论】:

    • 那么就没有办法整张桌子做吗?
    • jmh 通过创建自定义样式也提出了一个很好的解决方案。在这里查看:link - @Frynio
    【解决方案2】:

    我发现设置表格单元格(或实际上任何文本属性)对齐的最可靠方法是通过样式。以编程方式或通过 Word UI 定义文档存根中居中对齐文本的样式。然后只需将样式应用于您的文本即可。

    如果您通过设置其text 属性来创建单元格,则可以这样做

    for col in table.columns:
        for cell in col.cells:
            cell.paragraphs[0].style = 'My Center Aligned Style'
    

    如果你有更高级的内容,你将不得不在你的函数中添加另一个循环:

    for col in table.columns:
        for cell in col.cells:
            for par in cell.paragraphs:
                par.style = 'My Center Aligned Style'
    

    您可以轻松地将这段代码粘贴到一个函数中,该函数将接受一个表格对象和一个样式名称,并格式化整个内容。

    【讨论】:

      【解决方案3】:

      好吧,添加段落似乎可行,但是(哦,真的吗?)它添加了一个新段落——所以在我的情况下,这不是一个选项。您可以更改现有单元格的值,然后更改段落的对齐方式:

      row[0].text = "hey, beauty"
      p = row[0].paragraphs[0]
      p.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER
      

      实际上,在最佳答案中,第一个“docx.enum.text”丢失了:)

      【讨论】:

        【解决方案4】:

        docx.enum.table 导入WD_TABLE_ALIGNMENT

        table = document.add_table(3, 3)
        table.alignment = WD_TABLE_ALIGNMENT.CENTER
        

        详情见链接。

        http://python-docx.readthedocs.io/en/latest/api/enum/WdRowAlignment.html

        【讨论】:

        • Docs for alignment 说“...指定此表格在页边距之间的位置”。这不是 OP 所要求的。
        猜你喜欢
        • 1970-01-01
        • 2017-06-17
        • 1970-01-01
        • 2015-01-01
        • 2011-11-30
        • 2015-01-03
        • 2012-11-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多