0

python-pptx を使用して既存のパワーポイント ドキュメントを変更するための python コードを書いています。通常、実行中にテキストを設定することで、フォーマットを維持しながらテキストを設定できます。

shape.text_frame.paragraphs[0].runs[0].text = 'mytext'

ただし、私が変更しているテーブルでは、セルにランがありません。それらには段落[0]があり、情報を持たないフォントオブジェクトが含まれています(font.name、font.sizeは空白です)。表のフォント情報がどこに保存されているかわかりませんが、表はパワーポイントで機能するため、いくつかあるはずです。段落にランを追加してそのテキストを設定すると、パワーポイント UI でこれを手動で行った場合と同じサイズのテキストにはなりません。元の表のフォント情報を維持しながら、表のセルにテキストを設定するにはどうすればよいですか?

# this does not preserve table cell formatting...
table = shape.table
cell = table.rows[0].cells[0]
run = cell.text_frame.paragraphs[0].add_run()
run.text = 'mytext'
4

1 に答える 1

2

PowerPoint でのテキストの書式設定は、スタイル階層によって管理されています。

実行に直接適用される書式設定 (フォント サイズや斜体など) が最優先されます。そこから、大まかに段落のデフォルト、テーブル スタイル (テーブル内の場合)、レイアウトから継承 (プレースホルダーのみ)、マスターから継承 (プレースホルダーのみ)、およびドキュメント/テーマのデフォルトになります。これは、テーブル内かどうかなど、場所によって少し異なります。正確なルールの明確な記述は見つかりませんでしたが、これでアイデアが得られるかもしれません。

したがって、あなたの質問に答えるには、元の表の書式設定がどこから来ているのかを知る必要があります。

これはエンドユーザーが最も簡単に利用できるものであるため、直接適用されたフォーマットになると思います。また、あなたの新しい実行には直接適用された書式設定がないと言います。つまり、どこかから継承している必要があります。

その場合の解決策は、元の実行でそれが何であるかを発見し、新しい実行で同じように設定することです。または、テーマ/プレゼンテーションのデフォルトから継承するようにすべてを変更することもできます。

于 2016-12-19T19:02:05.633 に答える