Utwórz wykres Gantta w Excelu za pomocą Python

Wizualizacja zadań na osi czasu pomaga lepiej zarządzać projektami. W tym artykule dowiesz się, jak stworzyć wykres Gantta w Excelu, używając Python z Aspose.Cells for Python przez .NET. W zaledwie kilku linijkach kodu możesz przekształcić proste dane o zadaniach w dynamiczną i przejrzystą wizualizację osi czasu, idealną do raportów, pulpitów nawigacyjnych i dokumentów planistycznych. Przejdźmy przez to krok po kroku.

Ten artykuł porusza następujące tematy:

Python Excel Library for Gantt Charts

Aspose.Cells for Python via .NET to potężna biblioteka do pracy z plikami Excel w Python. Umożliwia tworzenie, modyfikowanie i formatowanie arkuszy kalkulacyjnych programowo — w tym wykresów, takich jak wykresy Gantta.

Kluczowe funkcje:

  • Pełna kontrola nad wykresami i danymi w Excelu.
  • Wsparcie dla XLSX, XLS, CSV i PDF.
  • Wysoka wydajność przy dużych plikach.
  • Bogate opcje dostosowywania wykresów.

Aby zacząć, zainstaluj bibliotekę za pomocą:

pip install aspose-cells

Możesz również pobrać go z releases.

Wykresy Gantta z wykresami słupkowymi zgrupowanymi

Excel nie oferuje wbudowanego typu wykresu Gantta, podobnie jak Aspose.Cells. Możesz jednak utworzyć go, używając wykresu słupkowego skumulowanego z odrobiną formatowania. To powszechna technika, a Aspose.Cells w pełni ją wspiera za pomocą kodu.

Co możesz zrobić z Aspose.Cells

Możesz łatwo zautomatyzować wykres Gantta w Excelu, wykonując następujące czynności:

  • Wprowadź dane zadania (nazwa zadania, data rozpoczęcia i czas trwania).
  • Wstaw wykres słupkowy skumulowany.
  • Użyj jednej serii dla przesunięcia na początku” (niewidoczne) i innej dla czas trwania” (widoczne).
  • Sformatuj wykres, aby wyglądał jak wykres Gantta.

To daje ci profesjonalnie wyglądający harmonogram, który możesz generować dynamicznie.

Sample Task Data

Oto przykładowa tabela, którą użyjemy:

ZadanieData rozpoczęciaCzas trwaniaPrzesunięcie startowe
Task 12025-04-0130
Task 22025-04-0362
Task 32025-04-08107
Task 42025-04-18317
Task 52025-04-21520

Create a Gantt Chart in Excel using Python

Postępuj zgodnie z tymi krokami, aby utworzyć wykres Gantta w Excelu za pomocą Python z Aspose.Cells for Python przez .NET:

  • Załaduj istniejący plik danych Excel za pomocą klasy Workbook.
  • Uzyskaj pierwszy arkusz roboczy za pomocą workbook.worksheets[0].
  • Dodaj wykres słupkowy skumulowany, aby dodać układ wykresu Gantta.
  • Dodaj dwa zestawy danych: jeden dla offsetu, a drugi dla czasu trwania.
  • Ustaw nazwy zadań jako etykiety kategorii.
  • Dostosuj style i ustawienia osi, aby sformatować wykres.
  • Zapisz plik używając metody workbook.save().

Oto fragment kodu Python, który wykonuje wszystkie te kroki:

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

# Załaduj plik Excel
workbook = cells.Workbook("sample-data.xlsx")
sheet = workbook.worksheets.get(0)

# Dodaj wykres Gantta
chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 7, 0, 30, 10)
chart = sheet.charts[chart_index]
chart.title.text = "Gantt Chart"

# Dodaj offset i czas trwania jako serie
chart.n_series.add("D2:D6", True)  # Start Offset
chart.n_series.add("C2:C6", True)  # Duration

# Ustaw nazwy zadań jako kategorie
chart.n_series.category_data = "A2:A6"

# Zrób niewidoczne paski przesunięcia
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# Stylizuj paski czasu
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

# Ustawienia osi
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

# Ukryj legendę
chart.show_legend = False

# Zmień rozmiar wykresu (opcjonalnie)
chart.chart_object.width = 700
chart.chart_object.height = 400

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

To wygeneruje czysty wykres w stylu Gantta z danymi o Twoich zadaniach.

Create a Gantt Chart in Excel using Python

Create a Gantt Chart in Excel using Python

Dostosuj wykres Gantta

Możesz dostosować swój wykres Gantta, korzystając z dostępnych opcji:

Kolory pasków

Ustaw jednolity kolor dla pasków czasu:

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

Przezroczyste offsety

Zrób niewidoczne paski offsetowe całkowicie przezroczyste.

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

Task Order

Odwróć oś Y, aby pokazać zadania od góry do dołu:

chart.category_axis.is_plot_order_reversed = True

Etykiety danych

Pokaż czas trwania bezpośrednio na każdym pasku zadań:

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

Legend Control

Usuń lub przesuń legendę wykresu.

chart.show_legend = False

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

Ustaw niestandardowe kolory pasków

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

Zmień rozmiar wykresu

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

Eksportuj do PDF lub obrazu

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

Następujący fragment kodu Python stosuje niektóre z wymienionych powyżej dostosowań:

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

# Zainicjuj skoroszyt i arkusz kalkulacyjny
workbook = cells.Workbook()
sheet = workbook.worksheets.get(0)
sheet.name = "Gantt Data"

# Data rozpoczęcia projektu
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")

# Dane zadania: [Nazwa zadania, Data rozpoczęcia, Czas trwania]
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"]
]

# Wypełnij dane w arkuszu
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

    # Formuły Offset i End Date
    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

# Auto-fit columns
sheet.auto_fit_columns()

# Dodaj diagram Gantta
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"

# Dodaj serię danych: Offset (niewidoczny), Czas trwania (widoczny)
chart.n_series.add("D2:D6", True)  # Offset
chart.n_series.add("C2:C6", True)  # Duration

# Ustaw nazwy zadań jako etykiety kategorii
chart.n_series.category_data = "A2:A6"

# Ukryj paski przesunięcia
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# Pok coloruj każdy pasek zadań inaczej
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)

# Pokaż etykiety danych na paskach czasu
duration_series.data_labels.show_value = True

# Konfiguracja osi
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

# Ukryj legendę
chart.show_legend = False

# Zmień rozmiar wykresu
chart.chart_object.width = 700
chart.chart_object.height = 400

# Save output
workbook.save("CustomizedGanttChart.xlsx", cells.SaveFormat.XLSX)
Dostosuj wykres Gantta w Excelu za pomocą Python

Dostosuj wykres Gantta w Excelu za pomocą Python

Zdobądź darmową licencję

Możesz poprosić o bezpłatną tymczasową licencję, aby zbadać pełne możliwości Aspose.Cells bez żadnych ograniczeń lub znaków wodnych.

Dodatkowe zasoby

Chcesz zbadać więcej? Poniższe linki pomogą Ci zanurkować głębiej w Aspose.Cells for Python za pośrednictwem .NET. Niezależnie od tego, czy szukasz szczegółowych przewodników, odniesień API, czy darmowych narzędzi, te zasoby mają wszystko, czego potrzebujesz.

Ostatnie słowa

Tworzenie wykresu Gantta w Excelu za pomocą Python jest proste i skuteczne dzięki Aspose.Cells for Python przez .NET. Daje to pełną kontrolę nad projektowaniem wykresu i automatyzacją Excela. Wypróbuj to z danymi swojego projektu i zobacz różnicę.

Jeśli napotkasz jakiekolwiek pytania, nie wahaj się skontaktować z nami na naszym free support forum.

Zobacz także