Son Yenilənmə: 02 Sentyabr, 2026

Best Open Source APIs for Parsing MS Project MPP & Primavera XER Files

MS Project (MPP) və Primavera (XER) Faylları ilə İşləmək Üçün Öncül Açıq Mənbə API-ləri

Enterprise layihə idarəçiliyində iki özəl fayl formatı üstünlük təşkil edir: Microsoft Project (.mpp)Oracle Primavera P6 (.xer). Daxili analitika paneli qurursunuz, tikinti cədvəllərini ERP sistemləri ilə sinxronlaşdırırsınız, ya da layihə statusu boru kəmərlərini avtomatlaşdırırsınız, bu cədvəl fayllarını proqram vasitəsilə oxumaq və manipulyasiya etmək vacib tələbatdır.

Bununla belə, hər iki format tanınmış mühəndislik çətinlikləri yaradır:

  • MPP files ikili, sənədləşdirilməmiş OLE Structured Storage və ya özəl birləşmiş sənəd formatlarıdır, sxem dəyişiklikləri demək olar ki, hər bir əsas MS Project buraxılışında (2000, 2003, 2007, 2010, 2013, 2016, 2019, 2021) mövcuddur.
  • Primavera XER files tab-əlaqəli mətn ixraclarıdır, əlaqəli verilənlər bazası cədvəlləri kimi qurulmuş (%T cədvəlləri %F sahələri və %R qeydləri ilə), mürəkkəb istinad bütövlüyü məhdudiyyətləri, çoxlu təqvim irsi və kritik yol məntiqi ilə doludur.

Aspose.Tasks kimi kommersiya SDK-ları mövcuddur, lakin lisenziya xərcləri və satıcıya bağlılıq güclü açıq mənbə alternativlərini vacib edir. Bu bələdçidə, MPP və XER fayllarını təmiz və səmərəli şəkildə idarə etmək üçün Java, Python və C# üzrə mövcud olan ən yaxşı açıq mənbə API-ləri, kitabxanaları və parserləri araşdırırıq.

Açıq Mənbə Alətlərin Sürətli Müqayisəsi

Kitabxana / AlətƏsas DilDəstəklənən FormatlarOxuma / YazmaƏn Yaxşı İstifadə Halları
MPXJJava (Python / .NET bağlayıcıları)MPP, MPT, MPX, XER, PMXML, MSPDIOxu (MPP/XER); Yaz (MPX/MSPDI/PMXML)Enterprise Java, çoxformatlı konversiya, hamısı‑bir cədvəllər
xerparserPythonXEROxu & ParçalaData elmi, pandas cədvəl planlaşdırma təhlili, ETL boru kəmərləri
python-mpxjPythonMPP, XER, XMLOxu / ÇevirJPype istifadə edərək MPXJ ətrafında Pythonic wrapper
netezza-xer / xer-to-csvShell / Python / GoXERAxın / İxracXam SQL-oxşar cədvəlləri əlaqəli verilənlər bazalarına çıxarmaq
OpenProj / ProjectLibre CoreJavaMPP (köhnə versiyalar), XMLOxu / RenderDesktop/Engine inteqrasiyası əsas Gantt görünüşləri üçün

1. MPXJ (Java-də Microsoft Project eXchange)

Cədvəl Əlaqəliliyində Qeyri-mübahisəli Sənaye Standartı

Əgər açıq mənbəli cədvəl kitabxanalarında qızıl standart varsa, o MPXJ-dir. Jon Iles tərəfindən iki onillikdən artıq aktiv şəkildə saxlanılan MPXJ, əvvəlcə Microsoft Project MPX fayllarını işləmək üçün yaradılmışdı, lakin layihə cədvəl formatları üçün universal tərcümə mühərrikinə çevrilib.

Əsas İmkanlar

  • Birbaşa MPP Çıxarışı: Proprietary binary MPP fayllarını demək olar ki, bütün MS Project versiyaları (Project 98-dən müasir Project 2016/2019/2021/365-ə qədər) üçün quraşdırılmış Microsoft Project nüsxəsi tələb etmədən təhlil edir.
  • Primavera P6 XER və PMXML Parsinqi: Həm mətn əsaslı .xer dump-ları, həm də müasir Primavera XML faylları üçün yerli dəstək.
  • Normalizə edilmiş Data Modeli: Birləşdirilmiş obyekt modelini (ProjectFile, Task, Resource, ResourceAssignment, Relation, WorkCalendar) təqdim edir. Girişiniz MPP və ya XER olsun, tətbiq kodunuz eyni API ilə işləyir.
  • Çoxdilli Paylama: Java‑da yazılmış olsa da, MPXJ IKVM/CoreCLR vasitəsilə .NET (C#) üçün yerli tərtib olunmuş NuGet paketləri və Python paketi (mpxj PyPI‑də) paylayır.

Sürətli Kod Nümunəsi: 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());
            }
        }
    }
}

MPXJ-nin Üstün Olduğu Yerlər

  • Doğru çarpaz format normallaşdırması (MPP-ni XER-uyğun PMXML və ya MSPDI-ə çevirmək).
  • Mürəkkəb təqvim məntiqi (növbələr, istisnalar, çox təqvimli iş saatları).
  • İstehsal səviyyəli sabitlik və aktiv icma.

2. xerparser (Python)

Primavera XER üçün Yüngül, Yerli Python Parsinqi

MPXJ Python bağlamaları vasitəsilə çağırıla bilsə də, bunu etmək üçün JVM arxa planını (JPype vasitəsilə) işə salmaq tələb olunur. Java asılılıqları olmadan icra olunan tamamilə yerli Python təhlilçisinə ehtiyac duyduğunuzda, xerparser əsas həlldir.

XER faylı əslində düz mətnə çıxarılan verilənlər bazası anlıq görüntüsüdür. xerparser bu cədvəlləri strukturlu Python obyektlərinə kodlayır və pandas ilə problemsiz inteqrasiya edir.

Əsas İmkanlar

  • Java Asılılığı Yox: pip install xerparser vasitəsilə quraşdırıla bilən təmiz Python 3 kitabxanası.
  • Əlaqəli Bütövlük: TASK (Fəaliyyətlər), PROJECT (Layihə metadatası), PROJWBS (WBS iyerarxiyaları), TASKRSRC (Təyinatlar) və TASKPRED (Məntiq əlaqələri) kimi əsas Primavera cədvəllərini xəritələyir.
  • Sürətli İcra: Konteynerləşdirilmiş mikroservislər, AWS Lambda funksiyaları və müasir məlumat orkestrasiya boru kəmərləri (məsələn, Apache Airflow, Prefect) üçün idealdır.

Sürətli Kod Nümunəsi: 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())

Xerparser harada üstünlük qazanır

  • Məlumat mühəndisliyi, gecikmə-iddia analitikası və cədvəl sağlamlıq yoxlamaları (DCMA 14-nöqtəli qiymətləndirmə skriptləri).
  • 50 MB+ Java icra mühitini paketləmək qeyri‑praktik olduğu serverless iş yükləri.

3. python-mpxj

Python-u MPXJ-nin tam gücü ilə birləşdirmək

Əgər Python ilə işləyirsinizsə, lakin mütləq binary .mpp fayllarını işləmək, xerparser sizə kömək edə bilməz, çünki yalnız .xer‑i hədəfləyir. Ən etibarlı açıq mənbə körpüsü python-mpxj‑dir.

Əsas İmkanlar

  • jpype1 istifadə edərək avtomatik olaraq başsız gömülü JVM‑i işə salır.
  • Tam MPXJ API‑ni birbaşa Python inkişaf etdiricilərinə təqdim edir.
  • Sahibli .mpp fayllarını .json və ya .csv kimi müasir açıq formatlara birbaşa çevirməyə imkan verir.
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. Xüsusi Parsinq Alətləri və Veritabanı İdxal Skriptləri

Axın Emalı ilə Xam Primavera XER-ın İdarə Edilməsi

Primavera XER proqnozlaşdırıla bilən cədvəl formatını izlədiyi üçün, bir çox açıq mənbə mühəndislik komandaları yüksək səviyyəli DOM‑üslublu cədvəl kitabxanalarından daha çox özəl cədvəl axını dekoderlərindən (Go, Python və ya Rust ilə yazılmış) istifadə edirlər.

XER fayl strukturu aşağıdakı kimi formatlanır:

%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

GitHub‑da bir neçə açıq mənbəli skript (məsələn, xer2sqlitexer-to-csv) bu strukturu birbaşa SQLite və ya PostgreSQL‑ə çevirir. Bu yanaşma aşağıdakı hallarda optimaldır:

  1. Siz yalnız SQL ilə cədvəl əlaqələrini sorğulamalısınız.
  2. Cədvəllər ölçüsü yüzlərlə megabayt, on minlərlə vəzifə ehtiva edir və obyekt‑oriyentasiya edilmiş ağac yükləyiciləri yaddaş çatışmazlığı xətalarına səbəb olardı.

Texniki Müqayisə: Hansını Seçməlisiniz?

MPXJ seçin, əgər:

  • Sahibkarlıq kommersiya proqram təminatına pul ödəmədən ikili Microsoft Project .mpp fayllarını oxumalısınız.
  • Dərin cədvəl intellekti lazımdır: iş qrafikləri, gecikmə müddəti hesablamaları, kritik yol hesablaması və əsas xətt variasiyası.
  • Texnologiya yığınınız Java, Kotlin, C# (.NET) və ya müəssisə Python‑udur.

xerparser seçin, əgər:

  • Siz yalnız Primavera P6 .xer faylları ilə işləyirsiniz.
  • Sizin boru kəməriniz yerli Python‑da yazılıb və birbaşa pandas, NumPy və ya Dash / Streamlit kimi vizuallaşdırıcılara yönəldilir.
  • Siz yüngül konteyner mühitlərinə və ya serverless bulud işçilərinə yerləşdirirsiniz.

Direct DB / CSV axını qəbul etməsini seçin, əgər:

  • Siz böyük çox-proyektli müəssisə XER ixracatları üçün yüksək sürətli verilənlər bazası mərhələləməsinə ehtiyacınız var.
  • Siz yalnız metadata, xərc hesabları və irəliləyiş qrafiklərini SQL analitikası vasitəsilə çıxarmaq lazımdır.

Xülasə və Ən Yaxşı Təcrübələr

Cədvəl məlumatları üçün açıq mənbəli boru kəmərləri qurarkən:

  1. Heç vaxt .mpp-ni əl ilə təhlil etməyin: Microsoft-un ikili spesifikasiyası mürəkkəb və sənədləşdirilməmişdir. Həmişə MPXJ kimi sınaqdan keçmiş kitabxanalara etibar edin.
  2. Tarix Zaman Zonasına Diqqət Edin: Primavera cədvəlləri tez-tez iş müddətini zaman zonası metadata-sı olmadan qeyd edir, layihə təqvimlərinə əsaslanır. İstifadə etdiyiniz yığma boru kəmərinin 8 saatlıq iş günü dəyişikliklərini və 24 saatlıq təqvim günlərini nəzərə aldığından əmin olun.
  3. Referensial Bütövlüyü Yoxlayın: XER fayllarında, əl ilə yaradılmış layihə ixracatlarında tez-tez yetim qeydlər (məsələn, silinmiş WBS düyünlərinə işarə edən tapşırıqlar) olur. ETL zamanı həmişə xarici açarları müdafiəkar şəkildə yoxlayın.

Tez-tez Soruşulan Suallar

**Q1: 1. Açıq mənbəli kitabxanalar yerli ikili .mpp fayllarını birbaşa yaza və ya yeniləyə bilərlərmi?

A1: Xeyr, Microsoft-un patentli ikili formatı səbəbindən, açıq mənbəli kitabxanalar .mpp fayllarını etibarlı şəkildə oxuya bilir, lakin yazma əməliyyatları adətən MSPDI (XML) və ya MPX kimi standart formatlara ixrac edilir.

**Q2: Bu faylları təhlil etmək üçün serverimdə Microsoft Project və ya Primavera P6 quraşdırılmış olmalıdır?

A2: Xeyr, MPXJ və xerparser kimi kitabxanalar müstəqil parserlərdir və faylları birbaşa işləyir, host proqram lisenziyalarına ehtiyac olmadan.

**Q3: Java asılılığı olmadan Primavera P6 XER fayllarını pars etmək üçün ən yaxşı yerli Python kitabxanası hansıdır?

A3: xerparser XER dump-larını birbaşa yerli lüğətlərə və pandas DataFrames-ə pars etmək üçün ən qabaqcıl təmiz-Python seçimidir.

**Q4: MPXJ Microsoft Project MPP fayllarını Primavera P6 formatlarına çevirə bilərmi?

A4: Bəli, MPXJ .mpp faylını oxuya bilər və normallaşdırılmış cədvəli Primavera-uyğun PMXML formatına ixrac edə bilər.

**Q5: Primavera XER faylları Microsoft Project MPP fayllarına nisbətən niyə daha asan pars edilir?

A5: XER faylları insan tərəfindən oxuna bilən, tab-delimited (tab ilə ayrılmış) əlaqəli verilənlər bazası dump-larıdır, halbuki MPP faylları proprietar, ikili birləşmiş sənəd strukturlarıdır.

Fayl Formatı Resursları

Fayl Formatı Xəbərləri – Dünyanın hər yerindən fayl formatları ilə bağlı bütün xəbərlərə bir yerdə çatmaq üçün tək dayanacaq Fayl Formatı Forumları – Fayl formatı forumlarında sorğularınızı yerləşdirin ki, fayl formatı mütəxəssisləri və icma istifadəçilərindən faydalı məlumatlar əldə edəsiniz Fayl Formatı Viki –Müxtəlif fayl formatları haqqında məlumat üçün fayl formatı kateqoriyalarını araşdırın Açıq Mənbə API-ləri və Kitabxanaları Layihə İdarəçiliyi üçün