Pythonでpptx内のテーブルの幅や高さを変更する方法
今回はPythonでパワーポイントファイル(pptx)に追加したテーブルの幅や高さを変更していきます。ライブラリとして、python-pptxを使用します。テーブルの幅や高さを自由に変更して資料作成を自動化していきましょう。
例えばこんな方にお薦め
- 最近Pythonを使い始めて、どんなことができるか試してみたい
- 写真やグラフをパワポで見やすい形で整理しておきたい
- パワポで定型的で定期的な報告資料を求められてしまった、そして資料作成というルーチン作業が増えてしまった
前準備として、python-pptxライブラリのインストールを済ませておきます。説明には下記のコードを使います。
今回のコード
import pptx from pptx.util import Inches 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.columns[0].width = Inches(1) table.columns[1].width = Inches(2) table.rows[0].height = Inches(1) table.rows[1].height = Inches(3) prs.save(cd + '/test.pptx')
上記のコードを実行すると、.pyファイルと同じディレクトリに"test.pptx" というパワポファイルができています。
ファイルを開くと次のようなレイアウトのファイルができています。2行3列のテーブルができ、それぞれの列、行の幅と高さが変更されています。
コードの解説
それではコードの解説をしていきます。
import pptx
pptxモジュールをインポートします。パワポを操作するのに使用します。
from pptx.util import Inches
Inchesモジュールをインポートします。パワポ内の長さを扱うのに使用します。
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.columns[0].width = Inches(1)
columns[0] の幅を1インチに変更します。
table.columns[1].width = Inches(2)
columns[1] の幅を2インチに変更します。
table.rows[0].height = Inches(1)
rows[0] の高さを1インチに変更します。
table.rows[1].height = Inches(3)
rows[1] の高さを3インチに変更します。
prs.save(cd + '/test.pptx')
prs.save() でこれまでのprsへの作業内容を保存します。開いてみると、columns[0]の幅が1インチ、columns[1]の幅が2インチ、rows[0]の高さが1インチ、rows[1]の高さが3インチ、各列と行の座標は上の図のようになります。ちなみに、今回columns[2]の幅は指定していません。この場合、最初にテーブルを作成した際のテーブル幅7インチを3等分した2.33インチがcolumns[2]の幅となっています。
まとめ
今回は、Pythonを使ってパワポファイルに追加したテーブルの幅と高さを変更してみました。これで、テーブルの行数、列数と幅、高さの調節をできるようになりました。次回はスライド内に写真を貼り付けて行こうと思います。