Terakhir Diperbarui: 02 Sep, 2026

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

API Sumber Terbuka Terdepan untuk Bekerja dengan MS Project (MPP) & Primavera (XER) File

Dalam manajemen proyek perusahaan, dua format file proprietari mendominasi: Microsoft Project (.mpp) dan Oracle Primavera P6 (.xer). Baik Anda sedang membangun dasbor analitik internal, menyinkronkan jadwal konstruksi dengan sistem ERP, atau mengotomatiskan alur status proyek, membaca dan memanipulasi file penjadwalan ini secara programatik merupakan kebutuhan kritis.

Namun, kedua format tersebut menimbulkan tantangan rekayasa yang terkenal.

  • MPP files adalah file biner, OLE Structured Storage yang tidak terdokumentasi atau format dokumen gabungan proprietari dengan perubahan skema di hampir setiap rilis utama MS Project (2000, 2003, 2007, 2010, 2013, 2016, 2019, 2021).
  • Primavera XER files adalah ekspor teks berformat tab-delimited yang terstruktur sebagai tabel basis data relasional (%T tables dengan %F fields dan %R records), dipenuhi dengan kendala integritas referensial yang kompleks, pewarisan multi-kalender, dan logika jalur kritis.

SDK komersial seperti Aspose.Tasks memang ada, tetapi biaya lisensi dan ketergantungan pada vendor menjadikan alternatif open-source yang kuat sangat penting. Dalam panduan ini, kami menguraikan API, perpustakaan, dan parser open-source teratas yang tersedia untuk Java, Python, dan C# untuk menangani file MPP dan XER secara bersih dan efisien.

Perbandingan Cepat Alat Open-Source

Perpustakaan / AlatBahasa UtamaFormat yang DidukungBaca / TulisKasus Penggunaan Terbaik
MPXJJava (Python / .NET bindings)MPP, MPT, MPX, XER, PMXML, MSPDIBaca (MPP/XER); Tulis (MPX/MSPDI/PMXML)Enterprise Java, konversi multi-format, jadwal all-in-one
xerparserPythonXERBaca & UraikanIlmu data, analisis penjadwalan pandas, pipeline ETL
python-mpxjPythonMPP, XER, XMLBaca / KonversiPembungkus Pythonic untuk MPXJ menggunakan JPype
netezza-xer / xer-to-csvShell / Python / GoXERAlir / EksporMengekstrak tabel mentah mirip SQL ke basis data relasional
OpenProj / ProjectLibre CoreJavaMPP (versi lama), XMLBaca / RenderIntegrasi Desktop/Engine untuk tampilan Gantt dasar

1. MPXJ (Microsoft Project eXchange dalam Java)

Standar Industri Tak Tertandingi untuk Interoperabilitas Jadwal

Jika ada standar emas dalam perpustakaan penjadwalan open-source, itu adalah MPXJ. Dipelihara secara aktif selama lebih dari dua dekade oleh Jon Iles, MPXJ awalnya dibuat untuk memproses file MPX Microsoft Project, tetapi telah berkembang menjadi mesin terjemahan universal untuk format penjadwalan proyek.

Kemampuan Utama

  • Ekstraksi MPP Langsung: Mengurai file biner MPP proprietari di hampir semua versi MS Project (Project 98 hingga Project modern 2016/2019/2021/365) tanpa memerlukan salinan Microsoft Project yang terinstal.
  • Penguraian Primavera P6 XER & PMXML: Dukungan native untuk dump berbasis teks .xer dan file XML Primavera modern.
  • Model Data Ternormalisasi: Menyajikan model objek terpadu (ProjectFile, Task, Resource, ResourceAssignment, Relation, WorkCalendar). Terlepas dari apakah masukan Anda berupa MPP atau XER, kode aplikasi Anda berinteraksi dengan API yang sama persis.
  • Distribusi Multi-Bahasa: Meskipun ditulis dalam Java, MPXJ mendistribusikan paket NuGet yang dikompilasi secara native untuk .NET (C#) melalui IKVM/CoreCLR, serta paket Python (mpxj di PyPI).

Contoh Kode Cepat: 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());
            }
        }
    }
}

Di Mana MPXJ Unggul

  • Normalisasi lintas format yang sebenarnya (mengonversi MPP ke PMXML atau MSPDI yang kompatibel dengan XER).
  • Logika kalender yang kompleks (shift, pengecualian, jam kerja multi-kalender).
  • Stabilitas tingkat produksi dengan komunitas yang aktif.

2. xerparser (Python)

Parsing Python Native yang Ringan untuk Primavera XER

Meskipun MPXJ dapat dipanggil melalui binding Python, melakukannya memerlukan menjalankan backend JVM (melalui JPype). Ketika Anda membutuhkan parser Python murni yang berjalan tanpa ketergantungan Java, xerparser adalah solusi utama.

File XER pada dasarnya adalah snapshot basis data yang dibuang ke dalam teks datar. xerparser mendekode tabel-tabel ini menjadi objek Python terstruktur dan terintegrasi mulus dengan pandas.

Kemampuan Utama

  • Tanpa Ketergantungan Java: Perpustakaan Python 3 murni yang dapat diinstal melalui pip install xerparser.
  • Integritas Relasional: Memetakan tabel inti Primavera seperti TASK (Aktivitas), PROJECT (metadata Proyek), PROJWBS (hierarki WBS), TASKRSRC (Penugasan), dan TASKPRED (hubungan Logika).
  • Eksekusi Cepat: Ideal untuk microservice yang dikontainerkan, fungsi AWS Lambda, dan pipeline orkestrasi data modern (mis., Apache Airflow, Prefect).

Contoh Kode Cepat: 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())

Di mana xerparser Unggul

  • Rekayasa data, analitik klaim penundaan, dan pemeriksaan kesehatan jadwal (skrip penilaian 14 poin DCMA).
  • Beban kerja serverless di mana menggabungkan runtime Java lebih dari 50MB tidak praktis.

3. python-mpxj

Menghubungkan Python dengan Kekuatan Penuh MPXJ

Jika Anda bekerja dengan Python tetapi harus memproses file biner .mpp, xerparser tidak dapat membantu Anda karena hanya menargetkan .xer. Jembatan open-source paling andal adalah python-mpxj.

Kemampuan Utama

  • Secara otomatis memulai JVM tersemat tanpa tampilan menggunakan jpype1.
  • Menyajikan API MPXJ lengkap secara langsung kepada pengembang Python.
  • Memungkinkan konversi langsung dari .mpp proprietari ke format terbuka modern seperti .json atau .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. Utilitas Parsing Kustom & Skrip Ingesti Basis Data

Menangani Primavera XER Mentah melalui Pemrosesan Aliran

Karena Primavera XER mengikuti format tabel yang dapat diprediksi, banyak tim rekayasa open-source menggunakan dekoder aliran tabular khusus (ditulis dalam Go, Python, atau Rust) daripada perpustakaan jadwal bergaya DOM tingkat tinggi.

Struktur file XER diformat sebagai:

%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

Beberapa skrip sumber terbuka di GitHub (seperti xer2sqlite dan xer-to-csv) mengurai struktur ini langsung ke SQLite atau PostgreSQL. Pendekatan ini optimal jika:

  1. Anda hanya perlu melakukan kueri hubungan tabel dengan SQL.
  2. Jadwal berukuran ratusan megabyte dengan puluhan ribu tugas, di mana pemuat pohon berorientasi objek akan memicu kesalahan kehabisan memori.

Perbandingan Teknis: Mana yang Harus Anda Pilih?

Pilih MPXJ Jika:

  • Anda harus membaca file biner Microsoft Project .mpp tanpa harus membayar perangkat lunak komersial proprietari.
  • Anda membutuhkan intelijen jadwal yang mendalam: kalender kerja, perhitungan durasi penundaan, perhitungan jalur kritis, dan variasi baseline.
  • Tumpukan teknologi Anda adalah Java, Kotlin, C# (.NET), atau Python perusahaan.

Pilih xerparser Jika:

  • Anda secara eksklusif menangani file Primavera P6 .xer.
  • Pipeline Anda ditulis dalam Python asli dan langsung mengalir ke pandas, NumPy, atau visualizer seperti Dash / Streamlit.
  • Anda sedang melakukan deployment ke lingkungan kontainer yang ramping atau runner cloud tanpa server.

Pilih Ingesti Aliran DB Langsung / CSV Jika:

  • Anda membutuhkan staging basis data berkecepatan tinggi untuk ekspor XER perusahaan multi-proyek yang masif.
  • Anda hanya perlu mengekstrak metadata, akun biaya, dan kurva kemajuan melalui analitik SQL.

Ringkasan & Praktik Terbaik

Saat membangun pipeline sumber terbuka untuk data jadwal:

  1. Jangan pernah mengurai .mpp secara manual: Spesifikasi biner Microsoft sangat rumit dan tidak terdokumentasi. Selalu mengandalkan pustaka yang telah teruji seperti MPXJ.
  2. Waspadai Zona Waktu Tanggal: Jadwal Primavera sering mencatat durasi kerja tanpa metadata zona waktu, bergantung pada kalender proyek. Pastikan pipeline ingest Anda memperhitungkan pergeseran hari kerja 8 jam versus hari kalender 24 jam.
  3. Validasi Integritas Referensial: Dalam file XER, rekaman yatim (misalnya, tugas yang mengarah ke node WBS yang dihapus) sering muncul dalam ekspor proyek yang dibuat secara manual. Selalu lakukan validasi defensif pada kunci asing selama ETL.

Tanya Jawab

**Q1: 1. Apakah pustaka sumber terbuka dapat menulis atau memperbarui file biner .mpp asli secara langsung?

A1: Tidak, karena format biner proprietari Microsoft, perpustakaan sumber terbuka dapat membaca file .mpp dengan dapat diandalkan, tetapi penulisan biasanya diekspor ke format standar seperti MSPDI (XML) atau MPX.

**Q2: Apakah saya perlu menginstal Microsoft Project atau Primavera P6 di server saya untuk mengurai file-file ini?

A2: Tidak, perpustakaan seperti MPXJ dan xerparser adalah parser mandiri yang memproses file secara langsung tanpa memerlukan lisensi perangkat lunak host.

**Q3: Apa perpustakaan Python native terbaik untuk mengurai file XER Primavera P6 tanpa ketergantungan Java?

A3: xerparser adalah pilihan pure-Python utama untuk mengurai dump XER langsung ke dalam kamus native dan DataFrames pandas.

**Q4: Bisakah MPXJ mengonversi file MPP Microsoft Project ke format Primavera P6?

A4: Ya, MPXJ dapat membaca file .mpp dan mengekspor jadwal yang dinormalisasi ke dalam format PMXML yang kompatibel dengan Primavera.

**Q5: Mengapa file XER Primavera lebih mudah diurai dibandingkan file MPP Microsoft Project?

A5: File XER bersifat dapat dibaca manusia, dump basis data relasional yang dipisahkan tab, sedangkan file MPP bersifat proprietari, struktur dokumen majemuk biner.

Sumber Daya Format File

Berita Format File – Satu tempat untuk semua berita terkait format file dari seluruh dunia Forum Format File – Kirim pertanyaan Anda di forum format file untuk mendapatkan informasi berguna dari pakar format file dan pengguna komunitas Wiki Format File – Jelajahi kategori format file untuk informasi tentang berbagai format file API dan Perpustakaan Sumber Terbuka untuk Manajemen Proyek