データの可視化は、プレゼンテーションの専門性を向上させるための重要な要素の一つです。Pythonを使用してExcelデータを読み込み、PowerPointスライドでグラフを作成することで、グラフ作成のプロセスを大幅に簡略化し、データの正確性とグラフの即時性を確保することができます。Pythonを介することで、データの自動処理とグラフ生成を簡単に実現し、プレゼンテーションの質と効率を向上させることができます。この記事では、Pythonを使用してExcelデータを読み込み、PowerPointプレゼンテーションでグラフを作成する方法、およびExcelのグラフを画像としてスライドに挿入する方法を紹介します。
この記事で紹介する方法では、Spire.Presentation for PythonとSpire.XLS for Pythonを使用します。PyPIでインストールできます:pip install Spire.Presentation Spire.XLS
。
Excelデータを読み込んでPowerPointスライドでグラフを作成する
Excelワークシートのデータを読み込み、そのデータを使ってスライド上にグラフを作成し、軸設定を行うことで、PowerPointでのデータ可視化を実現できます。
操作手順の例:
- 必要なモジュールをインポートします。
-
Presentation
インスタンスを作成し、Presentation.SlideSize.Type
プロパティを使用してスライドサイズを設定します。 -
Workbook
インスタンスを作成し、Workbook.LoadFromFile()
メソッドでExcelファイルを読み込みます。 -
ISlide.Shapes.AppendChart()
メソッドを使用して、デフォルトのスライドにグラフを作成し、IChart.ChartData.Clear(0, 0, 5, 5)
メソッドでサンプルデータをクリアします。 -
Worksheet.AllocatedRange[].Text
を使用してヘッダーと列ヘッダーのテキストを読み取り、IChart.ChartData[].Text
プロパティでグラフデータのヘッダーと列ヘッダーとして設定します。 - ワークシートのデータ行とデータ列をループし、
Worksheet.AllocatedRange[].NumberValue
プロパティでデータを読み取り、IChart.ChartData[].NumberValue
で対応するセルのデータとして設定します。 -
IChart.ChartTitle
プロパティを使用してグラフのタイトルを設定します。 -
IChart.Series.SeriesLabel
およびIChart.Categories.CategoryLabels
を使用して、グラフの系列とカテゴリの対応するセル範囲を設定します。 -
IChart.Series.get_Item().Values
で系列に対応するデータセル範囲を設定します。 -
Worksheet.AllocatedRange[].NumberFormat
プロパティでExcelのデータセルの数字フォーマットを読み取り、IChart.PrimaryValueAxis.NumberFormat
でグラフの縦軸の数字フォーマットとして設定します。 - グラフの重なり具合や間隔の幅を設定します。
-
Presentation.SaveToFile()
でプレゼンテーションを保存します。 - リソースを解放します。
コードの例
from spire.presentation import Presentation, FileFormat, SlideSizeType, RectangleF, ChartType, ChartStyle, FillFormatType
from spire.xls import Workbook
# Presentationのインスタンスを作成
presentation = Presentation()
# スライドサイズを設定
presentation.SlideSize.Type = SlideSizeType.Screen16x9
# Workbookのインスタンスを作成
workbook = Workbook()
# Excelファイルをロード
workbook.LoadFromFile("Sample.xlsx")
# 最初のワークシートを取得
sheet = workbook.Worksheets.get_Item(0)
# 最初のスライドにチャートを追加
rect = RectangleF.FromLTRB(50, 100, presentation.SlideSize.Size.Width - 50, presentation.SlideSize.Size.Height - 50)
slide = presentation.Slides.get_Item(0)
chart = slide.Shapes.AppendChart(ChartType.Area, rect)
# デフォルトのダミーデータをクリア
chart.ChartData.Clear(0, 0, 5, 5)
# ワークシートからヘッダー列とヘッダー行をチャートにコピー
for i in range(sheet.AllocatedRange.ColumnCount):
chart.ChartData[0, i].Text = sheet.AllocatedRange[1, i + 1].Text
for j in range(sheet.AllocatedRange.RowCount - 1):
chart.ChartData[j + 1, 0].Text = sheet.AllocatedRange.get_Item(j + 2, 1).Text
# データ行を繰り返し処理
for k in range(sheet.AllocatedRange.RowCount - 1):
# データ列を繰り返し処理
for l in range(sheet.AllocatedRange.ColumnCount - 1):
# チャートデータを設定
chart.ChartData[k + 1, l + 1].NumberValue = sheet.AllocatedRange[k + 2, l + 2].NumberValue
# チャートタイトルを設定
chart.ChartTitle.TextProperties.Text = sheet.Name
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 30
chart.HasTitle = True
# シリーズラベルとカテゴリラベルを設定
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]
chart.Categories.CategoryLabels = chart.ChartData["A2", "A" + str(sheet.AllocatedRange.RowCount)]
# シリーズの値を設定
chart.Series.get_Item(0).Values = chart.ChartData["B2", "B" + str(sheet.AllocatedRange.RowCount)]
chart.Series.get_Item(1).Values = chart.ChartData["C2", "C" + str(sheet.AllocatedRange.RowCount)]
# データ軸の数値形式を設定
chart.PrimaryValueAxis.NumberFormat = sheet.AllocatedRange[2, 2].NumberFormat
# チャートスタイルを設定
chart.ChartStyle = ChartStyle.Style5
# 重なりとギャップ幅を設定
chart.OverLap = 50
chart.GapWidth = 200
# プレゼンテーションを保存
presentation.SaveToFile("output/PresentationChartFromExcelData.pptx", FileFormat.Pptx2019)
presentation.Dispose()
workbook.Dispose()
Excelのグラフを画像としてPowerPointスライドに挿入する
既存のExcelグラフをPowerPointプレゼンテーションに挿入し、元のフォーマットと外観を最大限に維持するには、Excelグラフを画像としてスライドに挿入する方法が有効です。
操作の例:
- 必要なモジュールをインポートします。
-
Presentation
インスタンスを作成し、スライドサイズを設定します。 -
Workbook
インスタンスを作成し、Workbook.LoadFromFile()
メソッドでExcelファイルを読み込みます。 -
Workbook.Worksheets.get_Item()
メソッドを使用して、最初のワークシートを取得します。 -
Workbook.SaveChartAsImage(worksheet, 0).ToArray()
メソッドで、ワークシートの最初のグラフを配列として保存し、画像ストリームに変換します。 -
Presentation.Images.AppendStream()
メソッドで画像ストリームをプレゼンテーションに埋め込みます。 -
ISlide.Shapes.AppendEmbedImageByImageData()
メソッドで画像をスライドに挿入します。 -
Presentation.SaveToFile()
メソッドでプレゼンテーションを保存します。 - リソースを解放します。
コードの例
from spire.presentation import Presentation, FileFormat, SlideSizeType, RectangleF, ShapeType, Stream
from spire.xls import Workbook
# Presentationのインスタンスを作成
presentation = Presentation()
# スライドサイズを設定
presentation.SlideSize.Type = SlideSizeType.Screen16x9
# Workbookのインスタンスを作成
workbook = Workbook()
# Excelファイルをロード
workbook.LoadFromFile("G:/Documents/Sample18.xlsx")
# 最初のワークシートを取得
worksheet = workbook.Worksheets.get_Item(0)
# 最初のワークシートの最初のチャートを画像として保存
imageStream = Stream(workbook.SaveChartAsImage(worksheet, 0).ToArray())
# プレゼンテーションに画像を埋め込む
imageData = presentation.Images.AppendStream(imageStream)
# 最初のスライドを取得
slide = presentation.Slides.get_Item(0)
# スライドに画像シェイプを追加
rect = RectangleF.FromLTRB(50, 100, presentation.SlideSize.Size.Width - 50, presentation.SlideSize.Size.Height - 50)
slide.Shapes.AppendEmbedImageByImageData(ShapeType.Rectangle, imageData, rect)
# プレゼンテーションを保存
presentation.SaveToFile("output/InsertExcelChartToPresentation.pptx", FileFormat.Pptx2019)
presentation.Dispose()
workbook.Dispose()
この記事では、Pythonを使用してExcelデータを読み込み、PowerPointプレゼンテーションでグラフを作成する方法、およびExcelのグラフを画像としてスライドに挿入する方法を紹介しました。
さらに多くのプレゼンテーション処理のヒントについては、Spire.Presentation for Pythonのチュートリアルをご覧ください。