【悩み】
・PythonでPowerPointの編集操作はできる?
・パワーポイントをPythonで操作できるライブラリは?
・PowerPointの分割やあるスライドの削除などの編集操作を自動化したい。
こういった「悩み」に答えます。
【本記事の内容】
① Python向けPowerPointライブラリとは?
② PythonでPowerPointを編集するための準備
③ PythonでPowerPointを編集
本記事に掲載した手順を実践したことで、30分以内でPowerPointの編集関連の操作をPythonで自動化できました。
記事の前半では「Python向けPowerPointライブラリの一覧」と「ライブラリなどのインストール方法」を解説します。
記事の後半では「PowerPointの編集」をPythonで自動化する方法を紹介します。
この記事を読み終えることで、「指定したスライドの削除や結合などのパワーポイントの編集操作を自動化」状態になります。
ちなみに、Pythonを使うことで本記事で紹介すること以外にも様々なPowerPointの操作を自動化できます。以下に実現できる範囲をまとめましたので、良ければアクセスしてみてください。
>> Pythonで実現できるPowerPointの操作一覧
Python向けPowerPointライブラリとは?
以下の記事で「Python向けPowerPointライブラリ」の一覧と概要をご紹介しています。気になる方は、ぜひ読んでみてください。
>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化
以降で、PowerPointの編集操作自動化を実現するための環境準備を説明します。Pythonやライブラリのインストール手順を丁寧に解説します。
PythonでPowerPointを編集するための準備
「PythonでPowerPointを編集するための準備」に関してご紹介します。
【流れ】
手順1:Pythonのインストール
手順2:python-pptxライブラリのインストール
手順3:aspose.slidesライブラリのインストール
手順4:PowerPointのプレースホルダーを理解
上記の流れで説明します。
Pythonのインストール
以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。
>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】
>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照
>> 【環境構築】インストーラーでMacOSにPythonをインストール
python-pptxライブラリのインストール
python-pptxライブラリのインストール手順に関しては、以下の記事の「python-pptxライブラリのインストール」箇所をご覧ください。
>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化
aspose.slidesライブラリのインストール
以下のコマンドを順番に実行して、aspose.slidesライブラリをインストールしましょう。
pip install aspose.slides
pip list
コマンド実行後、「Aspose.Slides (バージョン)」が表示された場合、「正常にaspose.slidesライブラリをインストールできた」と判断できます。
python-pptxライブラリでは、パワーポイントにコメント追加できません。コメント追加したい場合、aspose.slidesライブラリを使います。
PowerPointのプレースホルダーを理解
PowerPointには、「プレースホルダー」という概念があります。詳細に関しては、以下の記事「PowerPointのプレースホルダーを理解」の箇所をご覧ください。
>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化
python-pptxとaspose.slidesでは自動化できる範囲が異なります。用途によってライブラリを使い分けましょう。
PythonでPowerPointを編集
「PythonでPowerPointを編集」に関してご紹介します。
【ご紹介事項】
・パワーポイントの読み込み
・テキスト編集
・テーブル編集
・指定したスライドの削除
・スライドのコピー
・別ファイルのパワーポイントと結合
・コメント付与
以降で、上記の各項目に関して以下のスライド「test.pptx」を用いて説明します。
パワーポイントの読み込み
「パワーポイントを読み込む」プログラムは、以下となります。適宜変更部分は自分用に書き換えてください。
import collections.abc
from pptx import Presentation
# 指定したパワーポイントの読み込み
prs = Presentation('./test.pptx') # 適宜変更
# パワーポイントの枚数を表示
slide_count = len(prs.slides)
print('スライドの枚数:' + str(slide_count) )
上記のプログラムを「python-powerpoint-read.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-read.py」を実行します。
python python-powerpoint-read.py
スライドの枚数:3
コマンド実行後、「スライドの枚数」が表示された場合、正常にパワーポイントを読み込めたと判断できます。
テキスト編集
「スライドに記載されたテキストを編集する」プログラムは、以下となります。適宜変更部分は自分用に書き換えてください。
import collections.abc
from pptx import Presentation
# 指定したパワーポイントの読み込み
prs = Presentation('./test.pptx') # 適宜変更
# 全スライドで繰り返し
for slide in prs.slides:
# スライドに記載されたテキスト情報を確認
for shape in slide.shapes:
if shape.has_text_frame:
if shape.text == '1':
shape.text = '100' # テキストを編集
# 別ファイルに保存
prs.save('edit-text.pptx')
上記のプログラムを「python-powerpoint-text-edit.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-text-edit.py」を実行してください。
python python-powerpoint-text-edit.py
コマンド実行後、以下のスライドが作成されます。
python-pptxライブラリでテキスト編集関連の様々な例が、以下の公式サイトに記載されています。
>> テキスト編集関連のプログラム事例(python-pptx公式サイト)
テーブル編集
「スライドに記載されたテーブル(表)を編集する」プログラムは、以下となります。適宜変更部分は自分用に書き換えてください。
本事例では、以下のPowerPointファイルを利用します。必要であればダウンロードしてください。
import collections.abc
from pptx import Presentation
# 指定したパワーポイントの読み込み
prs = Presentation('./test-table.pptx') # 適宜変更
# 全スライドで繰り返し
for slide in prs.slides:
# スライドに記載されたテーブル情報を確認
for shape in slide.shapes:
if shape.has_table:
# テーブルのカラムごとに繰り返す
for cell in shape.table.iter_cells():
if cell.text == '1':
cell.text = '100' # テーブルの値を編集
# 別ファイルに保存
prs.save('edit-table.pptx')
上記のプログラムを「python-powerpoint-table-edit.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-table-edit.py」を実行してください。
python python-powerpoint-table-edit.py
コマンド実行後、以下のスライドが作成されます。
python-pptxライブラリでテーブル編集関連の様々な例が、以下の公式サイトに記載されています。
>> テーブル(表)編集のプログラム事例(python-pptx公式サイト)
指定したスライドの削除
現時点のpython-pptxでは、指定したスライドを削除する関数は用意されていません。そのため、独自に以下のように実装しましょう。
import collections.abc
from pptx import Presentation
# 指定したスライドを削除する関数
def delete_slide(prs, slide):
id_dict = { slide.id: [i, slide.rId] for i,slide in enumerate(prs.slides._sldIdLst) }
slide_id = slide.slide_id
prs.part.drop_rel(id_dict[slide_id][1])
del prs.slides._sldIdLst[id_dict[slide_id][0]]
# 指定したパワーポイントの読み込み
prs = Presentation('./test.pptx')
print('削除前のスライド枚数:' + str(len(prs.slides)) )
# 指定したページ番号のスライドを削除。以下の場合、2ページ目が削除される。
delete_slide(prs, prs.slides[1])
print('削除後のスライド枚数:' + str(len(prs.slides)) )
# 別ファイルに保存
prs.save('deleted-test.pptx')
上記のプログラムを「python-powerpoint-delete.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-delete.py」を実行してください。
python python-powerpoint-delete.py
削除前のスライド枚数:3
削除後のスライド枚数:2
コマンド実行後、「スライドの枚数が減っていた」場合、正常に指定したスライドを削除できた判断できます。
ちなみに、上記のプログラムは、以下のstack overflowに掲載されていました。
>> python-pptxで指定した番号のスライドを削除するプログラム例
スライドのコピー
python-pptxライブラリでは、「パワーポイントの特定のスライドをコピーし、任意の位置に挿入」といった関数は提供されていません(独自実装が必要)。
しかし、aspose.slidesライブラリを使うと、以下のプログラムで簡単に実現できます。
import aspose.slides as slides
# 指定したパワーポイントの読み込み
with slides.Presentation("./test.pptx") as pres:
# スライドオブジェクトを作成
slds = pres.slides
# 任意の場所に指定したスライドをコピー
slds.insert_clone(2, pres.slides[1])
# 別ファイルとして保存
pres.save("./add-copy-slide.pptx", slides.export.SaveFormat.PPTX)
上記のプログラムを「python-powerpoint-copy.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-copy.py」を実行してください。
python python-powerpoint-copy.py
コマンド実行後、以下のスライドが作成されます。aspose.slidesライブラリの評価版で上記プログラムを実行した場合、背景に透かし文字が自動挿入されます。
aspose.slidesライブラリでパワーポイントのスライドをコピーする様々な例が、以下の公式サイトに記載されています。
>> Clone Slides(aspose.slidesの公式サイト)
別ファイルのパワーポイントと結合
python-pptxライブラリでは、簡単に別ファイルのパワーポイントを1つに結合(マージ)できません(独自実装が必要)。
しかし、aspose.slidesライブラリを使うと、以下のプログラムで簡単に実現できます。
import aspose.slides as slides
# 1つ目のパワーポイントを開く
with slides.Presentation("./test.pptx") as pres1:
# 2つ目のパワーポイントを開く
with slides.Presentation("./test2.pptx") as pres2:
# 2つ目のパワーポイント内にあるスライドを結合
for slide in pres2.slides:
pres1.slides.add_clone(slide)
# 結合したファイルを別ファイルとして保存
pres1.save("combined.pptx", slides.export.SaveFormat.PPTX)
上記のプログラムを「python-powerpoint-merge.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-merge.py」を実行してください。
python python-powerpoint-merge.py
コマンド実行後、以下のスライドが作成されます。
aspose.slidesライブラリでパワーポイントを結合する様々な例が、以下の公式サイトに記載されています。
>> PythonでPowerPointプレゼンテーションをマージ(aspose.slidesの公式サイト)
コメント付与
python-pptxライブラリでは、PowerPointのスライドに対してコメント付与できません。そのため、コメント付与を実現したい場合、aspose.slidesライブラリを使い、以下のプログラムを作成しましょう。
import aspose.slides as slides
import aspose.pydrawing as drawing
import datetime
# 指定したスライドの読み込み
with slides.Presentation('./test.pptx') as presentation:
# コメント付与した人の名前
author = presentation.comment_authors.add_author("Usman", "hero")
# コメントを追加する場所を指定
point = drawing.PointF(0.2, 0.2)
# 指定したスライドにコメントを付与
author.comments.add_comment("テストです。", presentation.slides[0], point, datetime.date.today())
# 別ファイルに保存
presentation.save("ppt-comments.pptx", slides.export.SaveFormat.PPTX)
上記のプログラムを「python-powerpoint-comment.py」というファイル名で保存しましょう。
以下のコマンドを実行し、保存した「python-powerpoint-comment.py」を実行してください。
python python-powerpoint-comment.py
コマンド実行後、以下のスライドが作成されます。
aspose.slidesライブラリでパワーポイントのコメントに関する様々な例が、以下の公式サイトに記載されています。
>> PowerPointのコメントに関する事例集(aspose.slidesの公式サイト)
python-pptxライブラリでできない編集は多々あります。その際は、独自実装またはaspose.slidesライブラリの利用を検討してください。
Pythonを使うことで、PowerPointの新規作成操作を自動化できることを説明しました。このPythonを使うことで、あらゆる業務や作業を自動化できます。
その事例やヒントを知りたい方には、以下の本がオススメです。
ちなみに、上記教材の詳細なレビューに関しては、以下のサイトにまとめています。
【まとめ】PythonでPowerPointの編集操作を自動化
いかがでしたでしょうか?
上記で紹介したpython-pptxライブラリやaspose.slidesライブラリを使うことで、PythonでPowerPointの編集操作を自動化できます。
最後にもう一度内容を確認しましょう。
【おさらい】
・python-pptxでPowerPointの編集の操作をPythonで自動化できる
・python-pptxライブラリとaspose.slidesライブラリを適切に使うこと
・aspose.slidesライブラリは機能が豊富だが、有償ライブラリである
本ブログでは、「業務の時短化に繋がるIT技術」や「クラウドやOSSの学び方」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。
コメント