Welcome to MPXJ! This library provides a set of facilities to allow project information to be manipulated in Java and .Net. MPXJ supports five file formats, Microsoft Project Exchange (MPX), Microsoft Project (MPP,MPT), Microsoft Project Data Interchange (MSPDI XML), Microsoft Project Database (MPD), and Planner (XML).
The library is currently based around a set of data structures modelled on the data described by the MPP file format. All manipulation of project data takes place using these data structures, which can be read from or written to the various supported file formats. The notes in the following paragraphs explain the facilities MPXJ offers for each file format.
MPXJ is written and maintained in Java, however this is no barrier to using its functionality in .Net or PHP applications.
Thanks to the facilities provided by IKVM, the MPXJ distribution also contains a native .Net DLL version of MPXJ and its library dependencies. This allows MPXJ to be used from any .Net programming language (for example, C#, Visual Basic and so on), without having to be aware that the original code was written in Java. As part of the MPXJ release process the Java and .Net libraries are both exercised using the same set of regression tests to ensure that their behaviour is identical. Both the Java and .Net versions of the library are used in production commercial applications - so you can confident that the code will work for you!
One option for working with the functionality offered by MPXJ in your PHP application is to use a library like PHP/Java Bridge. PHP/Java Bridge can be used to expose the complete MPXJ API in PHP: you don't have to work in Java, C# or VB in order to work with Microsoft Project files.
The latest release of MPXJ can be downloaded from the project's SourceForge download page. The core MPXJ functionality is contained in the mpxj.jar file, which you will find in the root folder of the MPXJ distribution. The library is simple to use, and to illustrate this, a small number of sample files have been included in the utility source package of the distribution.
The MPP functionality depends on the POI library. In order to use the MPP functionality in MPXJ, the POI JAR file must be present on your classpath. A copy of this library can be found in the lib directory of the MPXJ distribution.
The MSPDI functionality depends on the Sun JAXB reference implementation. In order to use the MSPDI functionality the JAXB JAR files must be present on your classpath. Copies of the relevant libraries can be found in the lib directory of the MPXJ distribution.
The latest release of MPXJ can be downloaded from the project's SourceForge download page. The core MPXJ functionality is contained in the mpxj.dll file, which you will find in the lib.net folder of the MPXJ distribution. To use the library you will also need to ensure that the IKVM runtime DLLs are in visible to .Net. These are also provided in the lib.net folder of the MPXJ distribution.
The library is simple to use, and to illustrate this, a small number of sample files have been included in the utility source package of the distribution.
The MPP functionality depends on the POI library. In order to use the MPP functionality in MPXJ, the POI DLL file must be visible to .Net. A copy of this library can be found in the lib.net folder of the MPXJ distribution.
We're keen to hear from you about how you are using MPXJ, please drop me a note. If you use MPXJ as a part of an application that you redistribute, commercially or otherwise, drop us a line and we'll include a link to your website on the MPXJ page
Please let us know what features you'd like to see added to MPXJ. In addition, the MPP functionality is not complete as we have had to reverse engineer the data from the MPP file format, so we need to know if you have MPP files that can't be read, or don't contain the data you expect. The more of this feedback you can give us, the better we can make MPXJ!
We also very much welcome contributions of code to MPXJ. Please note however that by contributing code to MPXJ, you are assigning copyright for that code to Packwood Software. It is important for us to ensure that their is a single copyright owner for MPXJ to ensure that we can enforce the terms of MPXJ's license agreement where they are violated.
Are you developing a commercial product that uses MPXJ? Do you want to integrate MPXJ into your application? Is MPXJ missing a feature critical to your business? If the answer to any of these questions is yes, we can help you! We offer commercial development services and consultancy for users of MPXJ at competitive rates. Please get in touch by mailing me to see how we can work together.
MPXJ is distributed under the terms of the GNU LGPL, a copy of which can be found in the legal directory of the distribution. Please read this license carefully! It will cost you nothing to use MPXJ - but you must comply with the terms of the license. We have, and will continue to pursue any violations of the MPXJ LGPL that we are made aware of.
The functionality to read MPP files depends on the use of the POI library. The license for this library can be found in the legal directory of the distribution.
The functionality to read MSPDI and Planner files depends on the use of the JAXB library. The license for this library can be found in the legal directory of the distribution.
The functionality used to create .NET DLLs and the supporting libraries it requires depend on IKVM and GNU Classpath. The licenses for these libraries and utilities can be found in the legal directory of the distribution.
A copy of the JUnit library is provided for your convenience to allow you to run the regression tests provided with MPXJ. The license for JUnit can be found in the legal directory of the distribution.
This product includes software developed by the Apache Software Foundation (http://www.apache.org)
This product includes software developed by Sun Microsystems (https://jaxb.dev.java.net)
This product includes software developed by IKVM.NET (http://www.ikvm.net)
This product includes software developed by the GNU Classpath Project (http://www.gnu.org/software/classpath)
This product includes software developed by the JUnit Project (http://www.junit.org)