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

时间:2017-03-11 14:25:32

标签: python python-docx

所以我开始使用pythons docx库。现在,我创建一个包含多行的表,只有两列,它看起来像这样:

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

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

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

var width = 0;
function getWindowSize() {
    if (document.body && document.body.offsetWidth) {
      width = document.body.offsetWidth;
    }
    if (document.compatMode=='CSS1Compat' &&
        document.documentElement &&
        document.documentElement.offsetWidth ) {
       width = document.documentElement.offsetWidth;
    }
    if (window.innerWidth) {
       width = window.innerWidth;
    }
    return(width);
}

如果您有更高级的内容,则必须在函数中添加另一个循环:

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

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:-1)

来自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