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データを読み込み、PowerPointスライドでグラフを作成する方法

Posted at

データの可視化は、プレゼンテーションの専門性を向上させるための重要な要素の一つです。Pythonを使用してExcelデータを読み込み、PowerPointスライドでグラフを作成することで、グラフ作成のプロセスを大幅に簡略化し、データの正確性とグラフの即時性を確保することができます。Pythonを介することで、データの自動処理とグラフ生成を簡単に実現し、プレゼンテーションの質と効率を向上させることができます。この記事では、Pythonを使用してExcelデータを読み込み、PowerPointプレゼンテーションでグラフを作成する方法、およびExcelのグラフを画像としてスライドに挿入する方法を紹介します。

この記事で紹介する方法では、Spire.Presentation for PythonSpire.XLS for Pythonを使用します。PyPIでインストールできます:pip install Spire.Presentation Spire.XLS

無料ライセンスを申請する

Excelデータを読み込んでPowerPointスライドでグラフを作成する

Excelワークシートのデータを読み込み、そのデータを使ってスライド上にグラフを作成し、軸設定を行うことで、PowerPointでのデータ可視化を実現できます。
操作手順の例:

  1. 必要なモジュールをインポートします。
  2. Presentationインスタンスを作成し、Presentation.SlideSize.Typeプロパティを使用してスライドサイズを設定します。
  3. Workbookインスタンスを作成し、Workbook.LoadFromFile()メソッドでExcelファイルを読み込みます。
  4. ISlide.Shapes.AppendChart()メソッドを使用して、デフォルトのスライドにグラフを作成し、IChart.ChartData.Clear(0, 0, 5, 5)メソッドでサンプルデータをクリアします。
  5. Worksheet.AllocatedRange[].Textを使用してヘッダーと列ヘッダーのテキストを読み取り、IChart.ChartData[].Textプロパティでグラフデータのヘッダーと列ヘッダーとして設定します。
  6. ワークシートのデータ行とデータ列をループし、Worksheet.AllocatedRange[].NumberValueプロパティでデータを読み取り、IChart.ChartData[].NumberValueで対応するセルのデータとして設定します。
  7. IChart.ChartTitleプロパティを使用してグラフのタイトルを設定します。
  8. IChart.Series.SeriesLabelおよびIChart.Categories.CategoryLabelsを使用して、グラフの系列とカテゴリの対応するセル範囲を設定します。
  9. IChart.Series.get_Item().Valuesで系列に対応するデータセル範囲を設定します。
  10. Worksheet.AllocatedRange[].NumberFormatプロパティでExcelのデータセルの数字フォーマットを読み取り、IChart.PrimaryValueAxis.NumberFormatでグラフの縦軸の数字フォーマットとして設定します。
  11. グラフの重なり具合や間隔の幅を設定します。
  12. Presentation.SaveToFile()でプレゼンテーションを保存します。
  13. リソースを解放します。

コードの例

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グラフをPowerPointプレゼンテーションに挿入し、元のフォーマットと外観を最大限に維持するには、Excelグラフを画像としてスライドに挿入する方法が有効です。
操作の例:

  1. 必要なモジュールをインポートします。
  2. Presentationインスタンスを作成し、スライドサイズを設定します。
  3. Workbookインスタンスを作成し、Workbook.LoadFromFile()メソッドでExcelファイルを読み込みます。
  4. Workbook.Worksheets.get_Item()メソッドを使用して、最初のワークシートを取得します。
  5. Workbook.SaveChartAsImage(worksheet, 0).ToArray()メソッドで、ワークシートの最初のグラフを配列として保存し、画像ストリームに変換します。
  6. Presentation.Images.AppendStream()メソッドで画像ストリームをプレゼンテーションに埋め込みます。
  7. ISlide.Shapes.AppendEmbedImageByImageData()メソッドで画像をスライドに挿入します。
  8. Presentation.SaveToFile()メソッドでプレゼンテーションを保存します。
  9. リソースを解放します。

コードの例

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()

結果のプレゼンテーション
Excelのグラフを画像としてPowerPointスライドに挿入

この記事では、Pythonを使用してExcelデータを読み込み、PowerPointプレゼンテーションでグラフを作成する方法、およびExcelのグラフを画像としてスライドに挿入する方法を紹介しました。

さらに多くのプレゼンテーション処理のヒントについては、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?