
Microsoft Project 提供三種運算模式:自動、手動和無。每種模式都對項目的更新和重新計算方式提供不同程度的控制。在本文中,我們將學習如何在 Python 中以程式設計方式實作 MS Project 計算模式。無論您是從手動計劃遷移到自動規劃,還是需要靈活地管理專案截止日期,本文都將為您提供此類轉換所需的資訊和資源。讓我們開始吧!
本文涵蓋以下主題:
Python API 以程式設計方式計算項目
我們將使用Aspose.Tasks for Python API來實作MS專案計算模式。它提供以下計算模式來計算依賴屬性的值:
- 無 – 此模式僅設定必要的屬性,不會重新計算專案日期和成本。
- 手動 – 此模式僅設定相關物件屬性,無需重新計算專案日期和成本。
- 自動 – 此模式自動重新計算專案日期和成本屬性。
請在控制台中使用下列 pip 指令下載軟體包或從 PyPI 安裝 API:
pip install aspose-tasks
用Python手動計算MS項目
我們可以將計算模式設定為手動,並按照以下步驟進行驗證:
- 建立 Project 類別的實例。
- 將計算模式設定為手動。
- 指定項目開始日期。
- 新增任務,例如任務 1 和任務 2。
- 讀取任務屬性。
- 之後,初始化TaskLinks類別的物件並連結任務。
- 最後,驗證任務 2 的開始和結束日期。
以下程式碼範例展示如何在 Python 中手動計算項目。
# 本程式碼範例示範如何在Python中使用手動計算模式來計算MS專案。
import aspose.tasks as tasks
from datetime import datetime, timedelta
# 建立專案的實例
project = tasks.Project()
# 將計算模式設定為手動
project.calculation_mode = tasks.CalculationMode.MANUAL
# 設定專案開始日期
project.start_date = datetime(2015, 4, 15)
# 新增任務
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")
# 必要的屬性在手動模式下設置
print("Task1.Id Equals 1 : ", task1.id == 1)
print("Task1 OutlineLevel Equals 1 : ", task1.outline_level == 1)
print("Task1 Start Equals 15/04/2015 08:00 AM : ", task1.start) == datetime(2015, 4, 15, 8, 0, 0)
print("Task1 Finish Equals 15/04/2015 05:00 PM : ", task1.finish) == datetime(2015, 4, 15, 17, 0, 0)
print("Task1 Duration Equals 1 day : ", str(task1.duration) == "1 day")
print("Task2 Start Equals 15/04/2015 08:00 AM : ", task2.start == datetime(2015, 4, 15, 8, 0, 0))
print("Task2 Finish Equals 15/04/2015 05:00 PM : ", task2.finish == datetime(2015, 4, 15, 17, 0, 0))
print("Task2 Duration Equals 1 day : ", str(task2.duration) == "1 day")
# 將兩個任務連結在一起,在手動模式下不應重新計算其日期
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)
# 任務 2 日期沒有變化
print("Task1 Start Equals Task2 Start : ", task1.start == task2.start)
print("Task1 Finish Equals Task2 Finish : ", task1.finish == task2.finish)
Task1.Id Equals 1 : True
Task1 OutlineLevel Equals 1 : True
Task1 Start Equals 15/04/2015 08:00 AM : 2015-04-15 08:00:00
Task1 Finish Equals 15/04/2015 05:00 PM : 2015-04-15 17:00:00
Task1 Duration Equals 1 day : True
Task2 Start Equals 15/04/2015 08:00 AM : True
Task2 Finish Equals 15/04/2015 05:00 PM : True
Task2 Duration Equals 1 day : True
Task1 Start Equals Task2 Start : True
Task1 Finish Equals Task2 Finish : True
Python 中的自動專案計算
同樣,我們可以按照前面提到的步驟,使用自動計算模式來計算MS項目。不過,我們只需在步驟2中將計算模式設為自動即可。
以下程式碼範例展示如何在Python中使用自動計算模式來計算MS專案。
# 此程式碼範例示範如何在Python中使用自動計算模式來計算MS專案。
import aspose.tasks as tasks
from datetime import datetime, timedelta
# 建立專案的實例
project = tasks.Project()
# 將計算模式設定為自動
project.calculation_mode = tasks.CalculationMode.AUTOMATIC
# 設定專案開始日期
project.start_date = datetime(2015, 4, 15)
# 新增任務
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")
# 連結任務
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)
# 驗證重新計算的日期
print("Task1 Start + 1 Equals Task2 Start : ", (task1.start + timedelta(days=1)) == task2.start)
print("Task1 Finish + 1 Equals Task2 Finish : ", (task1.finish + timedelta(days=1)) == task2.finish)
print("RootTask Finish Equals Task2 Finish : ", task2.finish == project.root_task.finish)
print("Project Finish Date Equals Task2 Finish : ", task2.finish == project.finish_date)
Task1 Start + 1 Equals Task2 Start : True
Task1 Finish + 1 Equals Task2 Finish : True
RootTask Finish Equals Task2 Finish : True
Project Finish Date Equals Task2 Finish : False
Python中的無專案計算模式
我們可以將計算模式設定為NONE,並依照以下步驟進行驗證:
- 建立 Project 類別的實例。
- 將計算模式設為無。
- 指定項目開始日期。
- 新增任務,例如任務 1。
- 讀取任務屬性。
- 之後,設定任務持續時間(以天為單位)。
- 最後,驗證任務的開始和結束日期。
以下程式碼範例示範如何使用 Python 將 MS 專案計算模式設為無。
# 此程式碼範例示範如何在Python中將MS專案計算模式設定為NONE。
import aspose.tasks as tasks
from datetime import datetime, timedelta
# 建立專案的實例
project = tasks.Project()
# 將計算模式設為無
project.calculation_mode = tasks.CalculationMode.NONE
# 新增任務
task = project.root_task.children.add("Task")
# 請注意,甚至 ids 也沒有計算
print("Task.Id Equals 0 : ", task.id == 0)
print("Task.OutlineLevel Equals 0 : ", task.outline_level == 0)
print("Task Start Equals DateTime.MinValue : ", task.start == datetime.min)
print("Task Finish Equals DateTime.MinValue : ", task.finish == datetime.min)
print("Task Duration Equals 0 mins : ", str(task.duration) == "0 mins")
# 設定持續時間屬性
task.duration = project.get_duration(2.0, tasks.TimeUnitType.DAY)
print("Task Duration Equals 2 days : ", str(task.duration) == "2 days")
print("Task Start Equals DateTime.MinValue : ", task.start == datetime.min)
print("Task Finish Equals DateTime.MinValue : ", task.finish == datetime.min)
Task.Id Equals 0 : True
Task.OutlineLevel Equals 0 : False
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
Task Duration Equals 0 mins : True
Task Duration Equals 2 days : True
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
取得免費許可證
您可以獲得免費的臨時許可證來試用該庫,而不受評估限制。
使用 Python 計算專案 – 學習資源
除了實作運算模式和重新計算 MS 專案進度和持續時間之外,您還可以使用下列資源探索該程式庫的各種其他功能:
結論
在本文中,我們學習如何在 Python 中以程式設計方式設定專案計算模式。我們也了解如何在每種計算模式中計算從屬屬性的值。透過 .NET 利用 Aspose.Tasks for Python,您可以輕鬆地將此類功能嵌入到您的 Python 應用程式中。如有任何疑問,請隨時聯絡我們的免費支援論壇。