我想在使用 python-docx 创建的 Word 文档的表格单元格中右对齐文本。我遵循了this advice,但问题是在decell文本之前添加了新行,因此垂直对齐方式被破坏了。
这是没有正确对齐设置的代码:
table = document.add_table(rows=1, cols=4)
hdr_cells = table.rows[0].cells
hdr_cells[0].width = Inches(0.1)
hdr_cells[1].width = Inches(10)
hdr_cells[2].width = Inches(1)
hdr_cells[3].width = Inches(1)
for entry in context['invoices']['entries']:
row_cells = table.add_row().cells
row_cells[0].text = str(entry['amount'])
row_cells[1].text = entry['line']
row_cells[2].text = entry['unit_price_label']
row_cells[3].text = entry['subtotal']
这是具有正确对齐设置的代码:
table = document.add_table(rows=1, cols=4)
hdr_cells = table.rows[0].cells
hdr_cells[0].width = Inches(0.1)
hdr_cells[1].width = Inches(10)
hdr_cells[2].width = Inches(1)
hdr_cells[3].width = Inches(1)
for entry in context['invoices']['entries']:
row_cells = table.add_row().cells
row_cells[0].text = str(entry['amount'])
row_cells[1].text = entry['line']
row_cells[2].add_paragraph(entry['unit_price_label']).alignment = WD_ALIGN_PARAGRAPH.RIGHT
row_cells[3].add_paragraph(entry['subtotal']).alignment = WD_ALIGN_PARAGRAPH.RIGHT
以及生成的文档:
使用 python-docx 将表单元格右对齐时,有什么方法可以避免这种回车吗?
答案 0 :(得分:1)
简短的回答:是的,使用
row_cells[0].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.RIGHT
表格单元格必须始终至少包含一个段落;这是ISO 29500规范所规定的(一旦您深入研究它就很有意义)。
根据此要求,一个新的(且为空)单元格包含一个空段落。如果在一个空单元格上调用.add_paragraph()
,那么您将得到两个段落。
因此,避免使用多余段落的秘诀是从使用现有段落开始。仅在需要多个段落的情况下,才调用.add_paragraph()
。
单个现有段落的访问权限为cell.paragraphs[0]
,并且可以与python-docx
中的任何其他段落相同的方式进行操作