
可視化任務在時間線上的安排有助於更好地管理項目。在這篇文章中,您將學習如何使用 Aspose.Cells for Python via .NET 在 Excel 中創建甘特圖。只需幾行代碼,您就可以將簡單的任務數據轉換為動態而清晰的可視化時間線,適合報告、儀表板和規劃文檔。我們一步步來看看。
這篇文章涵蓋以下主題:
Python Excel 函式庫用於甘特圖
Aspose.Cells for Python via .NET 是一個強大的庫,用於在 Python 中處理 Excel 文件。它允許您以編程方式創建、修改和格式化電子表格,包括甘特圖等圖表。
主要特點:
- 完整控制 Excel 圖表和數據。
- 支持 XLSX、XLS、CSV 和 PDF。
- 高效能處理大型文件。
- 豐富的圖表自訂選項。
要開始,請使用以下命令安裝庫:
pip install aspose-cells
你也可以從 releases 下載它。
堆疊條形圖的甘特圖
Excel 不提供內建的甘特圖類型,Aspose.Cells 也沒有。但您仍然可以使用堆疊條形圖配合一些格式化來創建一個。這是一種常見的技巧,Aspose.Cells 透過代碼完全支持它。
您可以使用 Aspose.Cells 做什麼
您可以通過以下方式輕鬆自動化 Excel 中的甘特圖:
- 輸入任務數據(任務名稱、開始日期和持續時間)。
- 插入一個堆疊條形圖。
- 使用一個系列作為「開始偏移量」(不可見)和另一個作為「持續時間」(可見)。
- 將圖表格式化為甘特圖。
這為您提供了一個專業外觀的時間軸,您可以動態生成。
Sample Task Data
這裡有一個我們將使用的示例表格:
任務 | 開始日期 | 持續時間 | 開始偏移量 |
---|---|---|---|
Task 1 | 2025-04-01 | 3 | 0 |
Task 2 | 2025-04-03 | 6 | 2 |
Task 3 | 2025-04-08 | 10 | 7 |
Task 4 | 2025-04-18 | 3 | 17 |
Task 5 | 2025-04-21 | 5 | 20 |
在 Excel 中使用 Python 創建甘特圖
按照以下步驟使用 Aspose.Cells for Python via .NET 在 Excel 中創建甘特圖:
- 使用
Workbook
類別載入現有的 Excel 數據文件。 - 獲取第一個工作表,使用
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 創建甘特圖
自訂甘特圖
您可以使用以下可用選項自定義您的甘特圖:
條形顏色
為持續時間條設置單一顏色:
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
# Offset 和結束日期公式
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)

使用 Python 自訂 Excel 中的甘特圖
獲取免費許可證
您可以 request a free temporary license 以探索 Aspose.Cells 的全部功能,而無需任何限制或水印。
額外資源
想深入探索嗎?以下的連結將幫助您更深入了解 Aspose.Cells for Python via .NET。無論您是在尋找詳細的指南、API 參考還是免費工具,這些資源都能滿足您的需求。
最後的話
在 Excel 中使用 Python 創建甘特圖是簡單而有效的,通過 Aspose.Cells for .NET for Python。它賦予您對圖表設計和 Excel 自動化的完全控制。使用您的項目數據進行嘗試,看看不同之處。
如果您遇到任何問題,請隨時通過我們的 free support forum 聯繫我們。