【问题标题】:How to apply a style to a paragraph with python-docx?如何使用 python-docx 将样式应用于段落?
【发布时间】:2014-04-10 05:15:18
【问题描述】:

我正在尝试使用 python-docx 模块将样式应用于文档中的段落。我可以写新的文本,但我不能对以前写的段落应用不同的样式。

这是一个例子:

x = docx.Document('Sample.docx')

x
Out[81]: <docx.api.Document at 0x121cebed0>

x.paragraphs[2].style
Out[82]: 'Normal'

x.paragraphs[2].style = 'Title'

x.paragraphs[2].style
Out[84]: 'Normal'

我无法从文档中判断这是否应该工作。似乎表明段落样式是可写的,但是文档中没有这种用例的示例。

请让我知道这是我的问题,还是该功能尚未实现。

【问题讨论】:

    标签: python docx python-docx


    【解决方案1】:

    支持这些调用。我必须仔细查看 Sample.docx 才能进行故障排除。

    如果你一步一步来并打印结果,你会得到什么?

    喜欢:

    >>> document = Document('Sample.docx')
    >>> document
    <docx.api.Document at 0x121cebed0>  # this looks good so far
    >>> paragraphs = document.paragraphs
    >>> paragraphs
    ???
    >>> paragraph = paragraphs[2]
    >>> paragraph
    ???
    >>> paragraph.style = 'Title'
    >>> paragraph.style
    ???
    

    此外,获取正确的样式名称有时也是一种技巧。我不知道这会如何导致您看到的行为,但可能值得研究。您确定在 Sample.docx 中有样式“标题”吗?

    【讨论】:

    • 是的,这行得通。将段落分配给单个对象后,我就可以更改样式。我很惊讶段落对象仍然引用文档中的段落,而不是我工作区中的单独段落对象。结果,我能够在更改格式后立即使用新的段落格式保存文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多