"docx中的add_paragraph()添加新行"

2024-06-09 07:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码:

def header_build(self, boldText, dataText):
    # document.add_heading('Document Title', 0)
    p = self.document.add_paragraph()
    p.style = self.document.styles['Body Text']
    p.style.font.size = Pt(12)
    p.style.font.name = 'Times New Roman'
    p.add_run(boldText).bold = True
    p.add_run(dataText)

当我使用header_build函数时,我们的想法是:

^{pr2}$

获取以下信息:

所有者:姓名

问题是,在我试图得到的文本之前,我得到了一个新的行。在


Tags: run代码buildselfaddtitlestyledef
3条回答

米克斯说得很对。用Document()创建的新文档包含一个空段落。在

这种行为是由语言决定的。打开新的Word文件时,如果打开了段落标记(可见),则会在单个段落标记之前看到插入点。这反映在ISO/IEC29500 Word规范中,文档(w:body元素)必须包含一个或多个段落才能有效。不幸的是,这意味着您需要处理新文档的第一段,而不是以后添加的段落。在

如果需要,可以在开始添加内容之前删除第一段:

from docx import Document

document = Document()
document._body.clear_content()

如果在此调用后保存而不添加任何内容,.docx文件将无效,可能无法加载或可能需要“修复”步骤。但只要添加内容,这将很好地工作,而且其优点是添加段落是统一的,即添加第一段与添加后面的段落的方式相同。在

否则,您需要获取第一段,并将其与其他段落分开操作:

^{pr2}$

这对我有用:)

import docx

doc = docx.Document()
paragraph = doc.add_paragraph('Lorem ipsum ')
run = paragraph.add_run('dolor')
run.bold = True
paragraph.add_run(' sit amet.')
doc.save('test.docx')

开/关:

多洛勒姆。在

问题:

我认为这是因为您正在添加手动创建的现有文档(空文档)(不使用python docx)。似乎在创建文档时,paragraphs[0]是创建的,因此当您使用add_paragraph()添加新段落时,它正在创建另一个段落paragraphs[1],第一个段落为空。在

解决方案:

有两种解决方案:

或者将文本插入段落[0],而不是创建新段落:

def header_build(self, boldText, dataText):

    # paragraph[0]
    p= self.document.paragraphs[0]

    p.style = document.styles['Body Text']
    p.style.font.size = Pt(12)
    p.style.font.name = 'Times New Roman'
    p.add_run(boldText).bold = True
    p.add_run(dataText)
    print p.text

您可以使用python docx创建一个新文档,然后使用add_paragraph(),即paragraphs[0](不更改header_build函数):

^{pr2}$

相关问题 更多 >