python docx在同一行左右对齐

时间:2015-03-05 17:34:18

标签: python alignment docx python-docx

这是关于SO的第一个问题,我想提前感谢大家的帮助。我对python,python-docx和一般编程都很陌生。我正在使用GUI程序(使用PyQt)生成docx格式的合同。我有大部分工作,但这是我遇到的问题。我需要在同一行左右对齐文本。总而言之,我相信这是通过更改为右缩进和点击标签,然后添加文本来完成的。但是,我无法弄清楚如何在python-docx中执行此操作。我试过了:

paragraph = document.add_paragraph()
paragraph.add_run('SOME TEXT')
paragraph.alignment = 0
paragraph.add_run('SOME OTHER TEXT')
paragraph.alignment = 2

但这不起作用。我根据文档尝试了其他一些想法,比如enum WD_PARAGRAPH_ALIGNMENT,但没有任何效果。

这可以在python-docx中实现吗(即时使用版本0.8.5)?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

不确定您是否还在寻找解决方案,但是......

我也在与python-docx签订合同,并遇到了同样的问题。在添加right-aligned tab stop feature之前,我的解决方法是使用自定义表格样式将行格式化为表格。

  • 首先,打开一个文档('custom_styles.docx')并添加一个包含1行和2列的表。
  • 选择表格并添加新的表格样式('CustomTable'),其中第一列左对齐,最后一列右对齐。 (我还通过将边框设置为'none'或将它们着色为白色来使边框不可见。)
  • 删除表并保存文档,这将为您提供一个带有新“CustomTable”样式的空文档。

以下内容适用于创建似乎左对齐和右对齐的行:

from docx import Document

document = Document('custom_styles.docx')
table = document.add_table(1, 2, style='CustomTable')
table.cell(0,0).text = 'Left Text'
table.cell(0,1).text = 'Right Text'
document.save('new_document_name.docx')

对我来说最棘手的部分是弄清楚如何在Word中创建表格样式。

答案 1 :(得分:0)

如果您要查找的是完全对齐的段落,则表示它与左侧和右侧的边距对齐,这是通过{{1 property:

Paragraph.alignment

如果您正在寻找建立右对齐制表位,则from docx.enum.text import WD_ALIGN_PARAGRAPH paragraph = document.add_paragraph('A paragraph of text ..') paragraph.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY 中尚不支持。您可以在GitHub问题列表中添加功能请求:https://github.com/python-openxml/python-docx/issues

一个好的问题名称是"功能:制表符停止"。