Poslední aktualizace: 02. září 2026

Vedoucí open source API pro práci s MS Project (MPP) a Primavera (XER) soubory
V podnikovém řízení projektů vládnou dva proprietární formáty souborů: Microsoft Project (.mpp) a Oracle Primavera P6 (.xer). Ať už vytváříte interní analytický dashboard, synchronizujete stavební harmonogramy s ERP systémy nebo automatizujete pipeline stavů projektů, čtení a manipulace s těmito plánovacími soubory programově je kritickým požadavkem.
Nicméně oba formáty představují notorické inženýrské překážky:
- MPP files jsou binární, nedokumentované OLE Structured Storage nebo proprietární formáty složených dokumentů se změnami schématu napříč prakticky každým hlavním vydáním MS Project (2000, 2003, 2007, 2010, 2013, 2016, 2019, 2021).
- Primavera XER files jsou tabulkově oddělené textové exporty strukturované jako relační databázové tabulky (
%Ttabulky s%Fpoli a%Rzáznamy), naplněné složitými omezeními referenční integrity, děděním více kalendářů a logikou kritické cesty.
Komerní SDK jako Aspose.Tasks existují, ale náklady na licence a vázanost na dodavatele činí robustní open-source alternativy nezbytnými. V tomto průvodci rozebíráme nejlepší open-source API, knihovny a parsery dostupné pro Javu, Python a C#, které umožňují čistě a efektivně pracovat se soubory MPP a XER.
Rychlé srovnání open-source nástrojů
| Knihovna / Nástroj | Primární jazyk | Podporované formáty | Čtení / zápis | Nejlepší případ použití |
|---|---|---|---|---|
| MPXJ | Java (Python / .NET vazby) | MPP, MPT, MPX, XER, PMXML, MSPDI | Čtení (MPP/XER); Zápis (MPX/MSPDI/PMXML) | Enterprise Java, konverze více formátů, vše v jednom plány |
| xerparser | Python | XER | Číst a zpracovat | Data science, analýza plánování pomocí pandas, ETL pipeline |
| python-mpxj | Python | MPP, XER, XML | Číst / převést | Pythonický wrapper kolem MPXJ používající JPype |
| netezza-xer / xer-to-csv | Shell / Python / Go | XER | Proud / Export | Extrahování surových tabulek podobných SQL do relačních databází |
| OpenProj / ProjectLibre Core | Java | MPP (starší verze), XML | Číst / Renderovat | Integrace desktop/engine pro základní Ganttovy pohledy |
1. MPXJ (Microsoft Project eXchange v Javě)
Nezpochybnitelný průmyslový standard pro interoperabilitu rozvrhů
Pokud existuje zlatý standard v open-source knihovnách pro plánování, je to MPXJ. Aktivně udržovaný více než dvě desetiletí Jonem Ilesem, MPXJ byl původně vytvořen pro zpracování souborů Microsoft Project MPX, ale rozšířil se na univerzální překladový engine pro formáty plánování projektů.
Klíčové schopnosti
- Přímý extrakt MPP: Analyzuje proprietární binární soubory MPP napříč téměř všemi verzemi MS Project (Project 98 až po moderní Project 2016/2019/2021/365) bez nutnosti nainstalované kopie Microsoft Project.
- Parsování Primavera P6 XER & PMXML: Nativní podpora jak textových výpisů
.xer, tak moderních souborů Primavera XML. - Normalizovaný datový model: Poskytuje jednotný objektový model (
ProjectFile,Task,Resource,ResourceAssignment,Relation,WorkCalendar). Bez ohledu na to, zda je vaším vstupem MPP nebo XER, váš aplikační kód pracuje se stejným API. - Vícejazyčná distribuce: Ačkoliv je napsán v Javě, MPXJ distribuuje nativně zkompilované NuGet balíčky pro .NET (C#) přes IKVM/CoreCLR, stejně jako Python balíček (
mpxjna PyPI).
Rychlý příklad kódu: 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());
}
}
}
}
Kde MPXJ vyniká
- Skutečná normalizace napříč formáty (převod MPP na XER-kompatibilní PMXML nebo MSPDI).
- Komplexní logika kalendáře (směny, výjimky, pracovní hodiny napříč více kalendáři).
- Stabilita úrovně produkce s aktivní komunitou.
2. xerparser (Python)
Lehký, nativní Pythonový parser pro Primavera XER
Zatímco MPXJ lze volat pomocí Pythonových vazeb, vyžaduje to spuštění JVM backendu (prostřednictvím JPype). Když potřebujete čistě nativní Python parser, který běží bez Java závislostí, xerparser je řešení, na které se spolehnout.
Soubor XER je v podstatě snímek databáze vyexportovaný do plochého textu. xerparser dekóduje tyto tabulky do strukturovaných Python objektů a bezproblémově se integruje s pandas.
Klíčové schopnosti
- Žádné Java závislosti: Čistá knihovna Python 3 instalovatelná pomocí
pip install xerparser. - Relacionální integrita: Mapuje základní tabulky Primavera, jako jsou
TASK(aktivity),PROJECT(metadata projektu),PROJWBS(hierarchie WBS),TASKRSRC(přiřazení) aTASKPRED(logické vazby). - Rychlé provádění: Ideální pro kontejnerizované mikroservisy, funkce AWS Lambda a moderní datové orchestraci pipeline (např. Apache Airflow, Prefect).
Rychlý příklad kódu: 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())
Kde xerparser vyniká
- Datové inženýrství, analýza zpoždění a nároků a kontrola zdraví rozvrhu (DCMA 14‑bodové hodnotící skripty).
- Serverless úlohy, kde je balení Java runtime nad 50 MB nepraktické.
3. python-mpxj
Propojení Pythonu s plnou silou MPXJ
Pokud pracujete v Pythonu, ale musíte zpracovávat binární soubory .mpp, xerparser vám nemůže pomoci, protože cílí pouze na .xer. Nejspolehlivějším open-source mostem je python-mpxj.
Klíčové schopnosti
- Automaticky spouští bezhlavý vestavěný JVM pomocí
jpype1. - Zpřístupňuje kompletní MPXJ API přímo vývojářům v Pythonu.
- Umožňuje přímou konverzi z proprietárního
.mppdo moderních otevřených formátů, jako jsou.jsonnebo.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. Vlastní nástroje pro parsování a skripty pro načítání databáze
Zpracování surových souborů Primavera XER pomocí streamového zpracování
Protože Primavera XER používá předvídatelný tabulkový formát, mnoho open-source inženýrských týmů využívá vlastní dekodéry tabulkových streamů (psané v Go, Pythonu nebo Rustu) místo vysoce úrovňových knihoven pro rozvrh ve stylu DOM.
Struktura souboru XER je formátována jako:
%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
Několik open-source skriptů na GitHubu (například xer2sqlite a xer-to-csv) parsuje tuto strukturu přímo do SQLite nebo PostgreSQL. Tento přístup je optimální, pokud:
- Potřebujete pouze dotazovat tabulární vztahy pomocí SQL.
- Plány mají velikost stovek megabajtů s desítkami tisíc úkolů, kde by objektově orientované načítače stromů vyvolaly chyby nedostatku paměti.
Technické srovnání: Které si vybrat?
Zvolte MPXJ, pokud:
- Musíte číst binární soubory Microsoft Project
.mppbez placení za proprietární komerční software. - Potřebujete hlubokou inteligenci plánů: pracovní kalendáře, výpočty prodlev, výpočet kritické cesty a odchylky základní linie.
- Váš technologický stack je Java, Kotlin, C# (.NET) nebo podnikovým Pythonem.
Zvolte xerparser, pokud:
- Exkluzivně pracujete se soubory Primavera P6
.xer. - Váš pipeline je napsán v nativním Pythonu a přímo vstupuje do pandas, NumPy nebo vizualizérů jako Dash / Streamlit.
- Nasazujete do úsporných kontejnerových prostředí nebo serverless cloudových běžců.
Zvolte přímý DB/CSV stream ingest, pokud:
- Potřebujete vysokokapacitní databázové zpracování pro masivní exporty XER z více projektů podniku.
- Potřebujete pouze extrahovat metadata, nákladové účty a křivky postupu pomocí SQL analytiky.
Shrnutí a osvědčené postupy
Při vytváření open-source pipeline pro plánovací data:
- Nikdy neparsujte
.mppručně: Specifikace binárního formátu Microsoftu je složitá a nezdokumentovaná. Vždy se spoléhejte na osvědčené knihovny jako MPXJ. - Dejte pozor na časová pásma dat: Plány Primavera často zaznamenávají pracovní doby bez metadat časového pásma a spoléhaly se na projektové kalendáře. Zajistěte, aby váš ingestní pipeline zohledňoval posuny 8‑hodinových pracovních dnů oproti 24‑hodinovým kalendářním dnům.
- Ověřte referenční integritu: V souborech XER se často vyskytují osiřelé záznamy (např. úkoly odkazující na smazané uzly WBS) u ručně vytvořených exportů projektů. Vždy obranně ověřujte cizí klíče během ETL.
Často kladené otázky
**Q1: 1. Mohou open-source knihovny přímo zapisovat nebo aktualizovat nativní binární soubory .mpp?
A1: Ne, kvůli proprietárnímu binárnímu formátu Microsoftu mohou open-source knihovny spolehlivě číst soubory .mpp, ale zápisy jsou obvykle exportovány do standardních formátů jako MSPDI (XML) nebo MPX.
**Q2: Potřebuji mít na serveru nainstalovaný Microsoft Project nebo Primavera P6, abych mohl tyto soubory parsovat?
A2: Ne, knihovny jako MPXJ a xerparser jsou samostatné parsery, které zpracovávají soubory přímo, aniž by vyžadovaly licence na hostitelský software.
**Q3: Jaká je nejlepší nativní knihovna Pythonu pro parsování souborů Primavera P6 XER bez závislosti na Javě?
A3: xerparser je špičková čistě Pythonová volba pro parsování XER výpisů přímo do nativních slovníků a pandas DataFrames.
**Q4: Umí MPXJ převést soubory Microsoft Project MPP do formátů Primavera P6?
A4: Ano, MPXJ může načíst soubor .mpp a exportovat normalizovaný plán do formátu PMXML kompatibilního s Primavera.
**Q5: Proč jsou soubory Primavera XER snazší k parsování než soubory Microsoft Project MPP?
A5: XER soubory jsou čitelné pro člověka, tabulkově oddělené výpisy relačních databází, zatímco MPP soubory jsou proprietární, binární složené dokumentové struktury.
Zdroje formátů souborů
Novinky o formátech souborů – Váš jediné místo pro všechny novinky týkající se formátů souborů z celého světa Fóra o formátech souborů – Zadejte své dotazy ve fórech o formátech souborů a získejte užitečné informace od odborníků na formáty souborů a uživatelů komunity Wiki o formátech souborů – Prozkoumejte kategorie formátů souborů pro informace o různých formátech souborů Open Source API a knihovny pro řízení projektů