Introduction
If you want to read a Microsoft Project Plan (MPP) file in Java then you can use the MPXJ library to manipulate data of the MPP file. Using this library you can also create a new MPP file. For more information, you can refer to my
Article on the MPXJ Library.
To use this library you can use the following procedure:
- Add a reference of MPXJ.jar
- Import the following namespaces:
- import net.sf.mpxj;
- import net.sf.mpxj.reader;
- import net.sf.mpxj.writer;
- import net.sf.mpxj.mpp;
- Create an object of the ProjectReader and ProjectFile classes, as in:
- ProjectReader reader = new MPPReader();
- ProjectFile projectObj = reader.read();
- Tasks
- for (Task task : project.getAllTasks())
- {
- System.out.println("Task: " + task.getName() + " ID=" + task.getID() + " Unique ID=" + task.getUniqueID());
- }
- Resources
- for (Resource resource : project.getAllResources())
- {
- System.out.println("Resource: " + resource.getName() + " (Unique ID=" + resource.getUniqueID() + ")");
- }
- SubTasks
- List tasks = project.getChildTasks();
- Task task = tasks.get(0);
- tasks = task.getChildTasks();
- Access Resource and Task by ID
- Resource r = project.getResourceByUniqueID(Integer.valueOf(99));
- Task t = project.getTaskByUniqueID(Integer.valueOf(99));
- Calendar
- ProjectCalendar defaultCalendar = projectObj.getCalendar();
- ProjectCalendar taskCalendar = task.getCalendar();
- Predecessor relationships between tasks
- for (Task task: file.getAllTasks())
- {
- List predecessors = task.getPredecessors();
- if (predecessors != null && predecessors.isEmpty() == false)
- {
- System.out.println(task.getName() + " predecessors:");
- for (Relation relation: predecessors)
- {
- System.out.println(" Task: " + file.getTaskByUniqueID(relation.getTaskUniqueID()).getName());
- System.out.println(" Type: " + relation.getType());
- System.out.println(" Lag: " + relation.getDuration());
- }
- }
- }
- Now if we want to access tasks, subtasks, calendars or resources from a MPP file then we need to use the methods using a ProjectFile Object.
- There are many methods provided by MPXJ library you can use depending on your requirements.
- Now if you want to create an MPP file then use the following:
- Create Source ProjectFile Object
- ProjectReader reader = new MPPReader();
- ProjectFile sourceObj = reader.read();
- Create object of projectWriter class
- ProjectWriter writer = ProjectWriterUtility.getProjectWriter();
- writer.write(sourceObj, );
Reference