A pure PHP library for reading and writing project management files

Overview

PHPProject

Latest Stable Version Build Status Code Quality Code Coverage Total Downloads License

PHPProject is a library written in pure PHP that provides a set of classes to write to different project management file formats, i.e. Microsoft MSProjectExchange (MPX) or GanttProject (GAN). PHPProject is an open source project licensed under the terms of LGPL version 3. PHPProject is aimed to be a high quality software product by incorporating continuous integration and unit testing. You can learn more about PHPProject by reading the Developers' Documentation and the API Documentation.

Read more about PHPProject:

Features

  • Create an in-memory project management representation
  • Set file meta data (author, title, description, etc)
  • Add resources from scratch or from existing one
  • Add tasks from scratch or from existing one
  • Output to different file formats: MSProjectExchange (.mpx), GanttProject (.gan)
  • ... and lots of other things!

Requirements

PHPProject requires the following:

Installation

It is recommended that you install the PHPProject library through composer. To do so, add the following lines to your composer.json.

{
    "require": {
       "phpoffice/phpproject": "dev-master"
    }
}

Alternatively, you can download the latest release from the releases page. In this case, you will have to register the autoloader. Register autoloading is required only if you do not use composer in your project.

require_once 'path/to/PhpProject/src/PhpProject/Autoloader.php';
\PhpOffice\PhpProject\Autoloader::register();

Getting started

The following is a basic usage example of the PHPProject library.

require_once 'src/PhpProject/Autoloader.php';
\PhpOffice\PhpProject\Autoloader::register();

$objPHPProject = new PhpProject();$objPHPProject = new PhpProject();

// Create resource
$objRes1 = $objPHPProject->createResource();
$objRes1->setTitle('UserBoy');

// Create a task
$objTask1 = $objPHPProject->createTask();
$objTask1->setName('Start of the project');
$objTask1->setStartDate('02-01-2012');
$objTask1->setEndDate('03-01-2012');
$objTask1->setProgress(0.5);
$objTask1->addResource($objRes1);

$oWriterGAN = IOFactory::createWriter($objPHPPowerPoint, 'GanttProject');
$oWriterGAN->save(__DIR__ . "/sample.gan");

More examples are provided in the samples folder. You can also read the Developers' Documentation and the API Documentation for more details.

Contributing

We welcome everyone to contribute to PHPProject. Below are some of the things that you can do to contribute:

Comments
  • Fixed typos & experimental read support for MS Project Database (.mdp) files

    Fixed typos & experimental read support for MS Project Database (.mdp) files

    I managed to add support for mdp files using mdbtools command line tools. Not pretty implementation which works only on Linux, but it's the best that I could come with.

    Component - MSProjectDatabase 
    opened by tangervu 6
  • Include GanttProject Writer validator for tests

    Include GanttProject Writer validator for tests

    See this link :

    http://code.google.com/p/ganttproject/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Summary&groupby=&sort=&id=602

    Type - Enhancement Component - GanttProject 
    opened by Progi1984 2
  • Use PHPWord as reference

    Use PHPWord as reference

    To Do List for having PHPProject equals to PHPWord Quality :

    • [x] Migrate source from Classes to src
    • [x] Add some examples in samples directory
    • [x] Migrate unit tests from unitTests to tests
    • [x] Support of PHP 5.3 min. (Reference : https://github.com/PHPOffice/PHPWord/issues/58 & https://github.com/PHPOffice/PHPWord/issues/77)
    • [x] Add support for Scrutinizer
    • [x] Add composer.lock file
    • [x] Unit Tests to Green (https://travis-ci.org/PHPOffice/PHPPowerPoint/jobs/25322876#L1449)
    • [x] PHPDoc to generate
    • [x] Push PHPDoc & Code Coverage to GitHub Pages
    • [x] ReadTheDocs for PHPProject
    • [x] Readme.md
    Type - Enhancement 
    opened by Progi1984 0
  • Format MPD

    Format MPD

    Microsoft Project from Project 98 until Project 2003 could read and write schedules as Microsoft Access database files with the extension MPD. Coincidentally, Microsoft Project Server shares the same database schema as the MPD file format.

    Source : http://www.mpxj.org/howto-read-mpd.html

    Sample File :

    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9task.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9splittask.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9subproject.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9resource.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9relations.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9nulltasks.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9header.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9calendar.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpp9baseline.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpdassignmentcustom.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpdassignmentfields.mpd
    • https://github.com/joniles/mpxj/blob/master/junit/data/mpdduration.mpd

    Source : https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/mpd/MPDDatabaseReader.java#L79

    Type - Enhancement Hacktoberfest 
    opened by Progi1984 0
  • Format ProjectLibre

    Format ProjectLibre

    ProjectLibre writes schedule data to POD files.

    Source : http://www.mpxj.org/howto-read-projectlibre.html

    Sample File :

    Source : https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/projectlibre/ProjectLibreReader.java#L48

    Type - Enhancement Hacktoberfest 
    opened by Progi1984 0
  • Format Gnome Planner

    Format Gnome Planner

    Gnome Planner is a popular open source planning tool which writes its own XML files.

    Source : http://www.mpxj.org/howto-read-planner.html

    Sample File :

    • https://github.com/joniles/mpxj/blob/master/junit/data/password-protected-mpp9.mpp
    • https://github.com/joniles/mpxj/blob/master/junit/data/planner-calendar.planner
    • https://github.com/joniles/mpxj/blob/master/junit/data/planner-resource.planner
    • https://github.com/joniles/mpxj/blob/master/junit/data/planner-sample.planner
    • https://github.com/joniles/mpxj/blob/master/junit/data/project1.planner

    Source : https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/planner/PlannerReader.java#L113

    Type - Enhancement Hacktoberfest 
    opened by Progi1984 0
  • MSP Data Interchange Format (MSPDI)

    MSP Data Interchange Format (MSPDI)

    Work in Progress Office 2007 Data Interchange Format (MSPDI) XML spec, I'm starting with this: https://msdn.microsoft.com/en-us/library/bb968652(v=office.12).aspx

    Samples :

    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiassignmentcustom.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiassignmentfields.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiavailability.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdicostratetable.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiduration.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdinulltasks.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdirelations.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdiresource.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspdisplittask.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspditimephased.xml
    • https://github.com/joniles/mpxj/blob/master/junit/data/mspditimephasedsegments.xml

    Source : https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/mspdi/MSPDIReader.java#L169


    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    Type - Enhancement Hacktoberfest 
    opened by bhu1st 2
  • Export to HTML

    Export to HTML

    Libraries :

    • https://frappe.io/gantt
      • Child Tasks
      • Duration
    • 👍 https://github.com/neuronetio/elastigantt
      • Child Tasks
      • Duration

    ToDo :

    • [ ] Generate Header
    • [ ] Generate Tasks with heritage
    • [ ] Generate Tasks with duration
    Type - Enhancement Component - HTML Hacktoberfest 
    opened by Progi1984 0
Releases(0.2.0)
  • 0.2.0(Aug 13, 2014)

    Version 0.2.0 add the support of MSProjectExchange (.mpx) files in reading and writing.

    Features

    • MSProjectExchange Reader - @Progi1984 GH-4
    • MSProjectExchange Writer - @Progi1984 GH-2

    Miscellaneous

    • Refactored resources management - @Progi1984
    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Aug 8, 2014)

    Version 0.1 is the first release with support of GanttProject for reading and writing files.

    Features

    • Support of Composer - @Progi1984 GH-7 GH-9
    • Support of namespaces - @Progi1984 GH-12
    • GanttProject Writer - @Progi1984 GH-1
    • GanttProject Reader - @Progi1984 GH-3

    Miscellaneous

    • QA : Documentation - @Progi1984 GH-8 GH-12
    • QA : Unit Tests - @Progi1984 GH-12
    Source code(tar.gz)
    Source code(zip)
Owner
PHPOffice
PHPOffice
A pure PHP library for reading and writing word processing documents

Master: Develop: PHPWord is a library written in pure PHP that provides a set of classes to write to and read from different document file formats. Th

PHPOffice 6.5k Jan 7, 2023
A pure PHP library for reading and writing presentations documents

Branch Master : Branch Develop : PHPPresentation is a library written in pure PHP that provides a set of classes to write to different presentation fi

PHPOffice 1.2k Jan 2, 2023
PhpSpreadsheet - a library written in pure PHP and offers a set of classes that allow you to read and write various spreadsheet file formats such as Excel and LibreOffice Calc

PhpSpreadsheet PhpSpreadsheet is a library written in pure PHP and offers a set of classes that allow you to read and write various spreadsheet file f

PHPOffice 11.8k Dec 31, 2022
Read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way

Spout Spout is a PHP library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way. Contrary to other file readers or wr

Box 4.2k Jan 6, 2023
Read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way

OpenSpout OpenSpout is a community driven fork of box/spout, a PHP library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scal

null 239 Jan 6, 2023
Parse and retrieve data from old format Excel XLS files. MS Excel 97 workbooks PHP reader.

SimpleXLS class 0.9.15 Parse and retrieve data from old Excel .XLS files. MS Excel 97-2003 workbooks PHP reader. PHP BIFF reader. No additional extens

Sergey Shuchkin 160 Jan 6, 2023
🚀 PHP Extension for creating and reader XLSX files.

Why use xlswriter Please refer to the image below. PHPExcel has been unable to work properly for memory reasons at 40,000 and 100000 points, but it ca

viest 1.9k Jan 4, 2023
Merge Excel Files to single excel file per columns

Merge Excel Files to single excel file per columns

Max Base 3 Apr 26, 2021
CSV files from Eloquent model in seconds - a Laravel package.

LaraCSV A Laravel package to easily generate CSV files from Eloquent model. Basic usage $users = User::get(); // All users $csvExporter = new \Laracsv

Muhammad Usman 604 Dec 16, 2022
Simple yet powerful Excel manipulation library for PHP 5.4+

| | \ / \_/ __ /^\ __ ' `. \_/ ,' ` \/ \/ _,--./| |\.--._ _,' _.-\_/-._ `._ | / \ | |

Wisembly 68 Sep 20, 2022
ExcelAnt - Simple yet powerful Excel manipulation library for PHP 5.4+

ExcelAnt is an Excel manipulation library for PHP 5.4. It currently works on top of PHPExcel. If you want to add / use another library, feel free to fork and contribute !

Wisembly 68 Sep 20, 2022
🚀 Supercharged Excel exports and imports in Laravel

Supercharged Excel exports and imports A simple, but elegant Laravel wrapper around PhpSpreadsheet exports and imports. Quickstart · Documentation · V

Maatwebsite 11.2k Jan 4, 2023
an excel export/import tool for laravel based on php-xlswriter

Laravel-xlswriter 一款基于xlswriter的laravel扩展包 php-xlswriter是一款高性能的excel读写扩展,laravel-xlswriter基于该扩展做了封装,旨在提供一个便于使用的xlswriter的laravel工具包。 目前laravel-xlswrit

lysice 54 Dec 3, 2022
CSV data manipulation made easy in PHP

CSV Csv is a simple library to ease CSV parsing, writing and filtering in PHP. The goal of the library is to be powerful while remaining lightweight,

The League of Extraordinary Packages 3k Jan 1, 2023
Simplexcel.php - Easily read / parse / convert / write between Microsoft Excel XML / CSV / TSV / HTML / JSON / etc spreadsheet tabular file formats

Simple Excel Easily parse / convert / write between Microsoft Excel XML / CSV / TSV / HTML / JSON / etc formats For further deatails see the GitHuib P

Faisal Salman 550 Dec 27, 2022
A pure PHP library for reading and writing spreadsheet files

PhpSpreadsheet PhpSpreadsheet is a library written in pure PHP and offers a set of classes that allow you to read and write various spreadsheet file f

PHPOffice 11.8k Jan 8, 2023
A pure PHP library for reading and writing word processing documents

Master: Develop: PHPWord is a library written in pure PHP that provides a set of classes to write to and read from different document file formats. Th

PHPOffice 6.5k Jan 7, 2023
A pure PHP library for reading and writing presentations documents

Branch Master : Branch Develop : PHPPresentation is a library written in pure PHP that provides a set of classes to write to different presentation fi

PHPOffice 1.2k Jan 2, 2023
A pure PHP library for reading and writing presentations documents

Branch Master : Branch Develop : PHPPresentation is a library written in pure PHP that provides a set of classes to write to different presentation fi

PHPOffice 1.2k Jan 2, 2023
PHP Exif Library - library for reading and writing Exif headers in JPEG and TIFF files using PHP.

PEL: PHP Exif Library README file for PEL: PHP Exif Library. A library with support for reading and writing Exif headers in JPEG and TIFF images using

null 264 Dec 4, 2022