Terakhir Diperbarui: 02 Sep, 2026

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 (
%Ttables dengan%Ffields dan%Rrecords), 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 / Alat | Bahasa Utama | Format yang Didukung | Baca / Tulis | Kasus Penggunaan Terbaik |
|---|---|---|---|---|
| MPXJ | Java (Python / .NET bindings) | MPP, MPT, MPX, XER, PMXML, MSPDI | Baca (MPP/XER); Tulis (MPX/MSPDI/PMXML) | Enterprise Java, konversi multi-format, jadwal all-in-one |
| xerparser | Python | XER | Baca & Uraikan | Ilmu data, analisis penjadwalan pandas, pipeline ETL |
| python-mpxj | Python | MPP, XER, XML | Baca / Konversi | Pembungkus Pythonic untuk MPXJ menggunakan JPype |
| netezza-xer / xer-to-csv | Shell / Python / Go | XER | Alir / Ekspor | Mengekstrak tabel mentah mirip SQL ke basis data relasional |
| OpenProj / ProjectLibre Core | Java | MPP (versi lama), XML | Baca / Render | Integrasi 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
.xerdan 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 (
mpxjdi 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), danTASKPRED(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
.mppproprietari ke format terbuka modern seperti.jsonatau.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:
- Anda hanya perlu melakukan kueri hubungan tabel dengan SQL.
- 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
.mpptanpa 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:
- Jangan pernah mengurai
.mppsecara manual: Spesifikasi biner Microsoft sangat rumit dan tidak terdokumentasi. Selalu mengandalkan pustaka yang telah teruji seperti MPXJ. - 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.
- 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