CINXE.COM
MPXJ
<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="canonical" href="http://www.mpxj.org/"> <link rel="next" href="CHANGELOG/"> <link rel="icon" href="images/favicon.png"> <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.20"> <title>MPXJ</title> <link rel="stylesheet" href="assets/stylesheets/main.66ac8b77.min.css"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> <script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> <script id="__analytics">function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-9R48LPVHKE"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-9R48LPVHKE",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-9R48LPVHKE",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> </head> <body dir="ltr"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#introduction" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <header class="md-header md-header--shadow" data-md-component="header"> <nav class="md-header__inner md-grid" aria-label="Header"> <a href="." title="MPXJ" class="md-header__button md-logo" aria-label="MPXJ" data-md-component="logo"> <img src="images/mpxj-white.svg" alt="logo"> </a> <label class="md-header__button md-icon" for="__drawer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> </label> <div class="md-header__title" data-md-component="header-title"> <div class="md-header__ellipsis"> <div class="md-header__topic"> <span class="md-ellipsis"> MPXJ </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> Introduction </span> </div> </div> </div> <script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> </label> <div class="md-search" data-md-component="search" role="dialog"> <label class="md-search__overlay" for="__search"></label> <div class="md-search__inner" role="search"> <form class="md-search__form" name="search"> <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> <label class="md-search__icon md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </label> <nav class="md-search__options" aria-label="Search"> <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> </button> </nav> </form> <div class="md-search__output"> <div class="md-search__scrollwrap" data-md-scrollfix> <div class="md-search-result" data-md-component="search-result"> <div class="md-search-result__meta"> Initializing search </div> <ol class="md-search-result__list" role="presentation"></ol> </div> </div> </div> </div> </div> <div class="md-header__source"> <a href="https://github.com/joniles/mpxj" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class="md-source__repository"> mpxj </div> </a> </div> </nav> </header> <div class="md-container" data-md-component="container"> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href="." title="MPXJ" class="md-nav__button md-logo" aria-label="MPXJ" data-md-component="logo"> <img src="images/mpxj-white.svg" alt="logo"> </a> MPXJ </label> <div class="md-nav__source"> <a href="https://github.com/joniles/mpxj" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class="md-source__repository"> mpxj </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> <span class="md-ellipsis"> Introduction </span> <span class="md-nav__icon md-icon"></span> </label> <a href="." class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Introduction </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#sponsors" class="md-nav__link"> <span class="md-ellipsis"> Sponsors </span> </a> </li> <li class="md-nav__item"> <a href="#file-formats" class="md-nav__link"> <span class="md-ellipsis"> File Formats </span> </a> </li> <li class="md-nav__item"> <a href="#languages" class="md-nav__link"> <span class="md-ellipsis"> Languages </span> </a> </li> <li class="md-nav__item"> <a href="#contact" class="md-nav__link"> <span class="md-ellipsis"> Contact </span> </a> </li> <li class="md-nav__item"> <a href="#licensing" class="md-nav__link"> <span class="md-ellipsis"> Licensing </span> </a> </li> <li class="md-nav__item"> <a href="#acknowledgements" class="md-nav__link"> <span class="md-ellipsis"> Acknowledgements </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="CHANGELOG/" class="md-nav__link"> <span class="md-ellipsis"> Changes </span> </a> </li> <li class="md-nav__item"> <a href="support/" class="md-nav__link"> <span class="md-ellipsis"> Support </span> </a> </li> <li class="md-nav__item"> <a href="supported-formats/" class="md-nav__link"> <span class="md-ellipsis"> File Formats </span> </a> </li> <li class="md-nav__item"> <a href="https://mpxj.teemill.com/collection/all-products/" class="md-nav__link"> <span class="md-ellipsis"> Store </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" > <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0"> <span class="md-ellipsis"> Getting Started </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6"> <span class="md-nav__icon md-icon"></span> Getting Started </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="howto-start-java/" class="md-nav__link"> <span class="md-ellipsis"> Getting Started with Java </span> </a> </li> <li class="md-nav__item"> <a href="howto-dotnet/" class="md-nav__link"> <span class="md-ellipsis"> Getting Started with .Net </span> </a> </li> <li class="md-nav__item"> <a href="howto-start-python/" class="md-nav__link"> <span class="md-ellipsis"> Getting Started with Python </span> </a> </li> <li class="md-nav__item"> <a href="howto-start-ruby/" class="md-nav__link"> <span class="md-ellipsis"> Getting Started with Ruby </span> </a> </li> <li class="md-nav__item"> <a href="howto-com/" class="md-nav__link"> <span class="md-ellipsis"> Getting Started with COM </span> </a> </li> <li class="md-nav__item"> <a href="howto-start/" class="md-nav__link"> <span class="md-ellipsis"> MPXJ Basics </span> </a> </li> <li class="md-nav__item"> <a href="howto-build/" class="md-nav__link"> <span class="md-ellipsis"> Building MPXJ </span> </a> </li> <li class="md-nav__item"> <a href="howto-convert/" class="md-nav__link"> <span class="md-ellipsis"> Converting Files </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" > <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0"> <span class="md-ellipsis"> How to Read... </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7"> <span class="md-nav__icon md-icon"></span> How to Read... </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="howto-read-asta/" class="md-nav__link"> <span class="md-ellipsis"> Asta files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-conceptdraw/" class="md-nav__link"> <span class="md-ellipsis"> ConceptDraw PROJECT files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-openplan/" class="md-nav__link"> <span class="md-ellipsis"> Deltek Open Plan BK3 files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-fasttrack/" class="md-nav__link"> <span class="md-ellipsis"> FastTrack files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-ganttdesigner/" class="md-nav__link"> <span class="md-ellipsis"> Gantt Designer files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-ganttproject/" class="md-nav__link"> <span class="md-ellipsis"> GanttProject files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-merlin/" class="md-nav__link"> <span class="md-ellipsis"> Merlin files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-mpd/" class="md-nav__link"> <span class="md-ellipsis"> MPD files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-mpd-database/" class="md-nav__link"> <span class="md-ellipsis"> MPD databases </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-mpp/" class="md-nav__link"> <span class="md-ellipsis"> MPP files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-mpx/" class="md-nav__link"> <span class="md-ellipsis"> MPX Files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-mspdi/" class="md-nav__link"> <span class="md-ellipsis"> MSPDI files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-p3/" class="md-nav__link"> <span class="md-ellipsis"> P3 files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-primavera/" class="md-nav__link"> <span class="md-ellipsis"> P6 Databases </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-phoenix/" class="md-nav__link"> <span class="md-ellipsis"> Phoenix files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-planner/" class="md-nav__link"> <span class="md-ellipsis"> Planner files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-plf/" class="md-nav__link"> <span class="md-ellipsis"> PLF files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-pmxml/" class="md-nav__link"> <span class="md-ellipsis"> PMXML files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-projectcommander/" class="md-nav__link"> <span class="md-ellipsis"> Project Commander files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-projectlibre/" class="md-nav__link"> <span class="md-ellipsis"> ProjectLibre files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-schedule-grid/" class="md-nav__link"> <span class="md-ellipsis"> Schedule Grid files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-sdef/" class="md-nav__link"> <span class="md-ellipsis"> SDEF files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-suretrak/" class="md-nav__link"> <span class="md-ellipsis"> SureTrak files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-synchro/" class="md-nav__link"> <span class="md-ellipsis"> Synchro Scheduler files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-turboproject/" class="md-nav__link"> <span class="md-ellipsis"> TurboProject files </span> </a> </li> <li class="md-nav__item"> <a href="howto-read-xer/" class="md-nav__link"> <span class="md-ellipsis"> XER files </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" > <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0"> <span class="md-ellipsis"> How to Write... </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_8"> <span class="md-nav__icon md-icon"></span> How to Write... </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="howto-write-mpx/" class="md-nav__link"> <span class="md-ellipsis"> MPX files </span> </a> </li> <li class="md-nav__item"> <a href="howto-write-mspdi/" class="md-nav__link"> <span class="md-ellipsis"> MSPDI files </span> </a> </li> <li class="md-nav__item"> <a href="howto-write-planner/" class="md-nav__link"> <span class="md-ellipsis"> Planner files </span> </a> </li> <li class="md-nav__item"> <a href="howto-write-pmxml/" class="md-nav__link"> <span class="md-ellipsis"> PMXML files </span> </a> </li> <li class="md-nav__item"> <a href="howto-write-sdef/" class="md-nav__link"> <span class="md-ellipsis"> SDEF files </span> </a> </li> <li class="md-nav__item"> <a href="howto-write-xer/" class="md-nav__link"> <span class="md-ellipsis"> XER files </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" > <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0"> <span class="md-ellipsis"> How to Use... </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_9"> <span class="md-nav__icon md-icon"></span> How to Use... </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="howto-use-baselines/" class="md-nav__link"> <span class="md-ellipsis"> Baselines </span> </a> </li> <li class="md-nav__item"> <a href="howto-use-calendars/" class="md-nav__link"> <span class="md-ellipsis"> Calendars </span> </a> </li> <li class="md-nav__item"> <a href="howto-use-external-projects/" class="md-nav__link"> <span class="md-ellipsis"> External Projects </span> </a> </li> <li class="md-nav__item"> <a href="howto-use-fields/" class="md-nav__link"> <span class="md-ellipsis"> Fields </span> </a> </li> <li class="md-nav__item"> <a href="howto-use-universal/" class="md-nav__link"> <span class="md-ellipsis"> Universal Project Reader </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" > <label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0"> <span class="md-ellipsis"> Field Guides... </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_10"> <span class="md-nav__icon md-icon"></span> Field Guides... </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="field-guide/" class="md-nav__link"> <span class="md-ellipsis"> Field Guide </span> </a> </li> <li class="md-nav__item"> <a href="mpp-field-guide/" class="md-nav__link"> <span class="md-ellipsis"> MPP Field Guide </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../apidocs/" class="md-nav__link"> <span class="md-ellipsis"> JavaDoc </span> </a> </li> <li class="md-nav__item"> <a href="faq/" class="md-nav__link"> <span class="md-ellipsis"> FAQ </span> </a> </li> <li class="md-nav__item"> <a href="users/" class="md-nav__link"> <span class="md-ellipsis"> Users </span> </a> </li> <li class="md-nav__item"> <a href="../summary.html" class="md-nav__link"> <span class="md-ellipsis"> Maven Reports </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#sponsors" class="md-nav__link"> <span class="md-ellipsis"> Sponsors </span> </a> </li> <li class="md-nav__item"> <a href="#file-formats" class="md-nav__link"> <span class="md-ellipsis"> File Formats </span> </a> </li> <li class="md-nav__item"> <a href="#languages" class="md-nav__link"> <span class="md-ellipsis"> Languages </span> </a> </li> <li class="md-nav__item"> <a href="#contact" class="md-nav__link"> <span class="md-ellipsis"> Contact </span> </a> </li> <li class="md-nav__item"> <a href="#licensing" class="md-nav__link"> <span class="md-ellipsis"> Licensing </span> </a> </li> <li class="md-nav__item"> <a href="#acknowledgements" class="md-nav__link"> <span class="md-ellipsis"> Acknowledgements </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <h1 id="introduction">Introduction</h1> <p>Welcome to MPXJ! This library enables you to read project plans (sometimes known as schedules or programmes) from a variety of file formats and databases, and can also write that information to a variety of file formats.</p> <p>The library is based on data structures which follow the way schedule data is represented by Microsoft Project, extended to accommodate features and concepts from other applications.</p> <h2 id="sponsors">Sponsors</h2> <p>Work to build and maintain MPXJ is kindly supported by my sponsors:</p> <p float="left" align="middle" style="margin-block-end: 0em; margin-block-start: 0em;"> <a href="https://www.alicetechnologies.com/"><img width="22%" alt="ALICE Technologies Logo" src="images/alice.png"/></a> <img width="8%"/> <a href="https://steelray.com/"><img width="30%" alt="Steelray Logo" src="images/steelray.png"/></a> <img width="5%"/> <a href="https://www.vosesoftware.com/"><img width="30%" alt="Vose Logo" src="images/vose.png"/></a> </p> <p float="left" align="middle" style="margin-block-end: 0em; margin-block-start: 0em;"> <a href="https://buildots.com/"><img width="25%" alt="Buildots Logo" src="images/buildots.png"/></a> <img width="10%"/> <a href="https://www.onepager.com/"><img width="15%" alt="OnePager Logo" src="images/onepager.png"/></a> <img width="10%"/> <a href="https://www.bryntum.com/"><img width="30%" alt="Bryntum Logo" src="images/bryntum.png"/></a> </p> <p float="left" align="middle" style="margin-block-end: 0em; margin-block-start: 0em;"> <a href="https://www.turbo-chart.com/"><img width="15%" alt="Turbo Chart Logo" src="images/turbo-chart.png"/></a> <img width="15%"/> <a href="https://www.rationalplan.com/"><img width="15%" alt="RationalPlan Logo" src="images/rationalplan.png"/></a> <img width="15%"/> <a href="https://corasystems.com/"><img width="22%" alt="Cora Systems Logo" src="images/cora.png"/></a> </p> <p>Head over to my <a href="https://github.com/sponsors/joniles">sponsors page</a> if you'd like to see your name and logo here, or if you just want to say thanks you could <a href="https://buymeacoffee.com/joniles">buy me a coffee</a>!</p> <h2 id="file-formats">File Formats</h2> <p>MPXJ can read file formats including MPX, MPP, MSPDI, MPD, Planner, Primavera P6 PMXML and XER, Primavera P3, SureTrak, Asta Powerproject, Asta Easyplan, Phoenix, Fasttrack, GanttProject, TurboProject, ConceptDraw PROJECT, Synchro, Gantt Designer, SDEF, Sage 100 Contractor Schedule Grid, Project Commander and Deltek Open Plan BK3.</p> <p>MPXJ can also write schedule data as MPX, MSPDI, PMXML, XER, Planner and SDEF files.</p> <p>More details of the supported file formats can be found <a href="supported-formats/">here</a>.</p> <h2 id="languages">Languages</h2> <p>MPXJ is written and maintained in Java, however this is no barrier to using its functionality in other languages. Thanks to <a href="https://github.com/ikvmnet/ikvm">IKVM</a>, MPXJ is <a href="https://www.nuget.org/packages/MPXJ.Net">available for .Net</a>, allowing it to be used from any .Net language.</p> <p>There is also now a <a href="https://rubygems.org/gems/mpxj">Ruby Gem</a> which provides native Ruby access to read from schedule files using MPXJ, and a <a href="https://pypi.org/project/mpxj/">Python package</a> which wraps the Java library to provide full read/write access to schedule files.</p> <p>You may be able to leverage MPXJ from other languages too, for example the <a href="http://php-java-bridge.sourceforge.net">PHP/Java Bridge</a> can be used to expose the complete MPXJ API in PHP.</p> <h2 id="contact">Contact</h2> <p>Having problems? Need support? All the details you need can be found on the <a href="support/">support page</a>.</p> <p>Using MPXJ successfully somewhere? I'd <a href="mailto:jon@timephased.com">love to hear from you</a> about your experiences. Do tell me what's missing or what could be better - I can use this feedback to guide future development work. It would also be great to add a link to your website from the <a href="users/">MPXJ users page</a>.</p> <p>Finally, if you're deriving value from MPXJ, please consider <a href="https://github.com/sponsors/joniles">sponsoring me</a>, to ensure I can continue enhancing and maintaining the library, or just <a href="https://buymeacoffee.com/joniles">buy me a coffee</a> - thank you!</p> <h2 id="licensing">Licensing</h2> <p>MPXJ is distributed under the terms of the <a href="http://www.gnu.org/licenses/licenses.html#LGPL">GNU LGPL</a> a copy of which can be found in the root of the distribution. Please read this license carefully! It will cost you nothing to use MPXJ commercially or non-commercially, but you must comply with the terms of the license.</p> <p>Please see the legal folder within the distribution for details of the licences for the third party libraries used by MPXJ.</p> <h2 id="acknowledgements">Acknowledgements</h2> <p>This library includes functionality provided by:</p> <ul> <li><a href="http://poi.apache.org/">POI</a></li> <li><a href="https://github.com/ikvmnet/ikvm">IKVM</a></li> <li><a href="https://github.com/joniles/rtfparserkit">RTF Parser Kit</a></li> <li><a href="https://github.com/xerial/sqlite-jdbc">SQLITE-JDBC</a></li> <li><a href="https://github.com/madler/zlib">ZLIB/CONTRIB</a></li> <li><a href="http://jwat.org/">JWAT</a></li> <li><a href="http://jsoup.org/">JSOUP</a></li> </ul> <p>This library has been built with the assistance of:</p> <ul> <li><a href="https://www.ej-technologies.com/products/jprofiler/overview.html">JProfiler</a></li> <li><a href="https://www.araxis.com/merge/">Araxis Merge</a></li> </ul> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> </main> <footer class="md-footer"> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <script id="__config" type="application/json">{"base": ".", "features": ["content.tabs.link", "content.code.copy"], "search": "assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src="assets/javascripts/bundle.dd8806f2.min.js"></script> </body> </html>