Word文档到python-docx

问题描述 投票:0回答:2

目标:我使用一个单词模板,我想从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中再次对段,边距和样式进行硬编码。有没有办法环绕这条工作路径?

python-docx
2个回答
1
投票

我一直在使用占位符(即,在那里放置“[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)

1
投票

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

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

您仍然需要将文档从“顶部”写入“底部”。如果项目没有按顺序到达,您可能希望将它们组织在一个内存数据结构中,直到您拥有它们,然后从该数据结构中写入文档。

有很多方法,但在python-docx中还没有“游标”的概念,你可以在任意位置插入一个段落。

© www.soinside.com 2019 - 2024. All rights reserved.