首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >add_paragraph()在docx中添加换行符

add_paragraph()在docx中添加换行符
EN

Stack Overflow用户
提问于 2017-03-22 21:54:18
回答 3查看 9.5K关注 0票数 3

我使用以下代码:

代码语言:javascript
复制
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函数时,其思想是有以下内容:

代码语言:javascript
复制
header_build(self, boldText='Owner: ', dataText='Name')

得到以下信息:

所有者:名称

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

EN

回答 3

Stack Overflow用户

发布于 2017-03-25 05:30:42

问题:

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

解决方案:

有两个解决方案:

,您可以在段落中插入文本,而不是创建新的段落:

代码语言:javascript
复制
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创建一个新文档,然后使用add_paragraph()paragraphs[0] (不更改header_build函数):

代码语言:javascript
复制
# create a new document
document = Document()
票数 3
EN

Stack Overflow用户

发布于 2017-03-26 23:22:01

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

这种行为是由文字决定的。当您打开一个新单词文件时,如果您在(可见的)上有段落标记,您将看到插入点就在单个段落标记之前。这反映在ISO/IEC 29500 Word规范中,因为文档(w:body元素)必须包含一个或多个段落才能有效。不幸的是,这意味着您需要处理新文档的第一段与以后添加的内容不同。

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

代码语言:javascript
复制
from docx import Document

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

如果在此调用后保存而不添加任何内容,则.docx文件将无效,可能不会加载或可能需要“修复”步骤。但是,只要您添加内容,这将工作良好,并具有添加段落是一致的优点,即添加第一段的方式与添加后的段落相同。

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

代码语言:javascript
复制
paragraph = document.paragraphs[0]
paragraph.text = 'foobar'
paragraph.style = 'Heading 1'
etc.

for text in content_blocks:
    paragraph = document.add_paragraph()
    paragraph.text = text
    paragraph.style = 'Body Text'
票数 1
EN

Stack Overflow用户

发布于 2019-01-01 10:26:10

(这对我有用:)

代码语言:javascript
复制
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')

O/P:

Lorem ipsum dolor同坐。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42963372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档