我正在尝试使用 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
在生成的文档中,我添加的三个段落以相同的大小和粗体设置结束。
我不知道要使每个段落具有自己的样式设置会丢失什么。
答案 0 :(得分:0)
样式是通过 reference 应用于段落的,而不是通过复制其属性来实现的。因此,如果您所有的段落都具有“普通”样式,则它们都将获得“普通”结尾的样式,这是您的最后一个设置。
因此,对于需要看起来不同的每个段落,您将需要使用不同的样式,或者您可以直接将格式应用于段落,而无需使用样式。后一种方法可能更适合文档中唯一的段落。
可以在样式上设置的所有格式设置特征也可以直接应用。
python-docx
文档中介绍了样式的使用:
https://python-docx.readthedocs.io/en/latest/user/styles-using.html