表格单元格中的docx中心文本

问题描述 投票:0回答:6

所以我开始使用 pythons

docx
库。现在,我创建了一个包含多行且只有 2 列的表格,它看起来像这样:

现在,我希望这些单元格中的文本水平居中。我怎样才能做到这一点?我搜索了

docx
API文档,但我只看到了有关对齐段落的信息。

python python-docx
6个回答
18
投票

有一个代码可以通过在创建单元格时设置对齐方式来执行此操作。

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

在这里找到的解决方案:修改表格中单元格的对齐方式


2
投票

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

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

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


1
投票

我发现设置表格单元格(或任何文本属性)对齐方式的最可靠方法是通过样式。以编程方式或通过 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'

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


0
投票

就我而言,我使用了这个。

from docx.enum.text import WD_ALIGN_PARAGRAPH

def addCellText(row_cells, index, text):
    row_cells[index].text = str(text)
    paragraph=row_cells[index].paragraphs[0]
    paragraph.alignment = WD_ALIGN_PARAGRAPH.LEFT
    font = paragraph.runs[0].font
    font.size= Pt(10)

def addCellTextRight(row_cells, index, text):
    row_cells[index].text = str(text)
    paragraph=row_cells[index].paragraphs[0]
    paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT
    font = paragraph.runs[0].font
    font.size= Pt(10)

0
投票

为了完全对齐中心我使用这个代码:

from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_ALIGN_VERTICAL

for row in table.rows:
    for cell in row.cells:
        cell.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
        cell.vertical_alignment = WD_ALIGN_VERTICAL.CENTER

-3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.