Python-docx не может использовать существующий документ - нет стиля с именем 'Title' - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь создать программу, которая будет создавать документ на основе текстового файла, и пока все работает нормально.Я решил, что для облегчения использования изображений и других вещей, которые не поддерживаются / трудно эффективно использовать в Python-docx.При использовании точно такого же кода, но вместо этого используя Doc = document (), я использую Doc = document ("template.docx").После изменения файл сохраняется в другой файл docx.Я получаю эти ошибки при попытке использовать шаблон.Нет ошибок при создании нового документа.

Трассировка (последний последний вызов):

  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'"

Кто-нибудь знает, как это исправить?Заранее спасибо.

1 Ответ

0 голосов
/ 01 марта 2019

Отредактируйте файл template.docx, чтобы добавить стиль Title:

  1. Откройте файл и создайте новый абзац, нажав Enter
  2. Выберите этот абзац и назначьте емустиль абзаца Title.
  3. Удалить этот абзац
  4. Сохраните файл и попробуйте свой код еще раз.

В Word большое количество предопределенных абзацевстили появляются в галерее стилей и списках выбора.Атрибуты этих стилей известны приложению Word, но Word фактически не сохраняет ни один из этих стилей в документе, пока они не будут впервые использованы.После этого они остаются с этим документом, даже если они не используются каким-либо содержимым.

python-docx может работать только со стилями, определенными в документе , поэтому необходимо добавить, чтостиль в ваш шаблон документа, чтобы использовать его, что делает вызов .add_heading(.., 0).

...