チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Python»Spire.Doc for Python
2026-10-27

Python で PowerPoint の表を抽出する:テキスト・Excel に保存

Python で PowerPoint の表を抽出する

PowerPoint のスライドに含まれる表を、集計やデータ分析、別の資料の作成に利用したい場合があります。表の数が多いと、セルの内容を手作業でコピーするだけでも時間がかかります。

この記事では、Spire.Presentation for Python を使用して PowerPoint ファイルから表のデータを読み取り、テキストファイルまたは Excel ファイルに保存する方法を紹介します。

Excel への保存には、Spire.XLS for Python も使用します。

目次

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 ファイルのすべてのスライドを調べ、見つかった表をそれぞれ個別のテキストファイルに保存します。

セルの値はタブ文字で区切り、表の行ごとに改行します。

操作手順

  1. Presentation オブジェクトを作成し、PowerPoint ファイルを読み込みます。
  2. 各スライドとその中の図形を順に処理します。
  3. 図形が ITable オブジェクトであるかどうかを確認します。
  4. 表の各行とセルを走査し、セルのテキストを取得します。
  5. 表ごとにテキストファイルを作成し、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 フォルダーに以下のファイルが作成されます。各ファイルには、対応する表のセルのテキストがタブ区切りで保存されます。

PowerPoint の表をテキストファイルに保存する

3. PowerPoint の表を Excel ファイルに保存する

表のデータを Excel で集計・編集したい場合は、Spire.XLS for Python を使用してワークシートに書き込むことができます。

以下の例では、プレゼンテーション内の表を 1 つずつ別のワークシートに保存します。

操作手順

  1. Presentation オブジェクトを作成し、PowerPoint ファイルを読み込みます。
  2. Workbook オブジェクトを作成し、既定のワークシートを削除します。
  3. スライド内の図形から ITable オブジェクトを取得します。
  4. 表ごとにワークシートを追加し、各セルのテキストを書き込みます。
  5. 行の高さと列の幅を自動調整し、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 つの表のデータが保存されます。

PowerPoint の表を Excel ファイルに保存する

注意: このコードが書き込むのはセルのテキストです。元の表の色、罫線、フォント、セルの結合などの書式は再現しません。また、数値もテキストとして書き込まれるため、必要に応じて Excel 上で数値に変換してください。

4. まとめ

この記事では、Python で PowerPoint の表を抽出し、テキストファイルと Excel ファイルに保存する方法を紹介しました。

  • テキストファイルへの保存は、表の内容をシンプルに取り出したい場合に適しています。
  • Excel ファイルへの保存は、抽出後にデータを編集、集計、分析したい場合に便利です。

いずれの方法も、スライド内の図形から ITable オブジェクトを識別し、表の行とセルを順に読み取ります。

5. よくある質問

Q1. PowerPoint ファイルに複数の表がある場合、すべて抽出できますか?

はい。この記事のコードは、すべてのスライドを順に処理し、各スライド内で見つかった表を抽出します。テキストファイルに保存する場合は表ごとに別のファイルを、Excel に保存する場合は表ごとに別のワークシートを作成します。

Q2. 抽出した表の書式も保持されますか?

いいえ。この記事のコードが抽出するのは、表のセルに含まれるテキストです。元の表の背景色、罫線、フォント、セルの結合などは出力先に再現されません。

Q3. 画像として挿入された表も抽出できますか?

いいえ。画像内の表は ITable オブジェクトとして認識されないため、この記事のコードでは抽出できません。画像から表の内容を取り出すには、OCR などの画像認識技術が必要です。

Q4. Excel に保存した数値をそのまま計算に使用できますか?

コードではセルの内容をテキストとして書き込むため、数値も文字列として保存されます。Excel の数式や集計で数値として使用したい場合は、出力後に数値へ変換してください。ただし、00123 のように先頭のゼロを保持したいデータは、文字列のまま扱う必要があります。

無料ライセンスを取得する

Spire.Presentation for Python の機能を評価制限なしで体験したい場合は、30 日間無料トライアルライセンス を申請できます。

Read 14 times