5

既にページ番号を追加した既存の Word 文書を開き、それにテキストと見出しを追加したいと思います。

これが私の目標を達成しようとした方法の基本的な例です

#!/usr/bin/env python 
from docx import Document
document = Document('report-template.docx')
document.add_heading('Headline No. 1', level=1)
document.add_paragraph('Test No. 1')
document.add_heading('Heading No. 2', level=2)
document.add_paragraph('Test No. 2')
document.save('example.docx')

完全な新しいドキュメントで上記を実行すると、すべて正常に動作します-既存のファイルでこれを実行すると、次のエラーで失敗します

Traceback (most recent call last):
  File "create-report-test.py", line 6, in <module>
    document.add_heading('Headline No. 1', level=1)
  File "/usr/lib/python2.7/site-packages/docx/document.py", line 43, in add_heading
    return self.add_paragraph(text, style)
  File "/usr/lib/python2.7/site-packages/docx/document.py", line 63, in add_paragraph
    return self._body.add_paragraph(text, style)
  File "/usr/lib/python2.7/site-packages/docx/blkcntnr.py", line 38, in add_paragraph
    paragraph.style = style
  File "/usr/lib/python2.7/site-packages/docx/text/paragraph.py", line 111, in style
    style_or_name, WD_STYLE_TYPE.PARAGRAPH
  File "/usr/lib/python2.7/site-packages/docx/parts/document.py", line 75, in get_style_id
    return self.styles.get_style_id(style_or_name, style_type)
  File "/usr/lib/python2.7/site-packages/docx/styles/styles.py", line 113, in get_style_id
    return self._get_style_id_from_name(style_or_name, style_type)
  File "/usr/lib/python2.7/site-packages/docx/styles/styles.py", line 143, in _get_style_id_from_name
    return self._get_style_id_from_style(self[style_name], style_type)
  File "/usr/lib/python2.7/site-packages/docx/styles/styles.py", line 57, in __getitem__
    raise KeyError("no style with name '%s'" % key)
KeyError: u"no style with name 'Heading 1'"

http://python-docx.readthedocs.org/en/latest/user/documents.htmlのドキュメントを読みましたが、何かが足りないようです - 誰かアイデアがありましたか?

前もって感謝します

4

2 に答える 2

4

python-docxドキュメントですでに定義されているスタイルのみを操作できます。このエラーは、見出し 1 の段落スタイルが定義されていないことを示しています。Word は、スタイルが定義されていない状態で開始します (OK、Normal のようないくつかですが、それだけです)。その後、組み込みのスタイルが最初に使用されるときにファイルに追加されます。

2 つのオプション:

  1. ドキュメントに手動で見出し 1 段落を追加し、削除します。その後、見出し 1 の段落スタイルがドキュメントに定義されます。Word がスタイルを追加すると、そのスタイルを使用しているすべての段落が削除されても、そのスタイルは削除されません。

  2. python-docx を使用して、見出し 1 を自分で定義します。その方法については、こちらのドキュメントを参照してください: http://python-docx.readthedocs.org/en/latest/user/styles-using.html#define-paragraph-formatting

このページは、いくつかのスタイルの概念を埋めるために、おそらくすぐに読む価値があります: http://python-docx.readthedocs.org/en/latest/user/styles-understanding.html

于 2015-06-23T21:42:04.153 に答える