अंतिम अपडेट: 02 Sept, 2026

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

MS Project (MPP) और Primavera (XER) फ़ाइलों के साथ काम करने के लिए प्रमुख ओपन सोर्स API

उद्यम परियोजना प्रबंधन में, दो स्वामित्व वाले फ़ाइल फ़ॉर्मेट प्रमुख हैं: Microsoft Project (.mpp) और Oracle Primavera P6 (.xer)। चाहे आप एक आंतरिक विश्लेषण डैशबोर्ड बना रहे हों, निर्माण शेड्यूल को ERP सिस्टम के साथ सिंक कर रहे हों, या परियोजना स्थिति पाइपलाइन को स्वचालित कर रहे हों, इन शेड्यूलिंग फ़ाइलों को प्रोग्रामेटिक रूप से पढ़ना और संशोधित करना एक महत्वपूर्ण आवश्यकता है।

हालांकि, दोनों फ़ॉर्मेट्स कुख्यात इंजीनियरिंग बाधाएँ प्रस्तुत करते हैं:

  • MPP files बाइनरी, अनडॉक्यूमेंटेड OLE स्ट्रक्चर्ड स्टोरेज या प्रोपाइटरी कंपाउंड डॉक्यूमेंट फ़ॉर्मेट हैं जिनमें स्कीमा परिवर्तन लगभग हर प्रमुख MS Project रिलीज़ (2000, 2003, 2007, 2010, 2013, 2016, 2019, 2021) में होते हैं।
  • Primavera XER files टैब-डिलिमिटेड टेक्स्ट एक्सपोर्ट हैं जो रिलेशनल डेटाबेस टेबल्स (%T टेबल्स के साथ %F फ़ील्ड्स और %R रिकॉर्ड्स) के रूप में संरचित होते हैं, जटिल रेफ़रेंशियल इंटीग्रिटी कंस्ट्रेंट्स, मल्टी-कैलेंडर इनहेरिटेंस, और क्रिटिकल-पाथ लॉजिक से भरपूर होते हैं।

Aspose.Tasks जैसी व्यावसायिक SDKs मौजूद हैं, लेकिन लाइसेंसिंग लागत और विक्रेता लॉक‑इन मजबूत ओपन‑सोर्स विकल्पों को आवश्यक बनाते हैं। इस गाइड में, हम Java, Python, और C# में उपलब्ध शीर्ष ओपन‑सोर्स API, लाइब्रेरीज़, और पार्सर्स को विभाजित करते हैं जो MPP और XER फ़ाइलों को साफ़ और कुशलता से संभालते हैं।

ओपन-सोर्स टूल्स की त्वरित तुलना

लाइब्रेरी / टूलमुख्य भाषासमर्थित फ़ॉर्मेट्सपढ़ना / लिखनासर्वोत्तम उपयोग केस
MPXJजावा (पायथन / .NET बाइंडिंग्स)MPP, MPT, MPX, XER, PMXML, MSPDIपढ़ें (MPP/XER); लिखें (MPX/MSPDI/PMXML)एंटरप्राइज़ जावा, बहु-फ़ॉर्मेट रूपांतरण, एकीकृत शेड्यूल
xerparserPythonXERपढ़ें और पार्स करेंडेटा विज्ञान, पांडा शेड्यूलिंग विश्लेषण, ETL पाइपलाइन
python-mpxjPythonMPP, XER, XMLपढ़ें / रूपांतरित करेंJPype का उपयोग करके MPXJ के चारों ओर Pythonic रैपर
netezza-xer / xer-to-csvShell / Python / GoXERस्ट्रीम / निर्यातकच्ची SQL-समतुल्य तालिकाओं को रिलेशनल डेटाबेस में निकालना
OpenProj / ProjectLibre CoreJavaMPP (पुराने संस्करण), XMLपढ़ें / रेंडरडेस्कटॉप/इंजन एकीकरण बेसलाइन गैंट दृश्य के लिए

1. MPXJ (जावा में माइक्रोसॉफ्ट प्रोजेक्ट एक्सचेंज)

शेड्यूल इंटरऑपरेबिलिटी के लिए निर्विवाद उद्योग मानक

यदि ओपन-सोर्स शेड्यूलिंग लाइब्रेरीज़ में कोई गोल्ड स्टैंडर्ड है, तो वह MPXJ है। जॉन आयलेस द्वारा दो दशकों से अधिक समय तक सक्रिय रूप से रखरखाव किया गया, MPXJ मूल रूप से माइक्रोसॉफ्ट प्रोजेक्ट MPX फ़ाइलों को प्रोसेस करने के लिए बनाया गया था, लेकिन अब यह प्रोजेक्ट शेड्यूलिंग फ़ॉर्मेट्स के लिए एक सार्वभौमिक अनुवाद इंजन बन गया है।

मुख्य क्षमताएँ

  • Direct MPP Extraction: लगभग सभी MS Project संस्करणों (Project 98 से लेकर आधुनिक Project 2016/2019/2021/365) में स्वामित्व वाले बाइनरी MPP फ़ाइलों को पार्स करता है, बिना Microsoft Project की स्थापित प्रति की आवश्यकता के।
  • Primavera P6 XER & PMXML Parsing: टेक्स्ट-आधारित .xer डंप्स और आधुनिक Primavera XML फ़ाइलों दोनों के लिए मूल समर्थन।
  • Normalized Data Model: एकीकृत ऑब्जेक्ट मॉडल (ProjectFile, Task, Resource, ResourceAssignment, Relation, WorkCalendar) को उजागर करता है। चाहे आपका इनपुट MPP हो या XER, आपका एप्लिकेशन कोड बिल्कुल वही API के साथ इंटरैक्ट करता है।
  • Multi-Language Distribution: जबकि जावा में लिखा गया है, MPXJ IKVM/CoreCLR के माध्यम से .NET (C#) के लिए नेटिव-कम्पाइल्ड NuGet पैकेज, और एक Python पैकेज (mpxj PyPI पर) वितरित करता है।

त्वरित कोड उदाहरण: जावा

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 उत्कृष्ट है

  • सही क्रॉस-फ़ॉर्मेट सामान्यीकरण (MPP को XER-संगत PMXML या MSPDI में परिवर्तित करना)।
  • जटिल कैलेंडर लॉजिक (शिफ्ट्स, अपवाद, बहु-कैलेंडर कार्य घंटे)।
  • उत्पादन-स्तर की स्थिरता एक सक्रिय समुदाय के साथ।

2. xerparser (पायथन)

हल्का, नेटिव पायथन पार्सिंग प्रिमावेरा XER के लिए

जबकि MPXJ को Python बाइंडिंग्स के माध्यम से बुलाया जा सकता है, इसके लिए JVM बैकएंड (JPype के माध्यम से) चलाना आवश्यक होता है। जब आपको एक पूरी तरह से मूल Python पार्सर चाहिए जो Java निर्भरताओं के बिना चल सके, xerparser समाधान है।

एक XER फ़ाइल मूलतः एक डेटाबेस स्नैपशॉट है जिसे फ्लैट टेक्स्ट में डंप किया जाता है। xerparser इन तालिकाओं को संरचित Python ऑब्जेक्ट्स में डिकोड करता है और pandas के साथ सहजता से एकीकृत होता है।

मुख्य क्षमताएँ

  • शून्य Java निर्भरताएँ: pip install xerparser के माध्यम से स्थापित किया जा सकने वाला शुद्ध Python 3 लाइब्रेरी।
  • संबंधात्मक अखंडता: मुख्य Primavera तालिकाओं जैसे TASK (गतिविधियाँ), PROJECT (परियोजना मेटाडेटा), PROJWBS (WBS पदानुक्रम), TASKRSRC (असाइनमेंट्स), और TASKPRED (लॉजिक संबंध) को मैप करता है।
  • तेज़ निष्पादन: कंटेनराइज्ड माइक्रोसर्विसेज, AWS Lambda फ़ंक्शन्स, और आधुनिक डेटा ऑर्केस्ट्रेशन पाइपलाइनों (जैसे Apache Airflow, Prefect) के लिए आदर्श।

त्वरित कोड उदाहरण: पायथन

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 उत्कृष्ट है

  • डेटा इंजीनियरिंग, देरी-दावा विश्लेषण, और शेड्यूल स्वास्थ्य जांच (DCMA 14-बिंदु मूल्यांकन स्क्रिप्ट्स)।
  • सर्वरलेस वर्कलोड जहाँ 50MB+ जावा रनटाइम को बंडल करना व्यावहारिक नहीं है।

3. python-mpxj

Python को MPXJ की पूरी शक्ति के साथ जोड़ना

यदि आप पाइथन में काम कर रहे हैं लेकिन ज़रूर बाइनरी .mpp फ़ाइलों को प्रोसेस करना चाहते हैं, xerparser आपकी मदद नहीं कर सकता क्योंकि यह केवल .xer को लक्षित करता है। सबसे भरोसेमंद ओपन-सोर्स ब्रिज python-mpxj है।

मुख्य क्षमताएँ

  • jpype1 का उपयोग करके स्वचालित रूप से एक हेडलेस एम्बेडेड JVM शुरू करता है।
  • पूर्ण MPXJ API को सीधे पाइथन डेवलपर्स के सामने उजागर करता है।
  • स्वामित्व वाली .mpp को सीधे आधुनिक ओपन फॉर्मैट्स जैसे .json या .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. कस्टम पार्सिंग यूटिलिटीज़ और डेटाबेस इन्गेस्ट्शन स्क्रिप्ट्स

स्ट्रीम प्रोसेसिंग के माध्यम से कच्चे Primavera XER को संभालना

क्योंकि Primavera XER एक पूर्वानुमेय टेबल फ़ॉर्मेट का पालन करता है, कई ओपन-सोर्स इंजीनियरिंग टीमें कस्टम टैब्युलर स्ट्रीम डिकोडर्स (Go, Python, या Rust में लिखे गए) का उपयोग करती हैं बजाय उच्च-स्तरीय DOM-शैली शेड्यूल लाइब्रेरीज़ के।

एक XER फ़ाइल संरचना इस प्रकार स्वरूपित होती है:

%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 पर कई ओपन-सोर्स स्क्रिप्ट्स (जैसे xer2sqlite और xer-to-csv) इस संरचना को सीधे SQLite या PostgreSQL में पार्स करती हैं। यह तरीका तब आदर्श है जब:

  1. आपको केवल SQL के साथ तालिकीय संबंधों को क्वेरी करने की आवश्यकता है।
  2. समय-सारिणी आकार में सैकड़ों मेगाबाइट हैं और उनमें दसियों हज़ार कार्य हैं, जहाँ ऑब्जेक्ट-ओरिएंटेड ट्री लोडर मेमोरी समाप्ति त्रुटियों को उत्पन्न करेंगे।

तकनीकी तुलना: आपको कौन सा चुनना चाहिए?

यदि MPXJ चुनें:

  • आपको बाइनरी Microsoft Project .mpp फ़ाइलें पढ़नी होंगी बिना स्वामित्व वाले व्यावसायिक सॉफ़्टवेयर के लिए भुगतान किए।
  • आपको गहरी शेड्यूल इंटेलिजेंस चाहिए: कार्य कैलेंडर, लेग अवधि गणनाएँ, क्रिटिकल पाथ गणना, और बेसलाइन वैरिएंस।
  • आपका तकनीकी स्टैक Java, Kotlin, C# (.NET), या एंटरप्राइज़ Python है।

यदि xerparser चुनें:

  • आप केवल Primavera P6 .xer फ़ाइलों को संभालते हैं।
  • आपका पाइपलाइन native Python में लिखा गया है और सीधे pandas, NumPy, या Dash / Streamlit जैसे विज़ुअलाइज़र में फीड करता है।
  • आप लीन कंटेनर वातावरण या सर्वरलेस क्लाउड रनर्स पर डिप्लॉय कर रहे हैं।

यदि Direct DB / CSV स्ट्रीम इनजेशन चुनें:

  • आपको बड़े मल्टी-प्रोजेक्ट एंटरप्राइज़ XER निर्यातों के लिए हाई-थ्रूपुट डेटाबेस स्टेजिंग की आवश्यकता है।
  • आपको केवल मेटाडेटा, लागत खाते और प्रोग्रेस कर्व्स को SQL एनालिटिक्स के माध्यम से निकालना है।

सारांश और सर्वोत्तम प्रथाएँ

जब शेड्यूल डेटा के लिए ओपन-सोर्स पाइपलाइन बनाते हैं:

  1. .mpp को मैन्युअली पार्स न करें: Microsoft बाइनरी स्पेसिफिकेशन जटिल और अनडॉक्यूमेंटेड है। हमेशा MPXJ जैसी बटाल-टेस्टेड लाइब्रेरी पर भरोसा करें।
  2. Date Timezones से सावधान रहें: Primavera शेड्यूल अक्सर कार्य अवधि को टाइम ज़ोन मेटाडेटा के बिना रिकॉर्ड करते हैं, प्रोजेक्ट कैलेंडर पर निर्भर होते हैं। सुनिश्चित करें कि आपका इन्गेस्ट्शन पाइपलाइन 8-घंटे के कार्य दिवस शिफ्ट्स बनाम 24-घंटे के कैलेंडर दिनों को ध्यान में रखे।
  3. Referential Integrity को वैलिडेट करें: XER फ़ाइलों में, अनाथ रिकॉर्ड (जैसे, डिलीटेड WBS नोड्स की ओर इशारा करने वाले टास्क) अक्सर मैन्युअली बनाए गए प्रोजेक्ट एक्सपोर्ट में होते हैं। ETL के दौरान हमेशा फॉरेन कीज़ को डिफेंसिवली वैलिडेट करें।

अक्सर पूछे जाने वाले प्रश्न

**Q1: 1. क्या ओपन-सोर्स लाइब्रेरीज़ मूल बाइनरी .mpp फ़ाइलों को सीधे लिख या अपडेट कर सकती हैं?

A1: नहीं, माइक्रोसॉफ्ट के स्वामित्व वाले बाइनरी फॉर्मेट के कारण, ओपन-सोर्स लाइब्रेरीज़ .mpp फ़ाइलें विश्वसनीय रूप से पढ़ सकती हैं, लेकिन लिखने के कार्य आमतौर पर MSPDI (XML) या MPX जैसे मानक फॉर्मेट में निर्यात किए जाते हैं।

**Q2: क्या मुझे इन फ़ाइलों को पार्स करने के लिए अपने सर्वर पर Microsoft Project या Primavera P6 स्थापित करने की आवश्यकता है?

A2: नहीं, MPXJ और xerparser जैसी लाइब्रेरीज़ स्वतंत्र पार्सर हैं जो फ़ाइलों को सीधे प्रोसेस करती हैं और होस्ट सॉफ़्टवेयर लाइसेंस की आवश्यकता नहीं होती।

**Q3: जावा निर्भरताओं के बिना Primavera P6 XER फ़ाइलों को पार्स करने के लिए सबसे अच्छा मूल Python लाइब्रेरी कौन सी है?

A3: xerparser XER डंप को सीधे मूल डिक्शनरी और pandas DataFrames में पार्स करने के लिए प्रमुख शुद्ध-Python विकल्प है।

**Q4: क्या MPXJ Microsoft Project MPP फ़ाइलों को Primavera P6 फ़ॉर्मेट में परिवर्तित कर सकता है?

A4: हाँ, MPXJ .mpp फ़ाइल को पढ़ सकता है और सामान्यीकृत शेड्यूल को Primavera-संगत PMXML फ़ॉर्मेट में निर्यात कर सकता है।

**Q5: Primavera XER फ़ाइलें Microsoft Project MPP फ़ाइलों की तुलना में पार्स करने में क्यों आसान हैं?

A5: XER फ़ाइलें मानव-पठनीय, टैब-डिलिमिटेड रिलेशनल डेटाबेस डम्प हैं, जबकि MPP फ़ाइलें स्वामित्व वाली, बाइनरी कंपाउंड डॉक्यूमेंट संरचनाएँ हैं।

फ़ाइल फ़ॉर्मेट संसाधन

फ़ाइल फ़ॉर्मेट समाचार – फ़ाइल फ़ॉर्मेट से संबंधित सभी समाचारों के लिए आपका एकमात्र ठिकाना, जो दुनिया भर से हैं फ़ाइल फ़ॉर्मेट फ़ोरम – फ़ाइल फ़ॉर्मेट फ़ोरम में अपने प्रश्न पोस्ट करें ताकि फ़ाइल फ़ॉर्मेट विशेषज्ञों और समुदाय उपयोगकर्ताओं से उपयोगी जानकारी प्राप्त कर सकें फ़ाइल फ़ॉर्मेट विकी – विभिन्न फ़ाइल फ़ॉर्मेट्स के बारे में जानकारी के लिए फ़ाइल फ़ॉर्मेट श्रेणियों का अन्वेषण करें ओपन सोर्स एपीआई और लाइब्रेरीज़ प्रोजेक्ट मैनेजमेंट के लिए