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