繁体   English   中英

将特定单词部分复制到python中的新文档

[英]Copy specific word section to new document in python

正如标题所说,我正在尝试将选定的文本部分复制到新的 Word 文档中。 基本上,我有一堆年度报告,其中包含系统命名的部分(即项目 1、项目 2 等)。我希望能够搜索选定部分并将该部分复制到单个项目的报告中。 我一直在查看 docx 文档和 aspose.words 文档。 这是我最接近我正在寻找的东西,但它仍然不太正确:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Big document.docx")

for i in range(0, doc.sections.count) :
        
# Split a document into smaller parts, in this instance, split by section.
section = doc.sections[i].clone()

newDoc = aw.Document()
newDoc.sections.clear()

newSection = newDoc.import_node(section, True).as_section()
newDoc.sections.add(newSection)

# Save each section as a separate document.
newDoc.save(docs_base.artifacts_dir + f"SplitDocument.by_sections_{i}.docx")

我怀疑所说的部分是指内容以某个标题段落开头。 这与Aspose.Words Document Object Model中的Section节点不对应。 如果您需要在文档中设置不同的页面设置或页眉/页脚,则使用 MS Word 中的部分。

没有你的文件很难说,但我想你的文件只有一节。 看起来您需要根据样式从文档中提取内容 另外,我创建了一个简单的代码示例来演示基本技术:

import aspose.words as aw

# Geneare document with heading paragraphs (just for demonstrations purposes).
doc = aw.Document()
builder = aw.DocumentBuilder(doc)

for i in range(0, 5):
    builder.paragraph_format.style_identifier = aw.StyleIdentifier.HEADING1
    builder.writeln("Project {0}".format(i))
    builder.paragraph_format.style_identifier = aw.StyleIdentifier.NORMAL
    for j in range(0, 10):
        builder.writeln("This is the project {0} content {1}, each project section will be extracted into a separate document.".format(i, j))

doc.save("C:\\Temp\\out.docx")

# Now split the document by heading paragraphs.
# Code is just for demonstration purposes and supposes there is only one section in the document.
subDocumentIndex = 0
subDocument = doc.clone(False).as_document()
for child in doc.first_section.body.child_nodes:
    if child.node_type == aw.NodeType.PARAGRAPH and child.as_paragraph().paragraph_format.style_identifier == aw.StyleIdentifier.HEADING1:
        if not subDocument.has_child_nodes:
            subDocument.ensure_minimum()
        else:
            # save subdocument
            subDocument.save("C:\\Temp\\sub_document_{0}.docx".format(subDocumentIndex))
            subDocumentIndex = subDocumentIndex+1
            subDocument = doc.clone(False).as_document()
            subDocument.ensure_minimum()
        # Remove body content.
        subDocument.first_section.body.remove_all_children()

    # import current node to the subdocument.
    dst_child = subDocument.import_node(child, True, aw.ImportFormatMode.USE_DESTINATION_STYLES)
    subDocument.first_section.body.append_child(dst_child)

# save the last document.
subDocument.save("C:\\Temp\\sub_document_{0}.docx".format(subDocumentIndex))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM