Python-docx无法使用现有文档 - 没有名称为'Title'的样式

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

我正在尝试创建一个基于文本文件创建文档的程序,到目前为止,它运行良好。我决定,在Python-docx中更容易使用图像和其他不支持/难以有效使用的东西。在使用完全相同的代码但使用Doc = document()时,我使用Doc = document(“template.docx”)。修改后,文件将保存到其他docx文件中。尝试使用模板时出现这些错误。创建新文档时没有错误。

Traceback(最近一次调用最后一次):

  File "C:\Users\bgrif\Desktop\QPA.py", line 45, in <module>
    Doc.add_heading("QuizPax 28/02/2019",0)
  File "C:\Users\bgrif\AppData\Local\Programs\Python\Python37-32\lib\site-packages\docx\document.py", line 39, in add_heading
    return self.add_paragraph(text, style)
  File "C:\Users\bgrif\AppData\Local\Programs\Python\Python37-32\lib\site-packages\docx\document.py", line 56, in add_paragraph
    return self._body.add_paragraph(text, style)
  File "C:\Users\bgrif\AppData\Local\Programs\Python\Python37-32\lib\site-packages\docx\blkcntnr.py", line 39, in add_paragraph
    paragraph.style = style
  File "C:\Users\bgrif\AppData\Local\Programs\Python\Python37-32\lib\site-packages\docx\text\paragraph.py", line 111, in style
    style_or_name, WD_STYLE_TYPE.PARAGRAPH
  File "C:\Users\bgrif\AppData\Local\Programs\Python\Python37-32\lib\site-packages\docx\parts\document.py", line 78, in get_style_id
    return self.styles.get_style_id(style_or_name, style_type)
  File "C:\Users\bgrif\AppData\Local\Programs\Python\Python37-32\lib\site-packages\docx\styles\styles.py", line 109, in get_style_id
    return self._get_style_id_from_name(style_or_name, style_type)
  File "C:\Users\bgrif\AppData\Local\Programs\Python\Python37-32\lib\site-packages\docx\styles\styles.py", line 139, in _get_style_id_from_name
    return self._get_style_id_from_style(self[style_name], style_type)
  File "C:\Users\bgrif\AppData\Local\Programs\Python\Python37-32\lib\site-packages\docx\styles\styles.py", line 53, in __getitem__
    raise KeyError("no style with name '%s'" % key)
KeyError: "no style with name 'Title'"

有谁知道如何解决这一问题?提前致谢。

python python-3.x python-docx
1个回答
1
投票

编辑您的template.docx文件以添加Title样式:

  1. 打开文件并按Enter键创建一个新段落
  2. 选择该段落并为其指定段落样式Title
  3. 删除该段落
  4. 保存文件并再次尝试您的代码。

在Word中,大量预定义的段落样式出现在样式库和选择列表中。 Word应用程序已知这些样式的属性,但在首次使用Word之前,Word实际上并未在文档中存储任何这些样式。之后,即使没有被任何内容使用,他们仍然会使用该文档。

python-docx只能使用文档中定义的样式,因此您需要将该样式添加到模板文档中以使用它,.add_heading(.., 0)调用它。

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