将docx的一部分提取到新的docx中

时间:2015-07-16 14:52:27

标签: python-2.7 python-docx

我有一个只有文字的docx文件。我想创建一个新的docx文件,其中只包含原始docx中的部分页面。我正在使用python-docx。 到目前为止,我已经能够横向原始docx文档,并将原始文件中的每个所需段落/运行复制到新文档中,如下所示(我相信这个例子应该是一个完整的副本):

Doc = docx.Document('/tmp/input.docx')
OutDoc = docx.Document()

for para in Doc.paragraphs:
    currentParagraph = OutDoc.add_paragraph(style=para.style)
    for run in para.runs:
        currentParagraph.add_run(run.text, style=run.style)
OutDoc.save('/tmp/output.docx')

即使我正在复制所有样式信息,但似乎我遗漏了一些东西,因为输出缺少一些格式化。

1 个答案:

答案 0 :(得分:1)

在Word中,如果未在新文档中明确定义该样式,则会忽略应用于段落或运行(或任何其他内容)的样式名称。

您可以解析源文档中的样式并在新文档中重新创建每个样式,也可以创建一个空白"模板"已包含所需样式的新文档的文档。

"默认" python-docx文档模板包含许多内置样式,但如果您的文档使用任何自定义样式,那么这将解释您所看到的症状。

有关详细信息,请参阅文档中的这些页面: http://python-docx.readthedocs.org/en/latest/user/styles-understanding.html http://python-docx.readthedocs.org/en/latest/user/styles-using.html http://python-docx.readthedocs.org/en/latest/api/document.html#docx.document.Document.styles http://python-docx.readthedocs.org/en/latest/api/style.html