
PowerPoint のスライドに含まれる表を、集計やデータ分析、別の資料の作成に利用したい場合があります。表の数が多いと、セルの内容を手作業でコピーするだけでも時間がかかります。
この記事では、Spire.Presentation for Python を使用して PowerPoint ファイルから表のデータを読み取り、テキストファイルまたは Excel ファイルに保存する方法を紹介します。
Excel への保存には、Spire.XLS for Python も使用します。
目次
- PowerPoint の表を抽出するための Python ライブラリ
- PowerPoint の表をテキストファイルに保存する
- PowerPoint の表を Excel ファイルに保存する
- まとめ
- よくある質問
1. PowerPoint の表を抽出するための Python ライブラリ
Spire.Presentation for Python は、PowerPoint ファイルの作成、編集、変換、コンテンツの抽出などに対応したライブラリです。スライド内の図形を調べることで、表を表す ITable オブジェクトを取得できます。
また、Spire.XLS for Python を組み合わせると、抽出した表のデータを Excel ワークシートに書き込むことができます。
まず、以下のコマンドで必要なライブラリをインストールします。
pip install spire.presentation spire.xls
テキストファイルに保存する場合は、spire.presentation のみ必要です。Excel に保存する場合は、両方のライブラリをインストールしてください。
2. PowerPoint の表をテキストファイルに保存する
この例では、PowerPoint ファイルのすべてのスライドを調べ、見つかった表をそれぞれ個別のテキストファイルに保存します。
セルの値はタブ文字で区切り、表の行ごとに改行します。
操作手順
Presentationオブジェクトを作成し、PowerPoint ファイルを読み込みます。- 各スライドとその中の図形を順に処理します。
- 図形が
ITableオブジェクトであるかどうかを確認します。 - 表の各行とセルを走査し、セルのテキストを取得します。
- 表ごとにテキストファイルを作成し、UTF-8 で保存します。
コード例
from pathlib import Path
from spire.presentation import *
# Presentation オブジェクトを作成
presentation = Presentation()
# PowerPoint ファイルを読み込む
presentation.LoadFromFile("input.pptx")
# 出力フォルダーを作成
output_dir = Path("output/Tables")
output_dir.mkdir(parents=True, exist_ok=True)
# 抽出した表のデータを格納するリスト
tables = []
# すべてのスライドを順に処理
for slide in presentation.Slides:
# スライド内の図形を順に処理
for shape in slide.Shapes:
# 図形が表であるかどうかを確認
if isinstance(shape, ITable):
table_data = ""
# 表の各行を順に処理
for row in shape.TableRows:
row_data = ""
# 行内の各セルを順に処理
for i in range(row.Count):
# セルのテキストを取得
cell_value = row[i].TextFrame.Text
# セルの値をタブで区切る
row_data += (
cell_value + "\t"
if i < row.Count - 1
else cell_value
)
# 行の末尾に改行を追加
table_data += row_data + "\n"
tables.append(table_data)
# 表ごとにテキストファイルを作成
for index, table in enumerate(tables, start=1):
file_name = output_dir / f"Table-{index}.txt"
# 日本語を正しく保存できるよう UTF-8 を指定
with open(file_name, "w", encoding="utf-8") as f:
f.write(table)
# リソースを解放
presentation.Dispose()
出力結果
たとえば、プレゼンテーションに 3 つの表が含まれている場合、output/Tables フォルダーに以下のファイルが作成されます。各ファイルには、対応する表のセルのテキストがタブ区切りで保存されます。

3. PowerPoint の表を Excel ファイルに保存する
表のデータを Excel で集計・編集したい場合は、Spire.XLS for Python を使用してワークシートに書き込むことができます。
以下の例では、プレゼンテーション内の表を 1 つずつ別のワークシートに保存します。
操作手順
Presentationオブジェクトを作成し、PowerPoint ファイルを読み込みます。Workbookオブジェクトを作成し、既定のワークシートを削除します。- スライド内の図形から
ITableオブジェクトを取得します。 - 表ごとにワークシートを追加し、各セルのテキストを書き込みます。
- 行の高さと列の幅を自動調整し、Excel ファイルを保存します。
コード例
from pathlib import Path
from spire.presentation import *
from spire.xls import *
# Presentation オブジェクトを作成
presentation = Presentation()
# PowerPoint ファイルを読み込む
presentation.LoadFromFile("input.pptx")
# Excel ブックを作成し、既定のワークシートを削除
workbook = Workbook()
workbook.Worksheets.Clear()
# 表を格納するリスト
tables = []
# すべてのスライドを順に処理
for slide in presentation.Slides:
# スライド内の図形を順に処理
for shape in slide.Shapes:
# 図形が表であるかどうかを確認
if isinstance(shape, ITable):
tables.append(shape)
# 表が見つかった場合に Excel ファイルを作成
if tables:
# 表ごとにワークシートを作成
for t in range(len(tables)):
table = tables[t]
sheet = workbook.Worksheets.Add(f"Table-{t + 1}")
# 表の各行を順に処理
for i in range(table.TableRows.Count):
row = table.TableRows[i]
# 行内の各セルを順に処理
for j in range(row.Count):
# セルのテキストを Excel に書き込む
sheet.Range[i + 1, j + 1].Value = row[j].TextFrame.Text
# 列の幅と行の高さを自動調整
sheet.AllocatedRange.AutoFitColumns()
sheet.AllocatedRange.AutoFitRows()
# 出力フォルダーを作成
Path("output").mkdir(parents=True, exist_ok=True)
# Excel ファイルを保存
workbook.SaveToFile(
"output/PresentationTables.xlsx",
FileFormat.Version2016
)
print("表を Excel ファイルに保存しました。")
else:
print("PowerPoint ファイルに表が見つかりませんでした。")
# リソースを解放
presentation.Dispose()
workbook.Dispose()
出力結果
output フォルダーに PresentationTables.xlsx が作成されます。
たとえば、PowerPoint ファイルに 3 つの表がある場合、Excel ブックには Table-1、Table-2、Table-3 が作成され、それぞれに 1 つの表のデータが保存されます。

注意: このコードが書き込むのはセルのテキストです。元の表の色、罫線、フォント、セルの結合などの書式は再現しません。また、数値もテキストとして書き込まれるため、必要に応じて Excel 上で数値に変換してください。
4. まとめ
この記事では、Python で PowerPoint の表を抽出し、テキストファイルと Excel ファイルに保存する方法を紹介しました。
- テキストファイルへの保存は、表の内容をシンプルに取り出したい場合に適しています。
- Excel ファイルへの保存は、抽出後にデータを編集、集計、分析したい場合に便利です。
いずれの方法も、スライド内の図形から ITable オブジェクトを識別し、表の行とセルを順に読み取ります。
5. よくある質問
Q1. PowerPoint ファイルに複数の表がある場合、すべて抽出できますか?
はい。この記事のコードは、すべてのスライドを順に処理し、各スライド内で見つかった表を抽出します。テキストファイルに保存する場合は表ごとに別のファイルを、Excel に保存する場合は表ごとに別のワークシートを作成します。
Q2. 抽出した表の書式も保持されますか?
いいえ。この記事のコードが抽出するのは、表のセルに含まれるテキストです。元の表の背景色、罫線、フォント、セルの結合などは出力先に再現されません。
Q3. 画像として挿入された表も抽出できますか?
いいえ。画像内の表は ITable オブジェクトとして認識されないため、この記事のコードでは抽出できません。画像から表の内容を取り出すには、OCR などの画像認識技術が必要です。
Q4. Excel に保存した数値をそのまま計算に使用できますか?
コードではセルの内容をテキストとして書き込むため、数値も文字列として保存されます。Excel の数式や集計で数値として使用したい場合は、出力後に数値へ変換してください。ただし、00123 のように先頭のゼロを保持したいデータは、文字列のまま扱う必要があります。
無料ライセンスを取得する
Spire.Presentation for Python の機能を評価制限なしで体験したい場合は、30 日間無料トライアルライセンス を申請できます。






