PHPExcel Roadmap for 2012

Coordinator
Jan 2, 2012 at 12:15 PM
Edited May 20, 2012 at 2:46 PM

Now that 2012 has arrived, I'm hoping that I'll have a lot more time this year to work on PHPExcel than I did last year.

My plan for this year is to try and get a release out every three months, starting this January with all the current SVN code, plus all my initial work on chart reading/editing/rendering/writing for Excel2007 (if I can get the last bugs sorted out in the Writer).

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

 


New Year's Resolution: To tolerate fools more gladly, provided this does not encourage them to take up more of my time.

 

Feb 1, 2012 at 9:50 AM

Hello Mark,

can we suppose that bugs in Writer for chart support aren't solved yet?

or can we expect a 1.7.7 with chart support very soon?

thanks for your work

have a nice day

Coordinator
Feb 1, 2012 at 5:45 PM

@Massi

I've been doing final debugging of the Chart writing for Excel2007 this week, so I should be able to merge it into the SVN repository by the weekend (a couple of long train journeys with little to do should give me the time I need). Docs for editing will take a lot longer, but as a straight read/write/don't lose in translation it should work reasonably well for most basic charts (special styling like image backgrounds in the chart area aren't covered, and a few specialist chart types aren't available); or for reading and rendering charts with jpGraph.... better documentation allowing for chart creation/editing is likely to come with 1.7.8.... I suspect there will be changes as it hits you folk and you uncover problems I hadn't anticipated.

Franck (Progi1984) has just checked in the code for writing document properties for Excel5 (it's been on the buglist for years, so congrats to him for taking it on his shoulders and finishing it off)... I'll also be testing that.

I've got about 90% of an experimental HTML Reader that I want to include in this release... I'm just so fed up of people saying "PHPExcel doesn't work", and it turns out they're trying to read an HTML file with a .xls extension. Doesn't yet handle styles, or merged cells, but otherwise can handle some pretty atrocious HTML markup errors relatively cleanly.

Last (but not least) I want to include at least some of schir1964's listWorksheetInfo() method.

 

Once all those changes are checked in, I'm hoping to get it all tested and built before the end of next week, so watch the news for the 1.7.7 release announcement... and pay attention to the Changelog, I'm advance highlighting a couple of feature changes/deprecations that I plan on introducing before the end of the year.

Developer
Feb 2, 2012 at 10:01 AM

@MarkBaker,

I commited yersterday in SVN the fix for "Document Properties for Excel5 Writer".

Feb 20, 2012 at 3:25 PM

i think that something went wrong :)

i'm looking forward to test the chart creation!

Developer
Mar 2, 2012 at 9:55 AM

@MarkBaker,

"Rich Text cells in Excel5 Writer" commited in SVN

Mar 12, 2012 at 12:01 AM

when will be finished beta version of 1.7.7 for download?

Mar 27, 2012 at 1:19 PM

I'd be glad to help for the integration of a DOMPDF adapter. I'm a DOMPDF project admin.

Fabien

Mar 29, 2012 at 11:06 AM

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

I made similar step for my libraries and this is bad idea. Currently any programmer can just replace your library and start using new version. With extension updating is much harder operation => will be many old versions on sites.

Better think about performance of creating large documents. My suggestions was ignored ( http://phpexcel.codeplex.com/discussions/213198 ), and current version still hasn't alternative to them...

Dec 2, 2012 at 1:14 PM

Hi -

is there any plan to include the YIELD function that is currently in development or on to do list?

Thanks

Martin