Skip to content
This repository has been archived by the owner on Jan 2, 2019. It is now read-only.

Roadmap

MarkBaker edited this page Mar 29, 2013 · 6 revisions

This page contain the roadmap for PHPExcel #2013#

Now that 2013 has arrived, it's time to summarise what was achieved with PHPExcel over the last year, and look to the planned developments over the coming year.


Not all of last years objectives were met, but significant elements of the roadmap were met, but the following objectives were achieved:

##Major Development Objectives##

Readers

  • Additional Reader for HTML.

A basic HTML reader was added

  • Read Sheet Information without loading entire workbook.

schir1964's listWorksheetInfo() method was included in the core for all readers, and subsequently modified to use XMLReader for much faster performance.

Writers

  • Remove tcPDF from the distribution download, and provide configurable options to use 3rd party libraries.

tcPDF is no longer included with the distribution, but the code contains wrappers for using tcPDF, mPDF and DomPDF for rendering to PDF

  • Document Properties for Excel5 Writer

The Excel 5 Writer now supports standard properties, although custom properties are not yet supported.

  • Rich Text cells in Excel5 Writer.

There are still some problems with Rich Text containing UTF-8 characters, but these should all have been resolved in the latest develop branch code.

New Features

  • Chart support

Basic chart support has now been added for the Excel2007 Reader/Writer, with chart rendering to image files using jpGraph.

##Minor Development Objectives##

Internals

  • Create a separate class for handling Complex numbers within the engineering functions.

This is partly written, though not yet included in core: the intent is to include it as part of the Calculation Engine rewrite planned for the coming year.

  • Additional languages

Turkish has now been added to the language sets.

##General Objectives##

  • Ensure no compatability problems running PHPExcel with PHP 5.4.
  • Ongoing bugfixing.
  • Ongoing performance testing and (hopefully) improvements.
  • Distribution as a phar file.

Build Process

  • Convert all my customised test scripts to use PHPUnit (a tricky process that will take some time and effort).

This is ongoing

  • Code Coverage Analysis.
  • Move the source repository to github and use TravisCI for automated unit testing

Enhanced Documentation

  • User reference guides for working with cell data, styling and writing (similar to the reading guide, and with lots of example code).

A specific document have been written for autofiltering, others will follow

  • User Documentation in PDF format as well as Doc files.

Documentation is now available for production releases in Word, Open/Libre Office Write and PDF formats

In addition, Conditional Formatting was added for the Excel5 Writer; a composer file is now maintained on github, and the library was added to packagist.org



Plans for the coming year are to get a release out every three or four months. Not listed in any particular order as regards releases, here's an overview of the work that I'm planning on doing with the library over the coming year:

##Major Development Objectives##

Readers

  • Convert XML-based Readers (Excel2007, OOCalc, Gnumeric, Excel2003XML) to use XMLReader rather than SimpleXML, should help performance and reduce memory overheads. - listWorksheetNames() and listWorksheetInfo() methods targeted to use XMLReader for 1.7.9 Release

Writers

  • Prevent style defaults for conditional styling from overwriting cell styling
  • Additional Writers for Gnumeric, SYLK, OOCalc and Excel2003XML.

Internals

  • Convert the Calculation Engine from using Singleton to use Multiton pattern, to prevent cache errors when working with calculations in multiple workbooks. - Targeted for 1.7.9 Release
  • Restructure cell object and cache to eliminate duplication of cell reference (to save memory). - Targeted for 1.7.9 Release
  • Rewrite insert/delete column/row methods to take advantage of the cell reference indexing in cache to improve performance.
  • Full support for Array functions in the calculation engine.
  • Support for Row and Column references in the calculation engine.
  • Performance Rewrite of the Calculation Engine.

This is a major part of the planned work for the coming year, and development has already started

  • More consistency in method arguments for cell, row, column and range, particularly for styling.

New Features

  • Pivot Tables, initially for the Excel2007 Reader/Writer.
  • Extend Chart support to Excel5, and to other Readers/Writers.

##Minor Development Objectives##

Readers

  • Optional use of PCLZip for Zip-based Readers (Excel2007) for those who can't use ZipArchive.

Helper Features

  • HTML to Rich-Text Object helper method.
  • Additional languages (e.g. Greek, Japanese) and locale features (e.g. date masks such as J instead of Y for Years) for formulae. It's also probable that I'll make each "language pack" an additional download, rather than part of the core download.

##General Objectives##

  • Ensure no compatability problems running PHPExcel with PHP 5.5.
  • Ongoing bugfixing.
  • Ongoing performance testing and (hopefully) speed and memory improvements.
  • Implement a documented set of coding standards - PSR-2 has been decided as the core standard, though with some allowances until we can enforce PHP >= 5.3.0

Build Process

  • Write new PHPUnit tests, and fix code to ensure that existing tests are passed (modify tests where PHPExcel offers more flexibility than Excel).

This is ongoing

Enhanced Documentation

  • Online Documentation (including API).
  • Wiki on github - started
  • Links from API Documentation to the Sample code in the /Documentation/Examples and References to Sections in User Documentation.
  • Ensure that all methods are correctly docblocked for PHPDocumentor
  • User reference guides for working with cell data, styling and writing (similar to the reading guide, and with lots of example code).

#General#

PHP 5.2 has been unsupported since 23rd August 2011, and with PHP 5.5 now in alpha, PHP 5.3.0 will be set as the minimum version requirement for PHPExcel before the end of this year. This allows the use of features introduced in PHP 5.3 such as Closures that can give both memory and performance improvements. Good use of Namespaces would also simplify the process of mocking for unit testing.


2012

Major Development Objectives

Readers

  • Additional Reader for HTML. - Targetted for 1.7.8 release
  • Convert XML-based Readers (Excel2007, OOCalc, Gnumeric, Excel2003XML) to use XMLReader rather than SimpleXML, should help performance and reduce memory overheads.
  • Read Sheet Information without loading entire workbook. (schir1964's listWorksheetInfo() method.) - **Included in 1.7.7 release **

Writers

  • Additional Writers for Gnumeric, SYLK, OOCalc and Excel2003XML. - Excel2003XML targetted for 1.7.8 release
  • Remove tcPDF from the distribution download, and provide configurable options to use 3rd party libraries - tcPDF, domPDF or mPDF (choice of user-installed 3rd party libraries). - Targetted for 1.7.8 release
  • Document Properties for Excel5 Writer (OLE has already been modified to permit writing of the properties streams). - Included in 1.7.7 release
  • Rich Text cells in Excel5 Writer. - Included in 1.7.7 release

Internals

  • Performance Rewrite of the Calculation Engine.
  • With Excel 2010, Microsoft changed the algorithms used for calculating (among others) the Bessel functions, erf and erfc, making them more accurate, and OpenOffice followed their lead; so I'll be changing these functions in the calculation engine to reflect the new algorithms.
  • Convert the Calculation Engine from using Singleton to use Multiton pattern, to prevent cache errors when working with calculations in multiple workbooks.
  • More consistency in method arguments for cell, row, column and range, particularly for styling.

New Features

  • Chart support, initially for the Excel2007 Reader/Writer, with rendering support as a configurable option using 3rd party libraries - such as jpGraph and GraPHPite (choice of user-installed 3rd party libraries).... this work is largely complete, but a few bugs that still need ironing out with the Writer before I can release it. - Experimental version included in 1.7.7 release
  • Pivot Tables, initially for the Excel2007 Reader/Writer.

Minor Development Objectives

Readers

  • Optional use of PCLZip for Zip-based Readers (Excel2007) for those who can't use ZipArchive.

Helper Features

  • HTML to Rich-Text Object helper method.

Internals

  • Create a separate PHPExcel_Shared_Complex class for handling Complex numbers within the engineering functions. - Targetted for 1.7.8 release
  • Additional languages (e.g. Greek, Japanese) and locale features (e.g. date masks such as J instead of Y for Years) for formulae. It's also probable that I'll make each "language pack" an additional download, rather than part of the core download.

General Objectives

  • Ensure no compatability problems running PHPExcel with PHP 5.4. - Done for 1.7.7 release
  • Ongoing bugfixing.
  • Ongoing performance testing and (hopefully) improvements.
  • Distribution as a phar file.

Build Process (for my own benefit)

  • Convert all my customised test scripts to use PHPUnit (a tricky process that will take some time and effort).
  • Code Coverage Analysis.
  • Use Jenkins for CI - automated unit testing, code coverage, building API docs. - Looking at moving the source repository to github and the use of TravisCI

Enhanced Documentation

  • Online Documentation (including API).
  • Links from API Documentation to the Sample code in the /Documentation/Examples and References to Sections in User Documentation.
  • User reference guides for working with cell data, styling and writing (similar to the reading guide, and with lots of example code).
  • User Documentation in PDF format as well as Doc files.

Special Objectives

  • Convert core PHPExcel to C/C++ and build as a PHP Extension.

General

With the immanent release of PHP 5.4, it would be nice to be able to set PHP 5.3.0 as a minimum version requirement, which would allow the use of features introduced in PHP 5.3 such as Namespaces and Closures that can give both memory and performance improvements. Good use of Namespaces would also simplify the process of mocking for unit testing. Sadly, I don't think this is yet an option as a lot of users are still on PHP 5.2.x even though 5.2 has been unsupported since the release of version 5.3.8 on 23rd August 2011.