時間軸上的任務可視化有助于更好地管理項目。本文將學習如何使用Aspose.Cells?for Python 通過 .NET在 Excel 中創建甘特圖。只需幾行代碼,即可將簡單的任務數據轉換為動態清晰的可視化時間軸,非常適合用于報表、儀表板和規劃文檔。
Aspose.Cells官方試用版免費下載
用于甘特圖的 Python Excel 庫
Aspose.Cells?for Python via .NET是一個功能強大的庫,用于在 Python 中處理 Excel 文件。它允許您以編程方式創建、修改和格式化電子表格,包括甘特圖等圖表。
主要特點:
- 完全控制 Excel 圖表和數據。
- 支持 XLSX、XLS、CSV 和 PDF。
- 大文件時具有高性能。
- 豐富的圖表自定義選項。
首先,請使用以下命令安裝該庫:
pip install aspose-cells
您也可以從發布版本中下載它。
甘特圖與堆疊條形圖
Excel 和?Aspose.Cells?均未提供內置甘特圖類型。但您仍然可以使用堆疊條形圖并進行一些格式設置來創建甘特圖。這是一種常用技術,Aspose.Cells?完全通過代碼支持該技術。
Aspose.Cells?的功能
您可以通過執行以下操作輕松地在 Excel 中自動執行甘特圖:
- 輸入任務數據(任務名稱、開始日期和持續時間)。
- 插入堆積條形圖。
- 使用一個系列作為“起始偏移量”(不可見),使用另一個系列作為“持續時間”(可見)。
- 將圖表格式化為甘特圖。
這為您提供了一個可以動態生成的專業時間線。
示例任務數據
這是我們將使用的示例表:
任務 | 開始日期 | 期間 | 起始偏移 |
---|---|---|---|
任務 1 | 2025年4月1日 | 3 | 0 |
任務 2 | 2025年4月3日 | 6 | 2 |
任務 3 | 2025年4月8日 | 10 | 7 |
任務 4 | 2025年4月18日 | 3 | 17 |
任務 5 | 2025年4月21日 | 5 | 20 |
使用 Python 在 Excel 中創建甘特圖
按照以下步驟通過 .NET 使用?Aspose.Cells?for Python 在 Excel 中創建甘特圖:
- 使用該類加載現有的 Excel 數據文件Workbook。
- 獲取第一個工作表workbook.worksheets[0]。
- 添加堆積條形圖以添加甘特圖布局。
- 添加兩個數據系列:一個用于偏移量,一個用于持續時間。
- 將任務名稱設置為類別標簽。
- 調整樣式和軸設置來格式化圖表。
- 使用該方法保存文件workbook.save()。
以下是執行所有這些步驟的 Python 代碼片段:
import aspose.cells as cells from aspose.pydrawing import Color# Load the Excel file workbook = cells.Workbook("sample-data.xlsx") sheet = workbook.worksheets.get(0)# Add Gantt Chart chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 7, 0, 30, 10) chart = sheet.charts[chart_index] chart.title.text = "Gantt Chart"# Add offset and duration as series chart.n_series.add("D2:D6", True) # Start Offset chart.n_series.add("C2:C6", True) # Duration# Set task names as categories chart.n_series.category_data = "A2:A6"# Make offset bars invisible 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# Axis settings 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# Hide legend chart.show_legend = False# Resize chart (optional) chart.chart_object.width = 700 chart.chart_object.height = 400# Save the result workbook.save("GanttChartResult.xlsx", cells.SaveFormat.XLSX)
這將生成包含您的任務數據的干凈的甘特圖。
自定義甘特圖
您可以使用以下可用選項自定義甘特圖:
條形顏色
為持續時間條設置純色:
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# Initialize workbook and worksheet workbook = cells.Workbook() sheet = workbook.worksheets.get(0) sheet.name = "Gantt Data"# Project start date 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")# Task data: [Task Name, Start Date, Duration] 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"] ]# Fill data into the sheet for i, task in enumerate(tasks):row = i + 2 # Start from row 2sheet.cells.get(row, 0).put_value(task[0]) # Task Namesheet.cells.get(row, 1).put_value(datetime.datetime.strptime(task[1], "%Y-%m-%d").date()) # Start Datesheet.cells.get(row, 2).put_value(int(task[2])) # Duration# Offset and End Date formulassheet.cells.get(row, 3).formula = f"=B{row + 1} - DATE(2025,4,1)" # Offsetsheet.cells.get(row, 4).formula = f"=B{row + 1} + C{row + 1}" # End Date# Auto-fit columns sheet.auto_fit_columns()# Add Gantt chart 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"# Add data series: Offset (invisible), Duration (visible) chart.n_series.add("D2:D6", True) # Offset chart.n_series.add("C2:C6", True) # Duration# Set task names as category labels chart.n_series.category_data = "A2:A6"# Make offset bars invisible chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE# Color each task bar differently duration_series = chart.n_series[1] for i in range(duration_series.points.count):red = 100 + i * 30duration_series.points[i].area.foreground_color = Color.from_argb(255, red, 150)# Show data labels on duration bars duration_series.data_labels.show_value = True# Axis configuration 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# Hide legend chart.show_legend = False# Resize chart chart.chart_object.width = 700 chart.chart_object.height = 400# Save output workbook.save("CustomizedGanttChart.xlsx", cells.SaveFormat.XLSX)
總結
使用?Aspose.Cells?for Python 通過 .NET 在 Excel 中創建甘特圖既簡單又高效。它讓您可以完全控制圖表設計和 Excel 自動化。