Pythonでパワポ資料(スライド)作成を自動化しよう!

この記事ではPythonをの用いて、Microsoft-Officeの「PowerPoint」を自動で生成する内容に関して解説します。

本記事ではプログラムの詳細は割愛しますが、スライドを自動で作成するための大枠が理解できますので、この記事を参考に、プログラムをカスタマイズしてご自身の業務等に活用してみてください。

python-pptxとは

python-pptxとは、プレゼンテーション形式ファイル(.pptx)を作成できるpythonライブラリです。

インストール

pipを用いてインストールできます。

pip install python-pptx

Jupyter Notebookで実行する場合は、先頭に「!」をつけて実行ください。

!pip install python-pptx

python-pptxでパワポスライドを自動で作成してみよう

コードの詳細は割愛しますが、pptxから「Presentation」クラスを読み込み、このクラスから生成されたオブジェクトから、様々なメソッドを適用していきます。

from pptx import Presentation
from pptx.util import Inches, Pt, Cm

import datetime


now = datetime.datetime.now() # 現在時刻の取得
today = now.strftime('%Y年%m月%d日') # 現在時刻を年月曜日で表示

save_name = 'test.pptx' # 保存用のパワポのファイル名
prs = Presentation() # Presentationクラスをインスタンス化

# 1枚目
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Pythonでパワポを作成してみた"
subtitle.text = today

# 2枚目
title_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "目次"
body_shape = slide.placeholders[1]

p = body_shape.text_frame.add_paragraph()
p.text = '1. pythonでパワポを作るために'
p.level = 1
p = body_shape.text_frame.add_paragraph()
p.text = '2. 必要なライブラリのインストール'
p.level = 1
p = body_shape.text_frame.add_paragraph()
p.text = '3. 動作確認'
p.level = 1
p = body_shape.text_frame.add_paragraph()
p.text = '4. まとめ'
p.level = 1

# 3枚目
title_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
title.text = "pythonでパワポを作るために"

body_shape = slide.placeholders[1]
p = body_shape.text_frame.add_paragraph()
p.text = '1. python-pptxを使えば実現可能!'
p.level = 1

# 4枚目
title_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "2. 必要なライブラリのインストール"
body_shape = slide.placeholders[1]
p = body_shape.text_frame.add_paragraph()
p.text = '次のコマンドをターミナルにて実行'
# p.level = 2
p = body_shape.text_frame.add_paragraph()
p.text = 'pip install python-pptx'
p.level = 1

# 5枚目
title_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
title.text = "3. 動作確認"
body_shape = slide.placeholders[1]

p = body_shape.text_frame.add_paragraph()
p.text = "プログラムを動かしてみよう!"
p.level = 1
p.font.bold = True

# 6枚目
title_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "4. まとめ"
body_shape = slide.placeholders[1]
subtitle.text = "python-pptxを使えば、簡単にパワポが作れちゃう!!"

prs.save(save_name)
print("ファイルの書き出し完了しました")

実行すると、「test.pptx」という名称のパワポファイルが作成されます。

(写真は、Mac OS環境のデスクトップに保存された場合の写真)

test.pptxを起動すると、以下のように中身が作成されていることが確認できます。

スライドに画像を差し込む

add_picture()を用いることで、画像をスライドに追加することが出来ます。

add_picture()関数には、3つ引数を渡します。

第一引数には、スライドに表示させたい(埋め込みたい)画像のパスを渡します。

第二引数には、width、第三引数にはheightを渡せます。両方がNoneの場合、そのままの画像サイズが用いられます。

title_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
title.text = "7. 画像を追加する"
# 画像をスライドに追加
img_path = "sample.png"
slide.shapes.add_picture(img_path, Inches(1.5), Inches(2))

prs.save(save_name)
print("ファイルの書き出し完了しました")

Pythonを効率よく学ぶには?

Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。