Python 自動化

【Python】python-pptxでパワポの資料作成を自動化する

この記事は約7分で読めます。

 

こんにちは!今回は、プログラミング初心者向けに『Pythonのpython-pptxの使い方』について解説します。まず、python-pptxはPythonでPowerPointスライドを作成できるライブラリです。このライブラリを使うことで、PowerPointスライドを自動的に作成したり、テキストや画像、チャートなどを簡単に挿入できます。

 

前準備

 

Pythonをインストールしたら、まずpython-pptxをインストールします。コマンドプロンプトで以下のコマンドを入力します。

 

$ pip install python-pptx

 

それでは、Pythonコードを書いていきましょう。ここからは具体的なコード例を交えながら説明していきます。

 

スライド作成

 

# インポート
from pptx import Presentation

 

新規でPowerpointファイルを作成する場合は、以下のように記述します

prs = Presentation()

 

既存のファイルを読み込む場合には、以下のように記述します

prs = Presentation(filepath) # 例:r"C:\Users\~~\sample.pptx"

 

スライドレイアウトの読み込み

 

prs.slide_layoutsはスライドレイアウトをリスト形式で保持しています。スライドレイアウトとは以下の画像のこと。0を指定すると最初のレイアウトを指定することになります。

 

layout = prs.slide_layouts[0]

スクリーンショット 2019-12-17 22.54.17.png

引用:https://qiita.com/woods0918/items/2614d493c7f62080607e

 

レイアウトを指定したら、以下で新規スライドを追加できます

#スライドを追加
slide = prs.slides.add_slide(layout)

 

テキストを追加する

 

テキストを挿入するためには、Presentationオブジェクトを作成し、Slideオブジェクトを追加します。その後、TextFrameオブジェクトを使用して、テキストボックスを作成し、Paragraphオブジェクトを使用して、テキストを追加します。 以下は、テキストを挿入するサンプルコードです。

 

from pptx.util import Cm

# テキストボックスを作成する
text_box = slide.shapes.add_textbox(left=Cm(1), top=Cm(2), width=Cm(4), height=Cm(3))

# Paragraphオブジェクトを作成する
paragraph = text_box.text_frame.add_paragraph()

# テキストを追加する
paragraph.text = "Python-pptxでテキストを挿入する方法"

# フォントを設定する
font = paragraph.font
font.name = "Arial"
font.size = 200000

 

パワポのスライドにテキストを挿入する座標の指定はCmとIncheの2パターンがあります。どちらでもよいと思いますが、座標指定はどちらかに統一しないとスライドに複数のボックスを挿入した場合に位置指定が難しくなるので注意してください。フォントサイズは200000で16pxくらいになります。

 

画像の挿入

 

次に、画像を挿入してみましょう。画像はshapes.add_picture()で挿入できます。実際のコードは以下になります。

 

img_path = r"C:\Users\~~~\○○.jpg"
left = Cm(1)
top = Cm(2)
cx = Cm(4) 
cy = Cm(3)
pic = slide.shapes.add_picture(img_path, left, top,cx, cy)

 

これで、スライドに画像を挿入することができました。img_pathに、画像のファイルパスを指定します。また、leftとtopは、画像を挿入したい位置を指定しています。

 

グラフチャートの挿入

 

次はグラフの挿入方法について紹介します。グラフはshapes.add_chart()で追加することができます

 

from pptx.chart.data import CategoryChartData
from pptx.chart.chart import Chart
from pptx.enum.chart import XL_CHART_TYPE

chart_data = CategoryChartData()
chart_data.categories = ['A', 'B', 'C']
chart_data.add_series('Series 1', (1, 2, 3))

x, y, cx, cy = Cm(5), Cm(5), Cm(6), Cm(4.5)
graphic_frame = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)
chart = graphic_frame.chart

 

XL_CHART_TYPE.COLUMN_CLUSTEREDと指定することで棒グラフを指定しています。この部分の引数を変更することで円グラフや散布図や折れ線グラフなどのよく使うグラフも作成することが可能です。

 

そのほかの種類のグラフ作成や軸の大きさや判例の表示方法などについては下記の記事を参考にしてください

 

関連記事:【Python】python-pptxでパワポにエクセルのグラフを追加する

 

表やテーブルを挿入する

 

次は表を挿入する方法を紹介します。コードは以下になります。

 

rows = 2 #行
cols = 2 #列
left = Cm(6)
top =Cm(4)
width = Cm(6)
height = Cm(4)
table = slide.shapes.add_table(rows, cols, left, top, width, height).table

# 表にテキストを書き込む
table.cell(0, 0).text = 'Header'
table.cell(0, 1).text = 'Header'
table.cell(1, 0).text = 'Value 1'
table.cell(1, 1).text = 'Value 2'

 

まずshapes.add_tableメソッドを利用してテーブルを追加します。そのあと、table.cellメソッドを利用して、各セルにテキストを挿入します。

 

セルの結合マージや色や大きさの変更については下記の記事で紹介しています。

関連記事:python-pptxで挿入するテーブルのテキストの色、大きさ、配置を指定する方法

関連記事:python-pptxで挿入したテーブルのセルを結合する方法

 

図形を挿入する

 

図形を挿入する場合は以下のように記述します。

 

from pptx.enum.shapes import MSO_SHAPE
left = top = width = height = Cm(10)
shape = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE,
left, top, width, height)

 

名前の調べ方は以下の参考にしてください

MSO_AUTO_SHAPE_TYPE — python-pptx 0.6.22 documentation

 

作成したスライドを出力保存する

 

最後に作成したスライドをpptxファイルとして出力して保存します

 

# PowerPointファイルを保存する 
prs.save('sample.pptx')

 

終わり

 

以上が、Pythonのpython-pptxの使い方の解説となります。これらのコードを組み合わせることで、より複雑なスライドの自動生成ができるようになります

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:【Python】python-pptxでパワポの資料作成を自動化する […]

  2. […] 関連記事:【Python】python-pptxでパワポの資料作成を自動化する […]

  3. […] 関連記事:【Python】python-pptxでパワポの資料作成を自動化する […]

  4. […] 関連記事:【Python】python-pptxでパワポの資料作成を自動化する […]

  5. […] 関連記事:【Python】python-pptxでパワポの資料作成を自動化する […]

  6. […] 関連記事:【Python】python-pptxでパワポの資料作成を自動化する […]

  7. […] 関連記事:【Python】python-pptxでパワポの資料作成を自動化する […]

タイトルとURLをコピーしました