PythonでExcelファイルのチャートを画像として保存する方法

Excelワークブックは、強力なデータ処理と分析ツールとして、さまざまな分野で広く使用されています。データを整理し計算するだけでなく、ユーザーが視覚的にデータの洞察と傾向を示すためのカラフルなチャートを作成することもできます。しかし、レポート作成、ウェブコンテンツ制作、データ分析結果の共有の際に、Excelファイル全体を直接埋め込むのは便利ではなく、受信者のソフトウェア互換性の問題に制限されることがあります。Excelファイルのチャートを画像形式（PNG、JPEGなど）で保存することで、これらの問題を解決できます。チャートの表示の一貫性をクロスプラットフォームで確保でき、PPT、ドキュメント、ウェブページに簡単に挿入できるだけでなく、ファイルサイズを減らし、オンライン伝送と読み込み速度を向上させることができます。この記事では、**Pythonを使用してExcelファイルからチャートを自動的に抽出し、画像として保存する方法**について詳しく説明します。

- **[PythonでExcelファイルのチャートを画像として保存する方法](#pythonでexcelファイルのチャートを画像として保存する方法)**
- **[PythonでExcelのチャートシートを画像として保存する方法](#pythonでexcelのチャートシートを画像として保存する方法)**

この記事で使用する方法は、[Spire.XLS for Python](https://www.e-iceblue.com/Download/Spire-XLS-Python.html)に基づいています。PyPI：`pip install Spire.XLS`

[無料ライセンスの申請](https://www.e-iceblue.com/TemLicense.html)

## PythonでExcelファイルのチャートを画像として保存する方法
このライブラリの`Workbook.SaveChartAsImage()`メソッドと`Workbook.SaveChartAsEmfImage()`メソッドは、画像として保存し、EMF画像ストリームを保存することができます。その後、画像ストリームをファイルに保存することで、チャートを抽出して画像として保存する操作を実現できます。
以下は操作手順です：
1. 必要なモジュールをインポートします。
2. `Workbook`オブジェクトを作成し、`Workbook.LoadFromFile()`メソッドを使用してExcelファイルを読み込みます。
3. ファイル内のワークシートをループ処理し、`Workbook.Worksheets.get_Item()`メソッドを使用してワークシートを取得します。
4. ワークシート内のチャートをループ処理し、`Workbook.SaveChartAsImage().Save()`メソッドを使用してチャートを画像ファイルに保存します。
5. リソースを解放します。
**コード例**
```python
from spire.xls import *
from spire.xls.common import *

# Workbookインスタンスを作成
workbook = Workbook()

# Excelファイルをロード
workbook.LoadFromFile("Sample.xlsx")

# ファイルのワークシートをループ処理
for i in range(0, workbook.Worksheets.Count):
    # ワークシートを取得
    worksheet = workbook.Worksheets.get_Item(i)
    # ワークシート内のチャートをループ処理
    for j in range(0, worksheet.Charts.Count):
        # チャートを画像として保存
        chartImage = workbook.SaveChartAsImage(worksheet, j).Save(f"output/charts/chart{i+1}_{j+1}.png")

workbook.Dispose()
```

結果
![PythonでExcelファイルのチャートを画像として保存する方法](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/c377e399-62c9-992c-03d1-673103318ced.png)

## PythonでExcelのチャートシートを画像として保存する方法
チャートシート（Chart Sheet）は、Excelワークブック内でチャートを表示するための独立したワークシートタイプで、チャートのみを含みます。`Workbook.GetChartSheetByName()`メソッドを使用してワークシート名で指定されたチャートシートを取得し、`Workbook.SaveChartAsImage(chartSheet: ChartSheet).Save()`メソッドを使用して画像に変換し、保存できます。以下は操作手順です：
1. 必要なモジュールをインポートします。
2. `Workbook`オブジェクトを作成し、`Workbook.LoadFromFile()`メソッドを使用してExcelファイルを読み込みます。
3. `Workbook.GetChartSheetByName()`メソッドを使用して指定されたチャートシートを取得します。
4. `Workbook.SaveChartAsImage().Save()`メソッドを使用してチャートシートを画像として保存します。
5. リソースを解放します。

**コード例**
```python
from spire.xls import *
from spire.xls.common import *

# Workbookインスタンスを作成
workbook = Workbook()

# Excelファイルをロード
workbook.LoadFromFile("Sample.xlsx")

# チャートシートを取得
chartSheet = workbook.GetChartSheetByName("チャート1")

# チャートシートを画像として保存
workbook.SaveChartAsImage(chartSheet).Save("output/charts/chartsheet.png")

workbook.Dispose()
```

結果
![PythonでExcelのチャートシートを画像として保存する方法](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/fde681b4-b60a-1b9d-bbe7-99cff17ab2c3.png)

この記事では、Pythonを使用してExcelワークブック内のチャートをバッチ処理で画像として保存する方法を紹介しました。

その他のExcelファイル操作のコツは、[Spire.XLS for Pythonのチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.XLS-for-Python/Program-Guide/Spire.XLS-for-Python-Program-Guide-Content.html)をご覧ください。