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でExcelファイルからグラフや図形、画像を保存する

Posted at

Excelファイルは、データ分析やプレゼンテーションにおいて重要なツールであり、複雑なグラフや図形などの非構造化データを含むことがあります。これらの視覚的な要素を再利用する必要がある場合、手動で一つ一つ取り出すのは効率が悪く、大規模なファイル処理には対応できません。Pythonを用いた自動化による一括保存は、手作業の制限を克服し、データ管理の標準化を大幅に向上させることができます。定期的に生成される可視化レポートのアーカイブや、部門間協力における要素の再利用、機械学習のトレーニングに必要な画像データセットの作成など、どの場面でも自動化スクリプトが要素の完全性と命名規則を確保します。本記事では、Pythonを使用してExcelファイル内のグラフや図形を画像として保存する方法について説明します。

本記事で使用する方法は、無料のFree Spire.XLS for Pythonライブラリを活用します。PyPI: pip install spire.xls.free

PythonでExcelファイル内のグラフを画像として保存

ライブラリに含まれているWorkbook.SaveChartAsImage()メソッドを使用すると、指定したワークシート内の特定のグラフまたはすべてのグラフを画像ストリームとして保存できます。その後、Stream.Save()メソッドを使用して画像ストリームをファイルとして保存し、Excelのグラフを画像ファイルとしてエクスポートできます。
注意点として、グラフシート(グラフのみが含まれ、セルや他のデータがない特別なワークシート)は画像として保存できないため、別の方法で保存する必要があります。
以下は操作手順の例です:

  1. 必要なモジュールをインポート:Workbook
  2. Workbookオブジェクトを作成し、Workbook.LoadFromFile()でExcelファイルを読み込みます。
  3. ワークブック内のワークシートを巡回し、Workbook.Worksheets.get_Item()メソッドでワークシートを取得します。
  4. Worksheet.Chartsプロパティを使ってワークシート内のすべてのグラフを取得します。
  5. ワークシート内のグラフを巡回し、Workbook.SaveChartAsImage()メソッドでグラフを画像ストリームとして保存します。
  6. Stream.Save()メソッドで画像ストリームをファイルに保存します。
  7. リソースを解放します。

コード例

from spire.xls import Workbook

# Workbookオブジェクトを作成
workbook = Workbook()

# Excelファイルを読み込む
workbook.LoadFromFile("Sample.xlsx")

# Excelファイル内のワークシートを繰り返し処理
for i in range(workbook.Worksheets.Count):
    # ワークシートを取得
    worksheet = workbook.Worksheets.get_Item(i)
    # ワークシート内のグラフを繰り返し処理
    for j in range(worksheet.Charts.Count):
        # グラフを画像として保存
        image = workbook.SaveChartAsImage(worksheet, j)
        # 画像をファイルに保存
        image.Save(f"output/Images/Sheet{i}_Chart{j}.png")

workbook.Dispose()

結果
2025-02-28_171255.png

PythonでExcelファイル内のグラフシートを画像として保存

Workbook.ChartSheetsプロパティを使用してワークブック内のすべてのグラフシートを取得し、Workbook.SaveChartAsImage()メソッドでグラフシート内のグラフを画像ストリームとして保存した後、ファイルとして保存します。
以下は操作手順の例です:

  1. 必要なモジュールをインポート:Workbook
  2. Workbookオブジェクトを作成し、Workbook.LoadFromFile()でExcelファイルを読み込みます。
  3. Workbook.ChartSheetsプロパティを使用してすべてのグラフシートを取得します。
  4. グラフシートを巡回し、Workbook.SaveChartAsImage()メソッドでグラフシート内のグラフを画像ストリームとして保存します。
  5. Stream.Save()メソッドで画像ストリームをファイルに保存します。
  6. リソースを解放します。

コード例

from spire.xls import Workbook, XlsShape

# Workbookオブジェクトを作成
workbook = Workbook()

# Excelファイルを読み込む
workbook.LoadFromFile("Sample.xlsx")

# Excelファイル内のグラフワークシートを繰り返し処理
for i in range(len(workbook.Chartsheets)):
    # グラフワークシートを取得
    sheet = workbook.Chartsheets[i]
    # グラフワークシートを画像ストリームとして保存
    image = workbook.SaveChartAsImage(sheet)
    # 画像ストリームを画像ファイルとして保存
    image.Save(f"output/Images/{sheet.Name}.png")

workbook.Dispose()

結果
2025-02-28_171539.png

PythonでExcelファイル内の図形を画像として保存

Worksheet.PrstGeomShapesプロパティを使用してワークシート内のすべての図形を取得し、各図形をXlsShapeオブジェクトに変換し、XlsShape.SaveToImage()メソッドで画像ストリームとして保存します。その後、画像をファイルとして保存します。
以下は操作手順の例です:

  1. 必要なモジュールをインポート:Workbook
  2. Workbookオブジェクトを作成し、Workbook.LoadFromFile()でExcelファイルを読み込みます。
  3. ワークブック内のワークシートを巡回し、Workbook.Worksheets.get_Item()メソッドでワークシートを取得します。
  4. Worksheet.PrstGeomShapesプロパティでワークシート内のすべての図形を取得します。
  5. 各図形をXlsShapeオブジェクトに変換し、XlsShape.SaveToImage()メソッドで画像ストリームとして保存します。
  6. Stream.Save()メソッドで画像ストリームをファイルに保存します。
  7. リソースを解放します。

コード例

from spire.xls import Workbook, XlsShape

# Workbookオブジェクトを作成
workbook = Workbook()

# Excelファイルを読み込む
workbook.LoadFromFile("Sample.xlsx")

# Excelファイル内のワークシートを繰り返し処理
for i in range(workbook.Worksheets.Count):
    # ワークシートを取得
    worksheet = workbook.Worksheets.get_Item(i)
    # ワークシート内の図形を繰り返し処理
    for j in range(worksheet.PrstGeomShapes.Count):
        # 図形を取得
        shape = worksheet.PrstGeomShapes.get_Item(j)
        # 図形をXlsShapeオブジェクトに変換
        xlsShape = XlsShape(shape)
        # 図形を画像ストリームとして保存
        image = xlsShape.SaveToImage()
        # 画像ストリームをファイルに保存
        image.Save(f"output/Images/Sheet{i}_Shape{j}.png")

workbook.Dispose()

結果
2025-02-28_171757.png

本記事では、Pythonを使用してExcelファイル内のグラフ、図形、およびグラフシートを画像ファイルとして保存する方法について解説しました。

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?