table 个单元格中的 docx 居中文本
docx center text in table cells
所以我开始使用 pythons docx
库。现在,我创建了一个包含多行且只有 2 列的 table,它看起来像这样:
现在,我希望这些单元格中的文本水平居中。我怎样才能做到这一点?我搜索了 docx
API 文档,但我只看到了有关对齐段落的信息。
有一个代码可以通过在创建单元格时设置对齐方式来执行此操作。
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
code by: bnlawrence
要将文本居中对齐,只需更改:
p.alignment=WD_ALIGN_PARAGRAPH.CENTER
在此处找到解决方案:Modify the alignment of cells in a table
从 docx.enum.table
导入 WD_TABLE_ALIGNMENT
table = document.add_table(3, 3)
table.alignment = WD_TABLE_ALIGNMENT.CENTER
详情见link。
http://python-docx.readthedocs.io/en/latest/api/enum/WdRowAlignment.html
我发现设置 table 单元格(或任何文本 属性)对齐的最可靠方法是通过样式。以编程方式或通过 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'
您可以轻松地将此代码粘贴到一个函数中,该函数将接受一个 table 对象和一个样式名称,并格式化整个对象。
好吧,添加一个段落似乎可行,但是(哦,真的吗?)它添加了一个新段落 -- 所以在我的情况下,这不是一个选项。您可以更改现有单元格的值,然后更改段落的对齐方式:
row[0].text = "hey, beauty"
p = row[0].paragraphs[0]
p.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER
实际上,在最上面的答案中,第一个“docx.enum.text”丢失了:)
在我的例子中,我使用了这个。
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)
所以我开始使用 pythons docx
库。现在,我创建了一个包含多行且只有 2 列的 table,它看起来像这样:
现在,我希望这些单元格中的文本水平居中。我怎样才能做到这一点?我搜索了 docx
API 文档,但我只看到了有关对齐段落的信息。
有一个代码可以通过在创建单元格时设置对齐方式来执行此操作。
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
code by: bnlawrence
要将文本居中对齐,只需更改:
p.alignment=WD_ALIGN_PARAGRAPH.CENTER
在此处找到解决方案:Modify the alignment of cells in a table
从 docx.enum.table
导入 WD_TABLE_ALIGNMENT
table = document.add_table(3, 3)
table.alignment = WD_TABLE_ALIGNMENT.CENTER
详情见link。
http://python-docx.readthedocs.io/en/latest/api/enum/WdRowAlignment.html
我发现设置 table 单元格(或任何文本 属性)对齐的最可靠方法是通过样式。以编程方式或通过 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'
您可以轻松地将此代码粘贴到一个函数中,该函数将接受一个 table 对象和一个样式名称,并格式化整个对象。
好吧,添加一个段落似乎可行,但是(哦,真的吗?)它添加了一个新段落 -- 所以在我的情况下,这不是一个选项。您可以更改现有单元格的值,然后更改段落的对齐方式:
row[0].text = "hey, beauty"
p = row[0].paragraphs[0]
p.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER
实际上,在最上面的答案中,第一个“docx.enum.text”丢失了:)
在我的例子中,我使用了这个。
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)