Create Gantt Chart in Excel using Python

タスクのタイムライン上の視覚化は、プロジェクトの管理をより効果的にします。このアーティクルでは、Aspose.Cells for Python via .NETを使用して、PythonでExcelにガントチャートを作成する方法を学びます。数行のコードで、単純なタスクデータをダイナミックでクリーンな視覚的タイムラインに変えることができ、レポート、ダッシュボード、および計画書に最適です。手順を追って進んでいきましょう。

この記事では、以下のトピックについて説明します:

ガントチャートのためのPython Excelライブラリ

Aspose.Cells for Python via .NET は、PythonでExcelファイルを操作するための強力なライブラリです。これを使用すると、プログラム的にスプレッドシートを作成、変更、フォーマットすることができます。ガントチャートのようなチャートも含まれています。

主な機能:

  • Excelのグラフとデータに対する完全な制御。
  • XLSX、XLS、CSV、および PDF のサポート。
  • 大きなファイルでの高いパフォーマンス。
  • リッチチャートのカスタマイズオプション。

始めるには、次のコマンドでライブラリをインストールしてください:

pip install aspose-cells

You may also download it from the releases.

スタックバーチャートを使ったガントチャート

Excelには組み込みのガントチャートタイプはなく、Aspose.Cellsにもありません。しかし、少しのフォーマットを使って積み上げ棒グラフを使用することで、ガントチャートを作成することができます。これは一般的な手法であり、Aspose.Cellsはコードを通じてこれを完全にサポートしています。

Aspose.Cellsでできること

Excelでガントチャートを簡単に自動化するには、以下の手順を実行します:

  • タスクデータを入力してください(タスク名、開始日、期間)。
  • スタックバーチャートを挿入してください。
  • "スタートオフセット"(見えない)用の1つのシリーズと、"期間"(見える)用の別のシリーズを使用します。
  • チャートをガントチャートのように見えるようにフォーマットしてください。

これにより、動的に生成できるプロフェッショナルな外観のタイムラインが得られます。

サンプルタスクデータ

ここに私たちが使用するサンプルテーブルがあります:

タスク開始日期間開始オフセット
Task 12025-04-0130
Task 22025-04-0362
Task 32025-04-08107
Task 42025-04-18317
Task 52025-04-21520

ExcelでガントチャートをPythonを使用して作成する

次の手順に従って、.NET経由でPython用Aspose.Cellsを使用してExcelでガントチャートを作成します:

  • 既存のExcelデータファイルをWorkbookクラスを使用してロードします。
  • workbook.worksheets[0] で最初のワークシートを取得します。
  • ガントチャートレイアウトを追加するために、積み上げ棒グラフを追加します。
  • 2つのデータ系列を追加します:オフセット用とデュレーション用の1つずつです。
  • タスク名をカテゴリーラベルとして設定します。
  • チャートのスタイルと軸設定を調整してフォーマットします。
  • ファイルを workbook.save() メソッドを使って保存してください。

以下は、これらのすべてのステップを実行するPythonのコードスニペットです:

import aspose.cells as cells
from aspose.pydrawing import Color

# Excelファイルをロードしてください。
workbook = cells.Workbook("sample-data.xlsx")
sheet = workbook.worksheets.get(0)

# ガントチャートを追加する
chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 7, 0, 30, 10)
chart = sheet.charts[chart_index]
chart.title.text = "Gantt Chart"

# オフセットと期間をシリーズとして追加します
chart.n_series.add("D2:D6", True)  # Start Offset
chart.n_series.add("C2:C6", True)  # Duration

# タスク名をカテゴリとして設定する
chart.n_series.category_data = "A2:A6"

# オフセットバーを非表示にする
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# スタイルの期間バー
chart.n_series[1].area.formatting = cells.charts.FormattingType.CUSTOM
chart.n_series[1].area.foreground_color = Color.steel_blue
chart.n_series[1].data_labels.show_value = True

# 軸設定
chart.category_axis.is_plot_order_reversed = True
chart.category_axis.title.text = "Tasks"
chart.value_axis.title.text = "Days from Start"
chart.value_axis.major_grid_lines.is_visible = True

# レジェンドを隠す
chart.show_legend = False

# チャートのサイズを変更 (オプション)
chart.chart_object.width = 700
chart.chart_object.height = 400

# Save the result
workbook.save("GanttChartResult.xlsx", cells.SaveFormat.XLSX)

これは、あなたのタスクデータを使ってクリーンなガントチャートを生成します。

ExcelでGanttチャートをPythonを使って作成する

ExcelでガントチャートをPythonを使って作成する

ガントチャートをカスタマイズする

次の利用可能なオプションを使用して、ガントチャートをカスタマイズできます:

バーの色

期間バーのために単色を設定する:

chart.n_series[1].area.foreground_color = Color.steel_blue

透明なオフセット

オフセット(目に見えない)バーを完全に透明にしてください。

chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

タスク順序

Y軸を反転して、タスクを上から下に表示します:

chart.category_axis.is_plot_order_reversed = True

データラベル

各タスクバーに直接期間を表示:

chart.n_series[1].data_labels.show_value = True

リジェンドコントロール

チャートの凡例を削除するか、再配置してください。

chart.show_legend = False

# Or reposition: 
chart.legend.position = cells.charts.LegendPositionType.BOTTOM

カスタムバーの色を設定する

chart.n_series[1].points[0].area.foreground_color = Color.green
chart.n_series[1].points[1].area.foreground_color = Color.red

チャートのサイズを変更する

chart.chart_object.width = 700
chart.chart_object.height = 400

PDFまたは画像にエクスポートする

workbook.save("gantt_chart.pdf", cells.SaveFormat.PDF)
chart.to_image("chart.png")

以下のPythonコードスニペットは、上記で言及されたカスタマイズのいくつかを適用します。

import aspose.cells as cells
from aspose.pydrawing import Color
import datetime

# ワークブックとワークシートを初期化する
workbook = cells.Workbook()
sheet = workbook.worksheets.get(0)
sheet.name = "Gantt Data"

# プロジェクト開始日
project_start = datetime.date(2025, 4, 1)

# Headers
sheet.cells.get("A1").put_value("Task")
sheet.cells.get("B1").put_value("Start Date")
sheet.cells.get("C1").put_value("Duration (Days)")
sheet.cells.get("D1").put_value("Start Offset")
sheet.cells.get("E1").put_value("End Date")

# タスクデータ: [タスク名, 開始日, 期間]
tasks = [
    ["Task 1", "2025-04-01", "3"],
    ["Task 2", "2025-04-03", "6"],
    ["Task 3", "2025-04-08", "10"],
    ["Task 4", "2025-04-18", "3"],
    ["Task 5", "2025-04-21", "5"]
]

# シートにデータを入力してください
for i, task in enumerate(tasks):
    row = i + 2  # Start from row 2
    sheet.cells.get(row, 0).put_value(task[0])  # Task Name
    sheet.cells.get(row, 1).put_value(datetime.datetime.strptime(task[1], "%Y-%m-%d").date())  # Start Date
    sheet.cells.get(row, 2).put_value(int(task[2]))  # Duration

    # オフセットと終了日数式
    sheet.cells.get(row, 3).formula = f"=B{row + 1} - DATE(2025,4,1)"  # Offset
    sheet.cells.get(row, 4).formula = f"=B{row + 1} + C{row + 1}"  # End Date

# 列の自動調整
sheet.auto_fit_columns()

# ガントチャートを追加してください
chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 10, 0, 30, 10)
chart = sheet.charts[chart_index]
chart.title.text = "Project Gantt Chart"

# データ系列を追加: オフセット (見えない), デュレーション (見える)
chart.n_series.add("D2:D6", True)  # Offset
chart.n_series.add("C2:C6", True)  # Duration

# タスク名をカテゴリラベルとして設定する
chart.n_series.category_data = "A2:A6"

# オフセットバーを非表示にする
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# タスクバーごとに異なる色を付けてください。
duration_series = chart.n_series[1]
for i in range(duration_series.points.count):
    red = 100 + i * 30
    duration_series.points[i].area.foreground_color = Color.from_argb(255, red, 150)

# 期間バーにデータラベルを表示する
duration_series.data_labels.show_value = True

# 軸の設定
chart.category_axis.title.text = "Tasks"
chart.category_axis.is_plot_order_reversed = True
chart.value_axis.title.text = "Days from Project Start"
chart.value_axis.major_grid_lines.is_visible = True
chart.value_axis.min_value = 0
chart.value_axis.major_unit = 5.0

# 凡例を隠す
chart.show_legend = False

# チャートのサイズを変更する
chart.chart_object.width = 700
chart.chart_object.height = 400

# Save output
workbook.save("CustomizedGanttChart.xlsx", cells.SaveFormat.XLSX)
ExcelでPythonを使用してガントチャートをカスタマイズする

ExcelでPythonを使用してガントチャートをカスタマイズする

無料ライセンスを取得する

あなたは request a free temporary license をリクエストして、Aspose.Cells のすべての機能を制限や透かしなしで探求することができます。

追加のリソース

もっと探求したいですか?以下のリンクは、.NET経由でのPython用Aspose.Cellsに深く入り込むのに役立ちます。詳細なガイド、APIリファレンス、または無料のツールを探している場合、これらのリソースがあなたをサポートします。

最終の言葉

ExcelでのGanttチャートをPythonを使って作成するのは、Aspose.Cells for Python via .NETを使用することで簡単かつ効果的です。これにより、チャートのデザインやExcelの自動化に完全なコントロールを持つことができます。あなたのプロジェクトデータで試してみて、その違いを実感してください。

質問がある場合は、free support forum にお気軽にお問い合わせください。

See Also