python-docx为每个段落设置不同的样式

时间:2019-03-12 20:37:11

标签: python python-docx

我正在尝试使用 python-docx 为段落设置不同的样式设置,但是即使我为每个段落指定了不同的样式设置,我也总是以相同的样式设置结束所有段落。 / p>

这是我的代码:

def get_operation_word_file(self, request, context):
    import unicodedata
    from django.core.files import File
    from docx import Document
    from docx.shared import Inches, Pt

    document = Document()

    section = document.sections[-1]
    section.top_margin = Inches(0.5)
    section.bottom_margin = Inches(0.5)
    section.left_margin = Inches(0.5)
    section.right_margin = Inches(0.5)

    style = document.styles['Normal']
    font = style.font
    font.name ='Arial'
    font.size = Pt(10)

    company_paragraph = document.add_paragraph("EUROAMERICA TTOO INC").alignment = WD_ALIGN_PARAGRAPH.CENTER
    company_paragraph.style.font.size = Pt(20)
    company_paragraph.style.font.bold = True

    description_paragraph = document.add_paragraph("Operación de {} del día {}".format(operation_type[self.operation_type], self.operation_date)).alignment = WD_ALIGN_PARAGRAPH.CENTER
    description_paragraph.style.font.size = Pt(16)
    description_paragraph.style.font.bold = False

    day_paragraph = document.add_paragraph(weekdays[str(self.get_operation_date().weekday())]).alignment = WD_ALIGN_PARAGRAPH.CENTER
    day_paragraph.style.font.size = Pt(16)
    day_paragraph.style.font.bold = False

    current_directory = settings.MEDIA_DIR
    file_name = "Operaciones {} {}.docx".format(self.operation_type, self.operation_date)
    document.save("{}/{}".format(current_directory, file_name))

    return file_name

在生成的文档中,我添加的三个段落以相同的大小和粗体设置结束。

我不知道要使每个段落具有自己的样式设置会丢失什么。

1 个答案:

答案 0 :(得分:0)

样式是通过 reference 应用于段落的,而不是通过复制其属性来实现的。因此,如果您所有的段落都具有“普通”样式,则它们都将获得“普通”结尾的样式,这是您的最后一个设置。

因此,对于需要看起来不同的每个段落,您将需要使用不同的样式,或者您可以直接将格式应用于段落,而无需使用样式。后一种方法可能更适合文档中唯一的段落。

可以在样式上设置的所有格式设置特征也可以直接应用。

python-docx文档中介绍了样式的使用:
https://python-docx.readthedocs.io/en/latest/user/styles-using.html