导入Microsoft Project的里程碑完成率显示为99%问题求助
解决MPXJ生成XML导入MS Project 2016的里程碑与实际日期问题
我之前处理过类似的MPXJ生成项目文件导入MS Project的问题,给你几个实际验证过的排查和解决方向:
里程碑完成率跳回99%+实际日期N/A的核心原因
MS Project对里程碑的逻辑处理比较特殊:默认情况下,里程碑没有工时,即使你设置了%Complete=100%,它可能因为没有关联实际工时记录,自动将完成率调整为99%,同时隐藏实际完成日期。解决方法是在生成XML时,给里程碑明确绑定三个关键属性:
Task milestone = project.addTask(); milestone.setName("已完成里程碑"); milestone.setMilestone(true); // 确保实际完成日期与计划完成日期一致 milestone.setFinish(LocalDate.of(2024, 5, 20)); milestone.setActualFinish(LocalDate.of(2024, 5, 20)); // 同时设置完成率和工作完成率 milestone.setPercentComplete(100.0); milestone.setWorkComplete(100.0);%Work Complete显示0的修复
因为里程碑默认无工时,MS Project会默认将工作完成率设为0。你不需要给里程碑分配真实工时,只需要通过MPXJ强制设置workComplete=100.0,就能让MS Project正确识别为100%工作完成。实际完成日期显示N/A的排查步骤
- 手动打开生成的XML文件,搜索
ActualFinish节点,确认日期值格式正确(需为ISO标准格式,比如2024-05-20); - 如果使用的是普通XMLWriter,建议切换为MPXJ的
MSPDIWriter(Microsoft Project Data Interchange格式),它对MS Project的字段映射兼容性更好:ProjectWriter writer = new MSPDIWriter(); writer.write(project, new File("milestone_project.xml")); - 导入Project后,确保已开启「实际完成日期」列的显示,有时候该列默认隐藏,会误以为日期未导入。
- 手动打开生成的XML文件,搜索
内容的提问来源于stack exchange,提问作者Akhilesh
相关产品推荐
相关产品推荐

