pythonの得意なことといえば、事務作業の自動化が挙げられます
その証拠に、python×excelといった書籍は多く販売されています
できる 仕事がはかどるPython&Excel自動処理 全部入り。 (できる全部入り。)
しかし、python×パワポという書籍はまだありません
そこで、今回はpythonでパワポを操作する方法について解説していきたいと思います
パワポやエクセルなどは、会社員であれば、必ず使用するソフトです
これらを自動化することができれば、作業時間をかなり短縮することができます
この記事で学べること
pythonでパワポを操作する方法がわかる
python-pptxの導入方法と使い方がわかる
pythonからスライド作成ができる
Contents
pythonでパワポ操作〜python-pptxの導入〜
pythonでパワポを操作するには、python-pptxという外部ライブラリが必要になります
外部ライブラリがいまいちピンとこない方は、こちらの記事に目を通しておきましょう
python-pptxを使用することで、PowerPointを起動せずとも、スライド作成をすることができます
python-pptxでできること
PowerPointを使って操作することは、python-pptxを使ってほぼ操作することができます
例えば、
- スライド作成
- スライドの追加・編集
- テキストボックスの追加・編集
- オートシェイプの作成と編集
- グラフ・表・画像の挿入
このブログでは、上記の5種類を一通りマスターできるようにしていきます
python-pptxのインストール
まずはpython-pptxをインストールしていきます
macではターミナル、windowsではコマンドプロンプトで以下のように入力します
pip install python-pptx
これでインストールは終わりですが、動作確認をしておきましょう
from pptx import Presentation
prs=Presentation()
spyder上で上記を入力して、実行します
jupyternotebookを使っている方は、そちらに入力していきます
これで、エラーが出なければOKです
pythonでパワポ操作〜python-pptxでスライド作成〜
インストールが完了したので、早速スライドを作成していきたいと思います
スライドを作成する上で、注意しておきたいのが、レイアウト指定です
python-pptxではレイアウトを番号で指定していきますが、番号は以下のようになっています
- 0:Title Slide
- 1:Title and Content
- 2:Section Header
- 3:Two Content
- 4:Comparison
- 5:Title Only
- 6:Blank
- 7:Content with Caption
- 8:Picture with Caption
- 9:Title and Vertical Text
- 10:Vertical Title and Text
左上から「0」スタートになります
レイアウトは全部で11種類あるので、0〜10で指定をしていきます
from pptx import Presentation
#Presentationオブジェクトの取得
prs=Presentation()
#1ページ目(「タイトル スライド」のレイアウトを指定)
slide_layout_0 = prs.slide_layouts[0]
slide_1 = prs.slides.add_slide(slide_layout_0)
#PowerPointを保存
prs.save("create_powerpnt.pptx")
それ以外のスライドレイアウトは以下のように指定することができます
from pptx import Presentation
prs=Presentation()
#1ページ目(「タイトル スライド」のレイアウトを指定)
slide_layout_0 = prs.slide_layouts[0]
slide_1 = prs.slides.add_slide(slide_layout_0)
slide_layout_1 = prs.slide_layouts
slide_2 = prs.slides.add_slide(slide_layout_1)
slide_layout_2 = prs.slide_layouts
slide_3 = prs.slides.add_slide(slide_layout_2)
slide_layout_3 = prs.slide_layouts
slide_4 = prs.slides.add_slide(slide_layout_3)
slide_layout_4 = prs.slide_layouts
slide_5 = prs.slides.add_slide(slide_layout_4)
slide_layout_5 = prs.slide_layouts[5]
slide_6 = prs.slides.add_slide(slide_layout_5)
slide_layout_6 = prs.slide_layouts[6]
slide_7 = prs.slides.add_slide(slide_layout_6)
slide_layout_7 = prs.slide_layouts[7]
slide_8 = prs.slides.add_slide(slide_layout_7)
slide_layout_8 = prs.slide_layouts[8]
slide_9 = prs.slides.add_slide(slide_layout_8)
slide_layout_9 = prs.slide_layouts[9]
slide_10 = prs.slides.add_slide(slide_layout_9)
slide_layout_10 = prs.slide_layouts[10]
slide_11 = prs.slides.add_slide(slide_layout_10)
#PowerPointを保存
prs.save("create_powerpnt.pptx")
新しいスライドを追加する際には、
#*には0〜10の数値を入力
prs.slides.add_slide(slide_layout*)
と指定してあげます
プレースホルダーの説明
プレースホルダーというのは、スライドの中の個々のものを指しています
プレースホルダーは全部で19種類用意されています
PowerPoint自体には、プレースホルダーは31種類の組み合わせがある、とも言われています
テキストのプレースホルダーを編集する場合には、
from pptx import Presentation
prs=Presentation()
#1ページ目(「タイトル スライド」のレイアウトを指定)
slide_layout_0 = prs.slide_layouts[0]
slide_1 = prs.slides.add_slide(slide_layout_0)
#テキストの編集
title=slide_1.placeholders[0]
title.text="タイトルの編集"
subtitle=slide_1.placeholders
subtitle.text="サブタイトル"
#PowerPointを保存
prs.save("powerpnt.pptx")
プレースホルダーの数値は以下のように設定されています
テキストは当然ですが、表や画像、図形用のプレースホルダーも用意されています
既存のプレゼンテーションを読み込む
既存のプレゼンテーションを読み込む場合には、
from pptx import Presentation
prs=Presentation('.pptx')
上記のように引数を、既存のパワーポイントファイルのパス名で指定することで、読み込むことができます
既存のスライドを読み込む
既存のスライドを読み込む場合には、
from pptx import Presentation
prs=Presentation('.pptx')
#*には0からの数値を入力
prs.slides[*]
と指定することで既存のスライドを読み込むことができます
さらにテキストを編集する場合には、
from pptx import Presentation
prs=Presentation('.pptx')
#1ページ目(「タイトル スライド」のレイアウトを指定)
slide_layout_0 = prs.slide_layouts[0]
slide_1 = prs.slides.add_slide(slide_layout_0)
old_sld0_layout0=prs.slides[0]
#テキストの編集
title=old_sld0_layout0.placeholders[0]
title.text="既存スライドタイトルの編集"
subtitle=slide_1.placeholders
subtitle.text="既存スライド再読み込み"
#PowerPointを保存
prs.save("powerpnt.pptx")
とすることで、既存スライドのテキストを編集することができます
この状態で保存をすると、上書き保存になりますが、上書き保存時にアラートは出ないので、気をつけておく必要があります
これで新規・既存PowerPointファイルにスライドを追加できるようになりました
次回はスライドの編集について深掘りしていきたいと思います
おすすめプログラミングスクール(無料体験あり)