(Python 3.7,python-docx 0.8.6)
最近,我正在从一个网站上学习有关python-docx的Python。网站的网址为https://automatetheboringstuff.com/chapter13/。运行以下代码时出现一个错误。
import docx, os
os.chdir('C:\\')
doc = docx.Document('demo.docx')
doc.paragraphs[1].runs[0].style = 'Quote Char'
错误显示为:KeyError:“名称为'Quote Char'的样式不存在” 我发现有人有相同的问题,URL为:table style KeyError: u"no style with name 'Table Grid'"
我查看了python-docx文档(http://python-docx.readthedocs.io/en/latest/user/styles-understanding.html),发现确实存在“ Quote Char”(默认模板中的字符样式)。
此外,python-docx 0.8.6文档提到:尽管这些样式显示在UI中,但它们实际上并没有出现在您正在创建的文档中,至少直到您第一次使用它为止。
所以我有两个问题:
(1)内置样式中是否存在“ Quote Char”字符样式。如果是,如何首次使用“ Quote Char”样式?
(2)我无法理解所谓的潜在样式。内置样式和潜在样式之间有什么区别?
感谢您阅读。
答案 0 :(得分:1)
在Word中,有很多内置样式可供您选择,而无需定义它们。这些称为潜在样式,因为直到首次使用它们才在文档中定义。在使用之前,每种此类样式在文档中都是潜在的,这时它在文档中被明确定义。这样可以防止许多未使用的样式增加到文档文件的大小,同时允许用户从一组一致的样式中进行选择,而不必实际详细定义任何样式。
潜在样式的实际定义在第一次使用样式时由Word应用程序执行。 python-docx
只能使用实际定义的样式;它无法像Word一样向文档添加这些潜在样式之一。
因此,如果您要使用一种名为“ Quote Char”的样式,请在使用python-docx
打开文档之前,先使用Word将其添加到文档中,或者使用python-docx
样式API自己定义它在尝试使用它之前。
如果添加一个段落并为其分配潜在样式,则该样式将添加到文档中。但是,当您删除该段落时,样式仍然保留。明确定义后,Word永远不会自动删除样式。这是在文档中获取显式定义的潜在样式的最简单方法。