python

【python】Powerpoint(パワーポイント)を操作する【→業務効率UP】

7月 20, 2019

how to control powerpoint by python
プログラム女子
会社のPowerpoint資料の文字だけを取り出したいんだけど...
それなら、pythonを使ってPowerpointの文字列を読み取ることができるよ。さらに、その文字列を使って別のPowerpoint資料を作ることもできるから、今日はその方法を紹介するね。
Tommy

pythonでPowerpoint(パワーポイント)を操作する概要

summary of control powerpoint on python

プレゼン資料などで使われるPowerpointですが、Powerpoint資料の文字列を読み取ってテキストマイニングしたい場合や、あるシステムの処理結果に従ってPowerpoint形式のファイルにアウトプットしたい場合には、パワーポイントをプログラムによって操作する必要があります。

この記事では、pythonを使ったPowerpointファイルの作成方法と、Powerpointファイルからのデータ読み取る方法を説明します。

pythonでPowerpoint(パワーポイント)を操作する前提の環境

environment of control powerpoint on python

Powerpoint(パワーポイント)を操作する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

オススメ
how to check version in python
【python】バージョン確認の方法【→プログラミング初心者向け】

続きを見る

レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

オススメ
how to programming on rental server
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】

続きを見る

pythonでPowerpoint(パワーポイント)を操作するサンプルプログラム

sample program of control powerpoint on python

パワーポイントを操作する為のライブラリのインポート

ここでは、パワーポイント操作するためのライブラリを読み込みます。

#ppt library
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches

パワーポイントファイルを作成する

まずは、パワーポイントファイルを作成し、その中にタイトルとサブタイトルを付け、さらに簡単なチャートデータを付ける関数を定義します。

サンプルプログラム中のコメントにもあるように、Powerpoint操作用のインスタンスを作って、各種スライドの設定をしていきます。

最終的には、save()でファイルを保存すると、Powerpointファイルが作成できます。

def create_pptx(file_name):

	# インスタンスを生成する
	prs = 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 = "Hello, World!"

	#スライドのサブタイトル
	subtitle.text = "python-pptx was here!"

	#スライドを生成し、スライド2枚目を追加する
	title_slide_layout = prs.slide_layouts[1]
	slide = prs.slides.add_slide(title_slide_layout)

	# チャートデータの定義する
	chart_data = ChartData()
	chart_data.categories = ['East', 'West', 'Midwest']
	chart_data.add_series('Series 1', (19.2, 21.4, 16.7))

	# チャートをスライドに追加する
	x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
	slide.shapes.add_chart(
		XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
	)

	# ファイルを保存する
	prs.save(file_name)

パワーポイントファイルのデータを読み込む

次に、先ほど作成したパワーポイントファイルに記載されているテキストデータを読み取る関数を定義します。

下のサンプルプログラム中のコメントにもあるように、先程と同様に、Powerpoint操作用のインスタンスを作ります。

Powerpointのファイルは「1ファイル中のすべてのスライド」、「1スライドあたりのすべてのオブジェクト」、「1テキストオブジェクトあたりのテキスト」という階層になっているため、その順番でfor文を回して探索しています。

プログラム中のshapeは、スライドに配置されているオブジェクトを指しています。shapeのうち、テキストボックスを見つけたら、テキストボックスの中身をPrint文で表示するというプログラムになっています。

# パワーポイントを読み込む
def read_pptx(file_name):

	# インスタンスを生成する
	prs = Presentation(file_name)

	text_runs = []
	# スライド単位のループ
	for slide in prs.slides:
		# 1スライド当たりの単位図形のループ
		for shape in slide.shapes:
			# テキストフレームではない場合はスルーする
			if not shape.has_text_frame:
				continue
			# テキストフレーム内のグラフを探索する
			for paragraph in shape.text_frame.paragraphs:
				# グラフ内の走査を探索する
				for run in paragraph.runs:
					# テキストを表示する
					print(run.text)

定義した関数の実行

最後に、上記で定義した2つの関数の呼び出しを行います。

下の例では、Powerpointファイルを読み取る方の関数を実行しています。Powerpointファイル作成の関数の呼び出しはコメントアウトしています。

if __name__ == '__main__':
	#create_pptx('test.pptx')
	read_pptx('test.pptx')

pythonで行うその他のofficeの操作方法

how to control other office file on python

officeには、それぞれ異なる操作方法があります。

下記の記事では、普段の業務で使える、office(パワーポイント、エクセル、ワード)のpythonのプログラムによる操作方法を説明しています。

officeそれぞれの操作方法を、下記の記事を参考に、ご自身のプログラムを作成してみてください。

オススメ
how to control 3 office software by python
【python】オフィス3つの操作方法【→業務効率UP】

続きを見る

pythonで業務効率化するその他の方法

other way of business efficiency by python

この記事では、pythonを使ったPowerpointファイルの作成方法と、Powerpointファイルからのデータ読み取る方法を説明しました。Powerpoint以外にもpythonには、業務効率化できる手段がたくさんあります。

下記の記事に、普段オフィス環境で使われるツールを使って業務効率化できる方法をまとめていますので、ぜひ合わせて読んで取り組んでみてください。

オススメ
8 ways for business efficiency by python
【python】業務効率化の方法8選【→周りを出し抜く自動化】

続きを見る

-python
-

© 2020 Tommy's blog Powered by AFFINGER5