
Microsoft Project 提供三种计算模式:自动、手动和无。每种模式对项目的更新和重新计算提供了不同程度的控制。在本文中,我们将学习如何用 Python 编程实现 MS Project 计算模式。无论你是要从手动排程迁移到自动排程,还是需要灵活地管理项目截止日期,本文都将为你提供过渡所需的信息和资源。让我们开始吧
本文涵盖以下主题:
以编程方式计算项目的 Python API
手动项目计算
自动项目计算
无项目计算模式
以编程方式计算项目的 Python API
我们将使用 Aspose.Tasks for Python API 来实现 MS 项目计算模式。它提供了以下计算模式来计算从属属性的值:
无--该模式只设置必要的属性,不重新计算项目日期和成本。
手动 - 该模式只设置从属对象属性,不重新计算项目日期和成本。
自动 - 该模式自动重新计算项目日期和成本属性。
请在控制台中使用以下 pip 命令从 PyPI 下载软件包或安装 API:
pip install aspose-tasks
用 Python 手动计算 MS Project
我们可以将计算模式设置为手动,并按照以下步骤进行验证:
创建 Project 类的实例。
将计算模式设置为手动。
指定项目开始日期。
添加新任务,如任务 1 和任务 2。
读取任务属性。
然后,初始化 TaskLinks 类对象并链接任务。
最后,验证任务 2 的开始和结束日期。
下面的代码示例展示了如何在 Python 中手动计算一个项目。
# This code example demonstrates how to calculate the MS project using manual calculation mode in Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta
# Create an instance of the Project
project = tasks.Project()
# Set calculation mode to Manual
project.calculation_mode = tasks.CalculationMode.MANUAL
# Set project start date
project.start_date = datetime(2015, 4, 15)
# Add new tasks
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")
# The necessary properties are set in manual mode
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 two tasks together their dates shall not be recalculated in manual mode
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)
# No change in Task 2 dates
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 项目。
# This code example demonstrates how to calculate the MS project using automatic calculation mode in Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta
# Create an instance of the Project
project = tasks.Project()
# Set calculation mode to Automatic
project.calculation_mode = tasks.CalculationMode.AUTOMATIC
# Set project start date
project.start_date = datetime(2015, 4, 15)
# Add new tasks
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")
# Link tasks
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)
# Verify the recalculated dates
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 中的无项目计算模式
我们可以将计算模式设置为 "无",并按照以下步骤进行验证:
创建 Project 类的实例。
将计算模式设置为 "无"。
指定项目开始日期。
添加一个新任务,如任务 1。
读取任务属性。
然后,以天为单位设置任务持续时间。
最后,验证任务的开始和结束日期。
下面的代码示例展示了如何使用 Python 将 MS project 计算模式设置为无。
# This code example demonstrates how to set the MS project calculation mode as NONE in Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta
# Create an instance of the Project
project = tasks.Project()
# Set calculation mode to None
project.calculation_mode = tasks.CalculationMode.NONE
# Add a new task
task = project.root_task.children.add("Task")
# Note that even ids were not calculated
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")
# Set duration property
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 编程设置项目计算模式。我们还了解了在每种计算模式下如何计算从属属性的值。通过 .NET 利用 Aspose.Tasks for Python,您可以轻松地将此类功能嵌入到您的 Python 应用程序中。如果有任何不清楚的地方,请随时联系我们。
渝公网安备50010702505508