1 mpp简单介绍:
mpp指的是Microsoft Office Project文件。用于定制计划,主要参数有任务名称,资源名称,工期,开始时间,结束时间,工期通过工作时间及开始时间结束时间推算出来(工作时间:每星期工作几天,工作时间段为什么。可指定特定的工作日,工作时间段可单独设置)。也可以拆分任务,例如:一汽新需求外委,中间几天可能需要解决bug那么这几天不算在工期内,但是时间段包含解决bug的消耗时间。
2 操作mpp需要导入系统的jar包:
activation.jar,jaxb-api.jar,jaxb-impl.jar,jsr173_1.0_api.jar,poi-3.2-FINAL-20081019.jar,
mpxj.jar。(mpxj依赖于上面的jar包。) 以上包都可以在mpxj网站下载,直接下载mpxj3.0 的源码,源码中包含以上包。(注意:下载的mpxj源码中自带的mpxj.jar包直接导入项目会有问题,请将源码直接编译成class文件然后打成jar包再导入系统。)
3重要的类及属性简介:
Task | 阶段 |
---|---|
Name : | 阶段名称。 |
UniqueID: | 唯一编号。 |
ID: | 编号(唯一编号和编号可能不同)。 |
OutlineLevel: | 阶段级别。(1代表最大的一个阶段,以此类推) |
Duration: | 工期。(已天为单位) |
Start: | 阶段开始时间 |
Finish: | 阶段结束时间 |
ActualStartDate: | 实际开始时间 |
ActualFinishDate: | 实际完成时间 |
Resource | 资源 |
---|---|
Name : | 资源名称。 |
资源分配中的信息直接影响到导出mpp的准确性,如果只有任务的工期,没有在ResourceAssignment
中赋值则导出的阶段工期就会出错。
ResourceAssignment | 资源分配 |
---|---|
RemainingWork: | 工期,已小时为单位例如阶段工期为5,则work=5*8 |
Work: | 同上 |
ActualWork: | 实际工作时间也是已小时为单位 |
Start: | 阶段开始时间 |
Finish: | 阶段结束时间 |
TimephasedResourceAssignment | 拆分时间段 |
---|---|
Start: | 时间段开始时间 |
Finish: | 时间段结束时间 |
TotalWork: | 总工作时间 |
WorkPerDay: | 每天的工作时间,已分钟为单位,一般为480 |
ProjectCalendar | 工作日历 |
---|---|
Name | 日历名称 |
setWorkingDay | 设置星期几是否工作 |
addCalendarHours | 设置星期几工作时间段 |
ProjectCalendarException | 特殊工作日 |
---|---|
FromDate: | 开始时间 |
ToDate: | 结束时间 |
Working | 是否工作 |
Range | 工作时间段 |
4 注意事项:
a)存储信息时不必将每个任务的"TimephasedResourceAssignment"信息存储起来,只有该阶段有拆分信息时该信息才有用。如果该阶段没有拆分存入该信息,导出时会导致数据错误。(TimephasedResourceAssignment:拆分时间段)
b)如果导入导出不一致可将导入的mpp转成xml,与导出的xml对比。(可能差别会很大,最好用删除的方法排除错误信息)
c)该项目还不完善有的功能目前还无法实现,如果碰到问题最好先在mpxj中直接导入导出试试看支不支持该功能。
5 参考资料:
mpxj官方网站: http://mpxj.sourceforge.net/
mpxj API: http://mpxj.sourceforge.net/apidocs/index.html
mpp xml标签解释:
http://www.microsoft.com/taiwan/office/project/prodinfo/saleguide/xmlstructure.mspx
6 简单例子:请下载代码