Tạo biểu đồ Gantt trong Excel bằng cách sử dụng Python

Hình dung các nhiệm vụ trên một dòng thời gian giúp quản lý dự án tốt hơn. Trong bài viết này, bạn sẽ học cách tạo biểu đồ Gantt trong Excel bằng cách sử dụng Python với Aspose.Cells for Python qua .NET. Chỉ với vài dòng mã, bạn có thể biến dữ liệu nhiệm vụ đơn giản thành một dòng thời gian trực quan và sạch sẽ, lý tưởng cho các báo cáo, bảng điều khiển và tài liệu lập kế hoạch. Hãy cùng đi qua từng bước.

Bài viết này đề cập đến các chủ đề sau:

Thư viện Python Excel cho biểu đồ Gantt

Aspose.Cells for Python via .NET là một thư viện mạnh mẽ để làm việc với các tệp Excel trong Python. Nó cho phép bạn tạo, sửa đổi và định dạng bảng tính theo cách lập trình—bao gồm các biểu đồ như biểu đồ Gantt.

Tính năng chính:

  • Toàn quyền kiểm soát các biểu đồ và dữ liệu trong Excel.
  • Hỗ trợ cho XLSX, XLS, CSV và PDF.
  • Hiệu suất cao với các tệp lớn.
  • Tùy chọn tùy chỉnh biểu đồ phong phú.

Để bắt đầu, vui lòng cài đặt thư viện với:

pip install aspose-cells

Bạn cũng có thể tải xuống từ releases.

Biểu đồ Gantt với Biểu đồ Cột Chồng

Excel không cung cấp loại biểu đồ Gantt tích hợp sẵn, và Aspose.Cells cũng vậy. Nhưng bạn vẫn có thể tạo một cái bằng cách sử dụng biểu đồ thanh chồng với một chút định dạng. Đây là một kỹ thuật phổ biến, và Aspose.Cells hoàn toàn hỗ trợ điều này thông qua mã.

Những gì bạn có thể làm với Aspose.Cells

Bạn có thể dễ dàng tự động hóa biểu đồ Gantt trong Excel bằng cách làm như sau:

  • Nhập dữ liệu nhiệm vụ (tên nhiệm vụ, ngày bắt đầu và thời gian).
  • Chèn một biểu đồ cột chồng lên nhau.
  • Sử dụng một chuỗi cho "offset bắt đầu" (vô hình) và một chuỗi khác cho "thời gian" (hữu hình).
  • Định dạng biểu đồ để trông giống như biểu đồ Gantt.

Điều này cung cấp cho bạn một biểu đồ thời gian trông chuyên nghiệp mà bạn có thể tạo ra một cách linh hoạt.

Sample Task Data

Dưới đây là một bảng mẫu mà chúng ta sẽ sử dụng:

Nhiệm vụNgày bắt đầuThời gianĐộ lệch bắt đầu
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

Thực hiện các bước sau để tạo biểu đồ Gantt trong Excel bằng Python với Aspose.Cells for Python thông qua .NET:

  • Tải một tệp dữ liệu Excel hiện có bằng cách sử dụng lớp Workbook.
  • Lấy bảng tính đầu tiên với workbook.worksheets[0].
  • Thêm một biểu đồ cột chồng lên nhau để thêm bố cục biểu đồ Gantt.
  • Thêm hai chuỗi dữ liệu: một cho độ lệch và một cho khoảng thời gian.
  • Đặt tên nhiệm vụ dưới dạng nhãn danh mục.
  • Điều chỉnh kiểu dáng và cài đặt trục để định dạng biểu đồ.
  • Lưu tệp bằng cách sử dụng phương thức workbook.save().

Đây là một đoạn mã Python thực hiện tất cả các bước này:

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

# Tải tệp Excel lên
workbook = cells.Workbook("sample-data.xlsx")
sheet = workbook.worksheets.get(0)

# Thêm biểu đồ Gantt
chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 7, 0, 30, 10)
chart = sheet.charts[chart_index]
chart.title.text = "Gantt Chart"

# Thêm độ dịch và thời gian dưới dạng chuỗi
chart.n_series.add("D2:D6", True)  # Start Offset
chart.n_series.add("C2:C6", True)  # Duration

# Đặt tên nhiệm vụ thành các danh mục
chart.n_series.category_data = "A2:A6"

# Làm cho các thanh offset trở nên vô hình
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# Style duration bars
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

# Cài đặt trục
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

# Ẩn chú thích
chart.show_legend = False

# Thay đổi kích thước biểu đồ (tùy chọn)
chart.chart_object.width = 700
chart.chart_object.height = 400

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

Điều này sẽ tạo ra một biểu đồ theo kiểu Gantt sạch sẽ với dữ liệu tác vụ của bạn.

Tạo biểu đồ Gantt trong Excel bằng Python

Tạo biểu đồ Gantt trong Excel bằng Python

Tùy chỉnh biểu đồ Gantt

Bạn có thể tùy chỉnh biểu đồ Gantt của mình bằng cách sử dụng các tùy chọn có sẵn sau:

Màu sắc của thanh

Đặt màu rắn cho thanh thời gian:

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

Transparent Offsets

Làm cho các thanh offset (vô hình) hoàn toàn trong suốt.

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

Task Order

Đảo ngược trục Y để hiển thị các nhiệm vụ từ trên xuống dưới:

chart.category_axis.is_plot_order_reversed = True

Nhãn Dữ Liệu

Hiển thị thời gian trực tiếp trên mỗi thanh tác vụ:

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

Legend Control

Xóa hoặc điều chỉnh vị trí chú giải biểu đồ.

chart.show_legend = False

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

Đặt Màu Thanh Tùy Chỉnh

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

Thay đổi kích thước biểu đồ

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

Xuất sang PDF hoặc Hình ảnh

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

Đoạn mã Python sau đây áp dụng một số tùy chỉnh được đề cập ở trên:

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

# Khởi tạo workbook và worksheet
workbook = cells.Workbook()
sheet = workbook.worksheets.get(0)
sheet.name = "Gantt Data"

# Ngày bắt đầu dự án
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")

# Dữ liệu tác vụ: [Tên tác vụ, Ngày bắt đầu, Thời gian]
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"]
]

# Điền dữ liệu vào bảng tính
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

    # Công thức Ngày kết thúc và Ngày bù trừ
    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

# Tự động điều chỉnh cột
sheet.auto_fit_columns()

# Thêm biểu đồ Gantt
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"

# Thêm chuỗi dữ liệu: Offset (vô hình), Duration (hình dung)
chart.n_series.add("D2:D6", True)  # Offset
chart.n_series.add("C2:C6", True)  # Duration

# Đặt tên tác vụ là nhãn danh mục
chart.n_series.category_data = "A2:A6"

# Làm cho các thanh dịch chuyển trở nên vô hình
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# Màu mỗi thanh tác vụ khác nhau
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)

# Hiển thị nhãn dữ liệu trên các thanh thời gian
duration_series.data_labels.show_value = True

# Cấu hình trục
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

# Ẩn chú giải
chart.show_legend = False

# Thay đổi kích thước biểu đồ
chart.chart_object.width = 700
chart.chart_object.height = 400

# Save output
workbook.save("CustomizedGanttChart.xlsx", cells.SaveFormat.XLSX)
Tùy chỉnh biểu đồ Gantt trong Excel bằng Python

Tùy chỉnh Biểu đồ Gantt trong Excel bằng Python

Nhận Giấy phép Miễn phí

Bạn có thể request a free temporary license để khám phá đầy đủ khả năng của Aspose.Cells mà không có bất kỳ giới hạn hay watermark nào.

Tài nguyên bổ sung

Bạn có muốn khám phá thêm không? Các liên kết dưới đây sẽ giúp bạn tìm hiểu sâu hơn về Aspose.Cells for Python thông qua .NET. Dù bạn đang tìm kiếm hướng dẫn chi tiết, tài liệu tham khảo API, hay công cụ miễn phí, những tài nguyên này sẽ hỗ trợ bạn.

Final Words

Tạo biểu đồ Gantt trong Excel bằng Python là đơn giản và hiệu quả khi sử dụng Aspose.Cells for Python thông qua .NET. Nó cho bạn quyền kiểm soát hoàn toàn về thiết kế biểu đồ và tự động hóa Excel. Hãy thử với dữ liệu dự án của bạn và cảm nhận sự khác biệt.

Nếu bạn có bất kỳ câu hỏi nào, xin vui lòng liên hệ với chúng tôi tại free support forum.

See Also