0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでPowerPointプレゼンテーションから表を抽出する方法

Posted at

PowerPointは広く使用されているプレゼンテーションツールであり、さまざまなデータレポートや分析結果の表示に利用されます。その中で、表はデータの関係を直感的かつ構造的に説明するための優れた方法です。しかし、データ分析、ドキュメントのアーカイブ、またはクロスプラットフォームでの共有の場面では、スライドの表機能が十分でないことがあります。このような場合、表を抽出して他のファイルに書き出す方が効率的です。表の内容をテキストやExcel形式に変換することで、データの迅速な流通と理解が促進され、自動化処理やさらなるデータマイニングにも便利です。Pythonを使用すれば、PowerPointプレゼンテーションから表を効率的かつ正確に抽出し、自動化も実現できます。本記事では、Pythonを使用してPowerPointスライドから表を抽出し、表データをテキストファイルやExcelファイルに書き出す方法を紹介します。

この記事で使用する表抽出方法は、Spire.Presentation for Pythonに基づいています。PyPIでインストール:pip install Spire.Presentation

無料ライセンスの申請はこちら

PythonでPowerPointプレゼンテーションから表を抽出し、テキストファイルに書き出す

このライブラリのITableクラスは、プレゼンテーション内の表を表します。プレゼンテーション内のスライドを遍歴し、スライド内のすべてのコンテンツオブジェクト(IShapeインスタンス)を遍歴して、それがITableインスタンスかどうかを判断することで、すべての表を取得できます。表を取得した後、ITable.TableRow[].TextFrame.Valueプロパティを使用してセルデータを取得し、表を抽出します。以下は操作手順です:

  1. 必要なモジュールをインポートします。
  2. Presentationインスタンスを作成し、Presentation.LoadFromFile()メソッドを使用してPowerPointファイルを読み込みます。
  3. スライドを遍歴し、スライド内のコンテンツオブジェクトを遍歴して、それがITableインスタンスかどうかを判断します。
  4. ITableインスタンス内の行およびセルを遍歴し、TableRow[].TextFrame.Valueを使用してセルデータを取得します。
  5. セルデータを使用して文字列を構築し、テキストファイルに書き出します。
  6. リソースを解放します。

コード例

from spire.presentation import *
from spire.presentation.common import *

# Presentation のインスタンスを作成
presentation = Presentation()

# PowerPoint ファイルを読み込む
presentation.LoadFromFile("サンプル.pptx")

tables = []
# すべてのスライドを反復処理
for slide in presentation.Slides:
    # すべてのシェイプを反復処理
    for shape in slide.Shapes:
        # シェイプがテーブルかどうかを確認
        if isinstance(shape, ITable):
            tableData = ""
            # すべての行を反復処理
            for row in shape.TableRows:
                rowData = ""
                # 行内のすべてのセルを反復処理
                for i in range(0, row.Count):
                    # セルの値を取得
                    cellValue = row[i].TextFrame.Text
                    rowData += (cellValue + "\t" if i < row.Count - 1 else cellValue)
                tableData += (rowData + "\n")
            tables.append(tableData)

# テーブルをテキストファイルに書き込む
for idx, table in enumerate(tables, start=1):
    fileName = f"output/Tables/Table-{idx}.txt"
    with open(fileName, "w") as f:
        f.write(table)

presentation.Dispose()

結果
PythonでPowerPointプレゼンテーションから表を抽出しテキストファイルに書き出す

PythonでPowerPointプレゼンテーションから表を抽出し、Excelワークシートに書き出す

抽出した表データをテキストファイルに書き出すだけでなく、Spire.XLS for Python(PyPIでインストール:pip install Spire.XLS)を使用してデータをExcelワークシートに書き出し、他の形式設定やファイル変換を行うこともできます。以下は操作手順です:

  1. 必要なモジュールをインポートします。
  2. Presentationインスタンスを作成し、Presentation.LoadFromFile()メソッドを使用してPowerPointファイルを読み込みます。
  3. Workbookオブジェクトを作成して新しいExcelワークブックを作成し、Workbook.Worksheets.Clear()メソッドを使用してワークブックのデフォルトワークシートをクリアします。
  4. スライドを遍歴し、スライド内のコンテンツオブジェクトを遍歴して、それがITableインスタンスかどうかを判断します。ITableインスタンスをリストに追加します。
  5. リスト内のITableインスタンスを遍歴し、Workbook.Worksheets.Add()メソッドを使用して各ITableインスタンスのためにワークシートを作成します。
  6. ITableインスタンス内の行およびセルを遍歴し、TableRow[].TextFrame.Valueを使用してセルデータを取得し、Worksheet.Range[].Valueプロパティを使用してデータを対応するセルに書き出します。
  7. ワークシートの形式設定を行います。
  8. Excelワークブックを保存するか、他の形式のファイルに変換します。
  9. リソースを解放します。

コード例

from spire.presentation import *
from spire.presentation.common import *
from spire.xls import *
from spire.xls.common import *

# Presentation のインスタンスを作成
presentation = Presentation()

# PowerPoint ファイルを読み込む
presentation.LoadFromFile("サンプル.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)

# すべてのテーブルを反復処理
for t in range(len(tables)):
    table = tables[t]
    sheet = workbook.Worksheets.Add(f"Sheet-{t+1}")
    for i in range(0, table.TableRows.Count):
        row = table.TableRows[i]
        for j in range(0, row.Count):
            sheet.Range[i + 1, j + 1].Value = row[j].TextFrame.Text
    # 行と列を自動調整
    sheet.AllocatedRange.Style.Font.FontName = "Yu Gothic Medium"
    sheet.AllocatedRange.Style.Font.Size = 12.0
    sheet.AllocatedRange.AutoFitColumns()
    sheet.AllocatedRange.AutoFitRows()

# Excel ファイルを保存
workbook.SaveToFile("output/PresentationTables.xlsx", FileFormat.Version2016)

presentation.Dispose()
workbook.Dispose()

結果
PythonでPPTの表を抽出しExcelワークシートに書き出す

この記事では、Pythonを使用してPowerPointプレゼンテーションから表データを抽出し、テキストファイルまたはExcelワークブックに書き出す方法を紹介しました。

詳細なPowerPointプレゼンテーション処理のテクニックについては、Spire.Presentation for Pythonのチュートリアルをご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?