在Python中实现MS Project计算模式

Microsoft Project 提供三种计算模式:自动、手动和无。每种模式都对项目的更新和重新计算方式提供不同级别的控制。在本文中,我们将学习如何在 Python 中以编程方式实现 MS Project 计算模式。无论您是从手动计划迁移到自动计划,还是需要灵活地管理项目截止日期,本文都将为您提供此类转换所需的信息和资源。让我们开始吧!

本文涵盖以下主题:

  1. 以编程方式计算项目的 Python API
  2. 手动工程计算
  3. 自动项目计算
  4. 无项目计算模式

Python API 以编程方式计算项目

我们将使用Aspose.Tasks for Python API来实现MS项目计算模式。它提供以下计算模式来计算依赖属性的值:

  • 无 – 此模式仅设置必要的属性,不会重新计算项目日期和成本。
  • 手动 – 此模式仅设置相关对象属性,无需重新计算项目日期和成本。
  • 自动 – 此模式自动重新计算项目日期和成本属性。

请在控制台中使用以下 pip 命令下载软件包从 PyPI 安装 API

pip install aspose-tasks

用Python手动计算MS项目

我们可以将计算模式设置为手动,并按照以下步骤进行验证:

  1. 创建 Project 类的实例。
  2. 将计算模式设置为手动。
  3. 指定项目开始日期。
  4. 添加新任务,例如任务 1 和任务 2。
  5. 读取任务属性。
  6. 之后,初始化TaskLinks类的对象并链接任务。
  7. 最后,验证任务 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,并按照以下步骤进行验证:

  1. 创建 Project 类的实例。
  2. 将计算模式设置为无。
  3. 指定项目开始日期。
  4. 添加新任务,例如任务 1。
  5. 读取任务属性。
  6. 之后,设置任务持续时间(以天为单位)。
  7. 最后,验证任务的开始和结束日期。

以下代码示例演示如何使用 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 应用程序中。如有任何疑问,请随时联系我们的免费支持论坛

也可以看看