これまでの仕事で、手動でレポートを書くことが多かったのですが、最近pythonでパワーポイントを作成できることを知ったので、勉強がてら自己紹介PPTXを作成します。
pythonでパワーポイントを作成できると、毎週・毎月報告するようなKPIレポートなどを自動で作成することが可能です。今回はpython-pptx
というライブラリを利用します。
-
python-pptx
-
実行環境
- google cloud上でssh
- Python 2.7.6
pip install でvirtualenv内にライブラリを入れました。
pip install python-pptx
なお、自己紹介は未完成なので更新していきますのであしからず。
注意しているのは以下のような点です。
- ページレイアウトの替え方
- 箇条書きの作り方
- 太字の仕方
- フォントサイズの替え方
今後実装したいのは以下の点。お待ちください。
- 画像挿入
- 表挿入
- 自動でKPIの数値を挿入
- スライドマスタを変更する
from pptx import Presentation
from datetime import datetime
from pptx.util import Pt
today = datetime.today().strftime("%Y%m%d")
prs = Presentation()
# P1: title page
title_slide_layout = prs.slide_layouts[0] # page layout
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Introduce Myself"
subtitle.text = "@ishio"
# P2
bullet_slide_layout = prs.slide_layouts[1] # page layout
slide = prs.slides.add_slide(bullet_slide_layout)
shapes = slide.shapes
title_shape = shapes.title
body_shape = shapes.placeholders[1]
title_shape.text = 'Introduce My Hobby'
title_shape.text_frame.paragraphs[0].font.size = Pt(32) # font size
title_shape.text_frame.paragraphs[0].font.bold = True # font bold
tf = body_shape.text_frame
tf.text = 'Reading books'
tf.paragraphs[0].font.size = Pt(28) # font size
tf.paragraphs[0].font.bold = True # font bold
p = tf.add_paragraph()
p.text = 'Read 57 books in 2017'
p.level = 1 # down the bullet level
p.font.size = Pt(24) # font size
p = tf.add_paragraph()
p.text = 'Try to read 70 books in 2018'
p.level = 1 # down the bullet level
p.font.size = Pt(24) # font size
# This is a space between bullets
p = tf.add_paragraph()
p.font.size = Pt(28) # font size
p = tf.add_paragraph()
p.text = 'Watching and playing football'
tf.paragraphs[4].font.size = Pt(28) # font size
tf.paragraphs[4].font.bold = True # font bold
# This is a space between bullets
p = tf.add_paragraph()
p.text = 'Love Urawa Reds'
p.level = 1
p.font.size = Pt(24) # font size
p = tf.add_paragraph()
p.text = 'Play futsal every weekend to keep myself healthy'
p.level = 1
p.font.size = Pt(24) # font size
prs.save('test_%s.pptx' % today)
作成されたPPTは以下のような感じです。
2018年、よろしくお願いします。