python-pptxを使えば、表内のテキスト(文字列)を2重ループにしなくても取得できることをご紹介しました。
表内文字列をただ取得するだけなら、この方法が簡単ですけれど、PythonからPowerPointファイルを操作する場合、1行ずつリストにしたいというケースが多そうに感じます。
表を1行ずつリストにするサンプル
Cドライブtempフォルダーに存在するfoo.pptxの、先頭スライドの2つ目の図形に表が存在するとき、以下のスクリプトで、1行ずつをリストとして取得できることを確認できます。
prs = pptx.Presentation(r'C:\temp\foo.pptx')
tbl = prs.slides[0].shapes[1].table
values = []
for cell in row.cells:
values.append(cell.text)
print(values)
values = [ cell.text for cell in row.cells ]
print(values)
のように、よりシンプルに書けます。
サンプルスクリプトで行っている処理
Tableオブジェクトのrows属性で、表内のすべての行を表す_RowCollectionオブジェクトを取得できます。
for row in tbl.rows:
for文で、_RowCollectionオブジェクトから、各行を表す_Rowオブジェクトを順番に取得して、変数rowに格納します。
for row in tbl.rows:
取得した_Rowオブジェクトのcells属性で、行内のすべてのセルを表す_CellCollectionオブジェクトを取得して、
for cell in row.cells:
_CellCollectionオブジェクトから、各セルを表す_Cellオブジェクトを取得して、変数cellに格納します。
for cell in row.cells:
append()で、リストvaluesに、
values.append(cell.text)
_Cellオブジェクトのtext属性で取得したセル内の文字列を追加しています。
values.append(cell.text)
最終更新日時:2019-11-07 03:06
- Newer:IPythonの%whosが変数を確認するのに便利
- Older:Word VBAで表の列を取得する
Home » Python » python-pptxの使い方 » python-pptxで表のデータを1行ずつリストに