Python:KeyError:“名称不为'Quote Char'的样式”

时间:2018-07-01 07:19:57

标签: python styles python-docx

(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)我无法理解所谓的潜在样式。内置样式和潜在样式之间有什么区别?

感谢您阅读。

1 个答案:

答案 0 :(得分:1)

在Word中,有很多内置样式可供您选择,而无需定义它们。这些称为潜在样式,因为直到首次使用它们才在文档中定义。在使用之前,每种此类样式在文档中都是潜在的,这时它在文档中被明确定义。这样可以防止许多未使用的样式增加到文档文件的大小,同时允许用户从一组一致的样式中进行选择,而不必实际详细定义任何样式。

潜在样式的实际定义在第一次使用样式时由Word应用程序执行。 python-docx只能使用实际定义的样式;它无法像Word一样向文档添加这些潜在样式之一。

因此,如果您要使用一种名为“ Quote Char”的样式,请在使用python-docx打开文档之前,先使用Word将其添加到文档中,或者使用python-docx样式API自己定义它在尝试使用它之前。

如果添加一个段落并为其分配潜在样式,则该样式将添加到文档中。但是,当您删除该段落时,样式仍然保留。明确定义后,Word永远不会自动删除样式。这是在文档中获取显式定义的潜在样式的最简单方法。