Word文档到python-docx

Word document to python-docx

Objective: 我使用了一个单词模板,我想将段落值从 python 传递到该模板。

管道: 管道涉及使用 python-docx 并将输出段落发送到 python docx;因此,创建一个 docx 文件。

from docx import Document
from docx.shared import Inches
document = Document()
document.add_heading('Document Title', 0)
r  = """sample paragraph"""
p = document.add_paragraph(r)
document.add_page_break()
document.save('Test.docx')

问题:

我已经有了想要使用的示例模板,是否可以使用 python-docx 创建模板的蓝图并继续进行内容屏蔽?

蓝图是指部分页眉、页脚、边距、间距等等,必须自动保存或编码为 python-docx 格式。这样我就可以将示例段落发送到相关部分。

如果我需要使用另一个模板创建模板;我相信,我需要在 python-docx 中再次对部分、边距和样式进行硬编码。有没有办法绕过这条工作路径?

我认为您会发现最有用的方法是在模板文档中定义段落样式 embody 不同类型的段落和字符格式您想要的段落(标题、body 段落等),然后在添加每个段落时应用正确的样式。

http://python-docx.readthedocs.io/en/latest/user/styles-understanding.html
http://python-docx.readthedocs.io/en/latest/user/styles-using.html

您仍然需要编写从 "top" 到 "bottom" 的文档。如果项目没有按顺序到达,您可能希望将它们组织在内存数据结构中,直到您拥有所有项目,然后从该数据结构写入文档。

有很多方法可以解决这个问题,但是 python-docx 中没有 "cursor" 的概念(还),您可以在其中任意位置插入段落。

我一直在为此使用占位符(即,将“[Counterparty]”之类的东西放在那里),然后像这样搜索和替换:

from docx import Document

document = Document(('./templates/yourfilename.docx'))

for paragraph in document.paragraphs:
    if "[Counterparty]" in paragraph.text:  
        paragraph.text = re.sub("[Counterparty]", "Replacing text", paragraph.text)