Создайте диаграмму Ганта в Excel с использованием Python

Визуализация задач на временной шкале помогает лучше управлять проектами. В этой статье вы узнаете, как создать диаграмму Ганта в Excel с помощью Python и Aspose.Cells for Python через .NET. Всего за несколько строк кода вы можете превратить простые данные о задачах в динамическую и аккуратную визуальную шкалу времени, идеально подходящую для отчетов, панелей мониторинга и планировочных документов. Давайте пройдем через это шаг за шагом.

Эта статья охватывает следующие темы:

Библиотека Python Excel для диаграмм Ганта

Aspose.Cells for Python via .NET — это мощная библиотека для работы с файлами Excel на Python. Она позволяет вам создавать, изменять и форматировать электронные таблицы программным способом, включая такие диаграммы, как диаграммы Ганта.

Ключевые особенности:

  • Полный контроль над графиками и данными Excel.
  • Поддержка XLSX, XLS, CSV и PDF.
  • Высокая производительность с большими файлами.
  • Опции настройкиRich графиков.

Чтобы начать, пожалуйста, установите библиотеку с помощью:

pip install aspose-cells

Вы также можете скачать его из releases.

Диаграммы Ганта с наложенными столбиковыми диаграммами

Excel не предоставляет встроенный тип диаграммы Ганта, как и Aspose.Cells. Но вы все равно можете создать такую диаграмму, используяStacked Bar Chartс небольшим форматированием. Это распространенная техника, иAspose.Cellsполностью поддерживает это через код.

Что вы можете сделать с Aspose.Cells

Вы можете легко автоматизировать диаграмму Ганта в Excel, сделав следующее:

  • Введите данные задачи (название задачи, дата начала и продолжительность).
  • Вставьте столбчатую диаграмму.
  • Используйте одну серию для "начального смещения" (невидимый) и другую для "длительности" (видимый).
  • Отформатируйте график так, чтобы он выглядел как диаграмма Ганта.

Это дает вам профессионально выглядящий таймлайн, который вы можете генерировать динамически.

Sample Task Data

Вот пример таблицы, которую мы будем использовать:

ЗадачаДата началаПродолжительностьСмещение начала
Task 12025-04-0130
Task 22025-04-0362
Task 32025-04-08107
Task 42025-04-18317
Task 52025-04-21520

Создайте диаграмму Ганта в Excel с использованием Python

Следуйте этим шагам, чтобы создать диаграмму Ганта в Excel с использованием Python с Aspose.Cells for Python через .NET:

  • Загрузите существующий файл данных Excel с помощью класса Workbook.
  • Получите первый лист с помощью workbook.worksheets[0].
  • Добавьте сложенный столбчатый график для создания макета диаграммы Ганта.
  • Добавьте две серии данных: одну для смещения и одну для продолжительности.
  • Установите названия задач в качестве меток категорий.
  • Отрегулируйте стили и настройки осей для форматирования графика.
  • Сохраните файл, используя метод 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 с использованием 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

Legend Control

Уберите или переместите легенду графика.

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

# Инициализируйте книгу и лист Excel
workbook = cells.Workbook()
sheet = workbook.worksheets.get(0)
sheet.name = "Gantt Data"

# Дата начала проекта
project_start = datetime.date(2025, 4, 1)

# Заголовки
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 без каких-либо ограничений или водяных знаков.

Дополнительные ресурсы

Хотите исследовать больше? Ссылки ниже помогут вам углубиться в Aspose.Cells for Python через .NET. Если вы ищете подробные руководства, справочные материалы по API или бесплатные инструменты, эти ресурсы вам пригодятся.

Последние слова

Создание диаграммы Ганта в Excel с помощью Python просто и эффективно с использованием Aspose.Cells for Python через .NET. Это дает вам полный контроль над дизайном диаграмм и автоматизацией Excel. Попробуйте это с вашими проектными данными и увидите разницу.

Если у вас возникнут вопросы, пожалуйста, не стесняйтесь обращаться на наш free support forum.

Смотрите также