Fork me on GitHub



Major Development Objectives


  • 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 **


  • 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


  • 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


  • 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.


  • 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.


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.