Utoljára frissítve: 02 Szept, 2026

Vezető nyílt forráskódú API-k az MS Project (MPP) & Primavera (XER) fájlokhoz
Az vállalati projektmenedzsmentben két saját tulajdonú fájlformátum uralja a piacot: Microsoft Project (.mpp) és Oracle Primavera P6 (.xer). Akár belső analitikai irányítópultot épít, akár építési ütemterveket szinkronizál ERP rendszerekkel, vagy projektállapot‑csővezetékeket automatizál, ezen ütemezési fájlok programozott olvasása és manipulálása kritikus követelmény.
Azonban mindkét formátum híres mérnöki akadályokat jelent:
- MPP fájlok bináris, dokumentálatlan OLE Structured Storage vagy saját fejlesztésű összetett dokumentumformátumok, amelyek séma változásokat tartalmaznak szinte minden főbb MS Project kiadásban (2000, 2003, 2007, 2010, 2013, 2016, 2019, 2021).
- Primavera XER fájlok tabulátorral elválasztott szöveges exportok, amelyek relációs adatbázis táblákként (
%Ttáblák%Fmezőkkel és%Rrekordokkal) vannak felépítve, összetett referenciális integritási korlátozásokkal, többnaptári öröklődéssel és kritikus út logikával.
Kereskedelmi SDK-k, például az Aspose.Tasks léteznek, de a licencdíjak és a szállítói zárolás miatt elengedhetetlenek a robusztus nyílt forráskódú alternatívák. Ebben az útmutatóban bemutatjuk a legjobb nyílt forráskódú API-kat, könyvtárakat és elemzőket, amelyek Java, Python és C# nyelveken érhetők el az MPP és XER fájlok tiszta és hatékony kezeléséhez.
Gyors összehasonlítás a nyílt forráskódú eszközökről
| Könyvtár / Eszköz | Elsődleges nyelv | Támogatott formátumok | Olvasás / Írás | Legjobb felhasználási eset |
|---|---|---|---|---|
| MPXJ | Java (Python / .NET kötőprogramok) | MPP, MPT, MPX, XER, PMXML, MSPDI | Olvasás (MPP/XER); Írás (MPX/MSPDI/PMXML) | Enterprise Java, többformátumú konverzió, mindent egyben tartalmazó ütemezések |
| xerparser | Python | XER | Olvasás és feldolgozás | Adattudomány, pandas ütemezési elemzés, ETL folyamatok |
| python-mpxj | Python | MPP, XER, XML | Olvasás / Átalakítás | Pythonos csomag az MPXJ köré JPype használatával |
| netezza-xer / xer-to-csv | Shell / Python / Go | XER | Áramlás / Export | Nyers SQL-szerű táblák kinyerése relációs adatbázisokba |
| OpenProj / ProjectLibre Core | Java | MPP (régebbi verziók), XML | Olvasás / Megjelenítés | Asztali/Engine integráció az alap Gantt nézetekhez |
1. MPXJ (Microsoft Project csere Java-ban)
A vitathatatlan ipari szabvány az ütemezési interoperabilitáshoz
Ha van aranyszabvány a nyílt forráskódú ütemező könyvtárak között, az a MPXJ. Jon Iles több mint két évtizede aktívan karbantartja, az MPXJ eredetileg a Microsoft Project MPX fájlok feldolgozására készült, de kiterjedt egy univerzális fordító motorra a projekt ütemezési formátumokhoz.
Kulcsfontosságú képességek
- Közvetlen MPP kinyerés: A tulajdonosi bináris MPP fájlokat dolgozza fel szinte minden MS Project verzióban (Project 98-tól a modern Project 2016/2019/2021/365-ig), anélkül, hogy a Microsoft Project telepített példányára lenne szükség.
- Primavera P6 XER & PMXML elemzés: Natív támogatás mind a szöveges alapú
.xerdumpokhoz, mind a modern Primavera XML fájlokhoz. - Normalizált adatmodell: Egy egységes objektummodellt (
ProjectFile,Task,Resource,ResourceAssignment,Relation,WorkCalendar) tesz elérhetővé. Függetlenül attól, hogy a bemenet MPP vagy XER, az alkalmazáskód ugyanazzal az API-val kommunikál. - Többnyelvű terjesztés: Bár Java-ban íródott, az MPXJ natív lefordított NuGet csomagokat biztosít .NET (C#) számára az IKVM/CoreCLR-en keresztül, valamint egy Python csomagot (
mpxja PyPI-n).
Gyors kódpélda: Java
import net.sf.mpxj.ProjectFile;
import net.sf.mpxj.Task;
import net.sf.mpxj.reader.UniversalProjectReader;
public class ScheduleReader {
public static void main(String[] args) throws Exception {
// UniversalProjectReader automatically detects whether it's MPP, XER, or XML
UniversalProjectReader reader = new UniversalProjectReader();
ProjectFile project = reader.read("capital_project_schedule.xer");
System.out.println("Project Name: " + project.getProjectProperties().getProjectTitle());
for (Task task : project.getTasks()) {
if (task.getName() != null) {
System.out.printf("Task ID: %d | WBS: %s | Name: %s | Early Start: %s%n",
task.getID(), task.getWBS(), task.getName(), task.getEarlyStart());
}
}
}
}
Ahol az MPXJ kiemelkedik
- Valódi keresztformátumú normalizálás (MPP átalakítása XER-kompatibilis PMXML vagy MSPDI formátumba).
- Összetett naptárlogika (munkaváltások, kivételek, több naptárra kiterjedő munkaidő).
- Termelési szintű stabilitás aktív közösséggel.
2. xerparser (Python)
Könnyű, natív Python elemzés a Primavera XER-hez
Bár az MPXJ Python kötéseken keresztül meghívható, ehhez JVM háttérprogram futtatása szükséges (JPype-on keresztül). Ha egy teljesen natív Python elemzőre van szükség, amely Java függőségek nélkül fut, a xerparser a megfelelő megoldás.
Az XER fájl lényegében egy adatbázis pillanatfelvétele, amely sík szövegként van kiírva. A xerparser dekódolja ezeket a táblákat strukturált Python objektumokká, és zökkenőmentesen integrálódik a pandas-szal.
Kulcsfontosságú képességek
- Nulla Java függőség: Tiszta Python 3 könyvtár, amely telepíthető a
pip install xerparserparanccsal. - Relációs integritás: Leképezi a Primavera alapvető tábláit, mint például a
TASK(tevékenységek),PROJECT(projekt metaadatok),PROJWBS(WBS hierarchiák),TASKRSRC(hozzárendelések) ésTASKPRED(logikai kapcsolatok). - Gyors végrehajtás: Ideális konténerizált mikroszolgáltatásokhoz, AWS Lambda függvényekhez és modern adat-orchestration csővezetékekhez (pl. Apache Airflow, Prefect).
Gyors kódpélda: Python
from xerparser.reader import Reader
import pandas as pd
# Load XER file
xer = Reader("plant_expansion.xer")
# Access projects inside the XER dump
for project in xer.projects:
print(f"Project Code: {project.short_name}, Description: {project.name}")
# Convert activities into a Pandas DataFrame for downstream analytics
tasks_data = []
for act in xer.activities:
tasks_data.append({
"Task_Code": act.task_code,
"Name": act.task_name,
"Status": act.status_code,
"Early_Start": act.early_start_date,
"Early_Finish": act.early_end_date,
"Total_Float": act.total_float_hr_cnt
})
df = pd.DataFrame(tasks_data)
print(df.head())
Ahol a xerparser kiemelkedik
- Adatmérnöki feladatok, késedelmi igények elemzése és ütemterv-ellenőrzések (DCMA 14 pontos értékelő szkriptek).
- Kiszolgáló nélküli feladatok, ahol egy 50 MB+ Java futtatókörnyezet csomagolása nem praktikus.
3. python-mpxj
A Python összekapcsolása az MPXJ teljes erejével
Ha Pythonban dolgozol, de kötelező bináris .mpp fájlokat feldolgozni, a xerparser nem segíthet, mivel csak .xer fájlokra irányul. A legmegbízhatóbb nyílt forráskódú átkötő a python-mpxj.
Kulcsfontosságú képességek
- Automatikusan elindít egy fej nélküli beágyazott JVM-et a
jpype1használatával. - Közvetlenül elérhetővé teszi a teljes MPXJ API-t a Python fejlesztők számára.
- Lehetővé teszi a közvetlen átalakítást a tulajdonosi
.mppformátumból modern nyílt formátumokra, mint a.jsonvagy.csv.
pip install mpxj
import mpxj
# MPXJ provides high-level helper utilities
from net.sf.mpxj.reader import UniversalProjectReader
reader = UniversalProjectReader()
project = reader.read("commercial_tower.mpp")
for task in project.getTasks():
if task.getName():
print(f"{task.getUniqueID()}: {task.getName()} -> {task.getDuration()}")
4. Egyedi elemző segédprogramok és adatbázis betöltő szkriptek
Nyers Primavera XER kezelése adatfolyam-feldolgozással
Mivel a Primavera XER egy kiszámítható táblázatformátumot követ, sok nyílt forráskódú mérnöki csapat egyedi táblázatos adatfolyam-dekódereket (Go‑ban, Pythonban vagy Rustban írt) használ a magas szintű DOM‑stílusú ütemterv‑könyvtárak helyett.
Az XER fájlstruktúra a következőképpen van formázva:
%T TASK
%F task_id proj_id wbs_id task_code task_name status_code
%R 10182 120 45 A1000 Mobilization TK_Complete
%R 10183 120 45 A1010 Excavation TK_Active
%E
Számos nyílt forráskódú szkript érhető el a GitHubon (például a xer2sqlite és a xer-to-csv), amelyek közvetlenül SQLite vagy PostgreSQL adatbázisba dolgozzák fel ezt a struktúrát. Ez a megközelítés akkor optimális, ha:
- Csak SQL-lel kell lekérdezni a táblázatos kapcsolatokat.
- A menetrendek mérete több száz megabájt, tízezrek feladatot tartalmaznak, ahol az objektum-orientált fa betöltők memóriahiányos hibákat okoznának.
Műszaki összehasonlítás: melyiket válaszd?
Válassza az MPXJ-t, ha:
- Bináris Microsoft Project
.mppfájlokat kell olvasni, anélkül, hogy fizetnél a tulajdonosi kereskedelmi szoftverért. - Mély menetrendi intelligenciára van szükséged: munkanapok naptára, késleltetési időtartam számítások, kritikus út számítása és az alapvonal varianciája.
- A technológiai stack-ed Java, Kotlin, C# (.NET) vagy vállalati Python.
Válassza a xerparser-t, ha:
- Kizárólag Primavera P6
.xerfájlokkal dolgozol. - A csővezetéked natív Python-ban íródott, és közvetlenül a pandas, NumPy vagy a Dash / Streamlit-szerű vizualizátorokba táplálja.
- Könnyű konténer környezetekbe vagy szerver nélküli felhő futtatókba telepít.
Válassza a közvetlen DB / CSV adatfolyam beolvasást, ha:
- Nagy áteresztőképességű adatbázis előkészítésre van szüksége a hatalmas, több projektet érintő vállalati XER exportokhoz.
- Csak metaadatokat, költségszámlákat és előrehaladási görbéket kell kinyernie SQL-elemzésekkel.
Összefoglalás és legjobb gyakorlatok
Nyílt forráskódú adatcsatornák építésekor ütemezési adatokhoz:
- Soha ne parse-olja manuálisan a
.mpp-t: A Microsoft bináris specifikáció összetett és dokumentálatlan. Mindig támaszkodjon a kipróbált könyvtárakra, mint a MPXJ. - Vigyázzon a dátum időzónákkal: A Primavera ütemezések gyakran rögzítik a munkavégzési időt anélkül, hogy időzóna metaadatot tartalmaznának, a projekt naptárakra támaszkodva. Győződjön meg arról, hogy az adatfelvételi csővezeték figyelembe veszi a 8 órás munkanap eltolásokat a 24 órás naptári napokhoz képest.
- Érvényesítse a referenciális integritást: XER fájlokban gyakran előfordulnak árvák rekordok (pl. feladatok, amelyek törölt WBS csomópontokra mutatnak) a manuálisan létrehozott projekt exportokban. Mindig védekező módon ellenőrizze a külső kulcsokat az ETL során.
GYIK
**Q1: 1. Képesek-e a nyílt forráskódú könyvtárak közvetlenül natív bináris .mpp fájlokat írni vagy frissíteni?
A1: Nem, a Microsoft tulajdonosi bináris formátuma miatt a nyílt forráskódú könyvtárak megbízhatóan olvashatják a .mpp fájlokat, de az írások általában szabványos formátumokra, például MSPDI (XML) vagy MPX exportálódnak.
**Q2: Szükségem van Microsoft Project vagy Primavera P6 telepítésére a szerveren a fájlok feldolgozásához?
A2: Nem, az MPXJ és a xerparserhez hasonló könyvtárak önálló elemzők, amelyek közvetlenül dolgozzák fel a fájlokat, anélkül, hogy a gazda szoftver licencét igényelnék.
**Q3: Mi a legjobb natív Python könyvtár a Primavera P6 XER fájlok Java-függőségek nélküli feldolgozásához?
A3: A xerparser a legkiemelkedőbb tisztán Python megoldás az XER dumpok közvetlen feldolgozásához natív szótárakba és pandas DataFrame-ekbe.
**Q4: Átalakíthatja-e az MPXJ a Microsoft Project MPP fájlokat Primavera P6 formátumokká?
A4: Igen, az MPXJ képes beolvasni egy .mpp fájlt, és exportálni a normalizált ütemtervet Primavera-kompatibilis PMXML formátumba.
**Q5: Miért könnyebb feldolgozni a Primavera XER fájlokat, mint a Microsoft Project MPP fájlokat?
A5: XER fájlok ember által olvasható, tabulátorral elválasztott relációs adatbázis dumpok, míg az MPP fájlok tulajdonosi, bináris összetett dokumentumstruktúrák.
Fájlformátum erőforrások
Fájlformátum Hírek – Az egyetlen hely minden, a világ minden tájáról származó fájlformátumokkal kapcsolatos hírhez Fájlformátum Fórumok – Tegye fel kérdéseit a fájlformátum fórumokon, hogy hasznos információkat kapjon a fájlformátum szakértőktől és a közösségi felhasználóktól Fájlformátum Wiki – Fedezze fel a fájlformátum kategóriákat a különböző fájlformátumokkal kapcsolatos információkért Nyílt forráskódú API-k és könyvtárak projektmenedzsmenthez