背景
我们有一个现有的应用程序,可以将数据加载到 Microsoft Project 中,以便可以由 MS Project 进行操作。
原始应用程序是由 VB6 编写的旧式 COM 项目加载项,针对 MS Project 2003 / 2007,现在我们计划将它们迁移到针对 MS Project 2013 / 2016 的 VSTO 加载项。
Problem
对于他们的COM Add-in解决方案,我们遇到了性能问题:
测试项目有4414个活动(av_activity表)和8330个
关系(av_reln 表)。
加载操作期间报告了性能问题:
上述项目的 MSP 2003 模板加载时间约为:30-35 分钟。
MSP 2007 和 2010 模板的加载时间 > 3 小时
对于 VSTO 解决方案,它变得更好,但我们仍然希望可以通过某种方式提高加载性能。
到目前为止我们已经尝试过什么
我们尝试了一些技巧,但没有取得太大效果......
-
添加数据时禁用自动计算
_application.Calculation = PjCalculation.pjManual;
-
添加数据期间禁用屏幕更新
_application.ScreenUpdating = false;
-
禁用更改突出显示
_application.EnableChangeHighlighting = false;
-
禁用状态栏
_application.DisplayStatusBar = false;
将撤消值设置为 1
- 将默认视图设置为“任务表视图”(而不是“甘特视图”,后者在加载过程中会产生更多开销)。
寻求帮助
我正在寻求有关使用 VSTO 插件和 C# 将数据加载到 MS Project 时提高性能的任何解决方案的帮助。
提前致谢!
是的,使用任务依赖项.添加 https://msdn.microsoft.com/en-us/library/office/ff862292.aspx创建关系的方法极其缓慢。
这是不幸的,因为这是使用的合乎逻辑的方法。唯一的解决方法是提前构建前驱列表。获得该列表后,您可以通过两种方式创建关系:
- 添加到现有时间表
- 通过导入包含前置任务列表的任务数据来创建新计划
由于您的数据已经是表格形式,因此使用项目导入向导从 csv 或 Excel 文件导入数据效果非常好。
要使用项目导入向导,请选择要从 MS Project 中打开的 csv 或 Excel 文件(文件 -> 打开)。该向导将引导您完成创建导入映射的步骤,您可以保存该导入映射以供稍后自动化使用。在导入数据中包含“前任”列,向导将在几秒钟内为您创建关系。
任务前辈领域 https://support.office.com/en-us/article/Predecessors-task-field-5a5ea9c2-14e6-4be7-9a3d-d8b6cba10cab包含以逗号分隔的前趋列表。每个前任的格式如下:
- Task ID
- 关系类型(FS、FF、SS、SF)
- 滞后 (+/- #d)
具有 FS 类型且无滞后的前置任务仅显示任务 ID。以下是前导字段值的一些示例:
- 14,126,127
- 73,92SS
- 144FS+3d,145
如何从关系表创建前导字段值
假设一个关系表包含前驱和后继的任务 ID:
- 创建一个包含整数键(后继任务 ID)和字符串值(前置任务)的字典。
- 循环关系表,将后继任务ID及其前驱任务添加到字典中;如果已存在,则更新该值以附加逗号和前导。
- 循环字典并 A) 更新 csv 文件中的前导列orB) 在计划中的后继任务上设置前置字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)