Pythonでpptxファイルに追加したテーブルへテキストを入力する
今回はPythonでパワーポイントファイル(pptx)に追加したテーブルへテキストを入力していきます。更に追加したテキストをテーブルの左寄せ、中央揃え、右寄せに指定していきます。ライブラリとして、python-pptxを使用します。テーブルへ自由にテキストを入力して資料作成を自動化していきましょう。
例えばこんな方にお薦め
- 最近Pythonを使い始めて、どんなことができるか試してみたい
- 写真やグラフをパワポで見やすい形で整理しておきたい
- パワポで定型的で定期的な報告資料を求められてしまった、そして資料作成というルーチン作業が増えてしまった
前準備として、python-pptxライブラリのインストールを済ませておきます。説明には下記のコードを使います。
今回のコード
import pptx from pptx.util import Inches from pptx.enum.text import PP_ALIGN import os cd = os.getcwd() prs = pptx.Presentation() slide = prs.slides.add_slide(prs.slide_layouts[6]) row_num = 2 col_num = 3 left = Inches(1) top = Inches(1) width = Inches(7) height = Inches(1) table = slide.shapes.add_table(row_num, col_num, left, top, width, height).table table.cell(0, 0).text = str("Hello") table.cell(0, 1).text = str("world") table.cell(1, 0).text = str("左寄せ") table.cell(1, 1).text = str("中央揃え") table.cell(1, 2).text = str("右寄せ") table.cell(1, 0).text_frame.paragraphs[0].alignment = PP_ALIGN.LEFT table.cell(1, 1).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER table.cell(1, 2).text_frame.paragraphs[0].alignment = PP_ALIGN.RIGHT prs.save(cd + '/test.pptx')
上記のコードを実行すると、.pyファイルと同じディレクトリに"test.pptx" というパワポファイルができています。
ファイルを開くと次のようなレイアウトのファイルができています。2行3列のテーブルの中に、それぞれテキストが入力されています。
コードの解説
それではコードの解説をしていきます。
import pptx
pptxモジュールをインポートします。パワポを操作するのに使用します。
from pptx.util import Inches
Inchesモジュールをインポートします。パワポ内の長さを扱うのに使用します。
from pptx.enum.text import PP_ALIGN
テーブル内のテキストの位置指定に使用します。
import os
osモジュールをインポートします。現在のディレクトリを取得するのに使用します。
cd = os.getcwd()
cd変数に現在のディレクトリを格納します。
prs = pptx.Presentation()
pptx.Presentation() をprsという変数で表します。以降、毎回pptx.Presentation と記述しなくてもprsと書いて省略することができます。
slide = prs.slides.add_slide(prs.slide_layouts[6])
全行で記述したパワポ prs にスライドを追加します。また、引数でスライドのレイアウトを指定しています。今回は白紙のレイアウト6を選択しています。レイアウトの解説についてはこちら(Pythonでpptxファイルを作成する方法)を参照してください。
row_num = 2
テーブルの行数を指定します。ここでは2行としています。
col_num = 3
テーブルの列数を指定します。ここでは3列としています。
left = Inches(1)
テーブルの左端の位置を指定します。スライドの左からの距離を決めます。ここでは1インチとしています。
top = Inches(1)
テーブルの上端の位置を指定します。スライドの上からの距離を決めます。ここでは1インチとしています。
width = Inches(7)
テーブル全体の幅を指定します。ここでは7インチとしています。1列の幅はこの幅を列数で割った値になります。
height = Inches(1)
テーブル全体の高さを指定します。ここでは1インチとしています。1行の高さはこの高さを行数で割った値になります。
各変数にテーブルに使用する値を格納します。このとき、長さについての数値はInches()関数を使って入力します。
table = slide.shapes.add_table(row_num, col_num, left, top, width, height).table
作成したslide にテーブルを追加します。add_table() の引数に、設定したテーブルの値を入力しています。
table.cell(0, 0).text = str("Hellow")
作成したテーブルの0行0列の位置に"Hellow" というテキストを入力します。テーブルは左上を(0, 0) とした座標で表します。
table.cell(0, 1).text = str("world")
作成したテーブルの0行1列の位置に"world" というテキストを入力します。
table.cell(1, 0).text = str("左寄せ")
作成したテーブルの1行0列の位置に"左寄せ" というテキストを入力します。
table.cell(1, 1).text = str("中央揃え")
作成したテーブルの1行1列の位置に"中央揃え" というテキストを入力します。
table.cell(1, 1).text = str("右寄せ")
作成したテーブルの1行2列の位置に"右寄せ" というテキストを入力します。
table.cell(1, 0).text_frame.paragraphs[0].alignment = PP_ALIGN.LEFT
テーブル1行0列の位置に入力した"左寄せ" のテキストを左寄せにします。
table.cell(1, 1).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER
テーブル1行1列の位置に入力した"中央揃え" のテキストを中央揃えにします。
table.cell(1, 2).text_frame.paragraphs[0].alignment = PP_ALIGN.RIGHT
テーブル1行1列の位置に入力した”右寄せ" のテキストを右寄せにします。
prs.save(cd + '/test.pptx')
prs.save() でこれまでのprsへの作業内容を保存します。開いてみると、レイアウト0のスライドを持つパワポファイルtest.pptx が確かに作成されていることがわかります。テーブルの各位置に入力されているテキストを確認してみてください。また、"左揃え", "中央揃え" ,"右揃え"の各テキストのテーブル内での位置が変更されていることもわかると思います。
まとめ
今回は、Pythonを使ってパワポファイルに追加したテーブルにテキストを入力し、更にテーブル内での位置を指定してみました。次回はテーブルの幅や高さ調整をしていきたいと思います。