************************************************************************************** * PHPExcel * * Copyright (c) 2006 - 2008 PHPExcel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * @copyright Copyright (c) 2006 - 2008 PHPExcel (http://www.codeplex.com/PHPExcel) * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @version 1.6.1, 2008-04-28 ************************************************************************************** To be planned: 2008/04/28 (v1.6.1): - General: (MB) Work item 5532 - Fix documentation printing - General: (MB) Work item 5586 - Memory usage improvements - General: (MB) Applied patch 990 - General: (MB) Applied patch 991 - Feature: (BM) Work item 2841 - Implement PHPExcel_Reader_Excel5 - Feature: (MB) Work item 5564 - Implement "toArray" and "fromArray" method - Feature: (MB) Work item 5665 - Read shared formula - Feature: (MB) Work item 5681 - Read image twoCellAnchor - Feature: (MB) Work item 4446 - &G Image as bg for headerfooter - Feature: (MB) Work item 5834 - Implement page layout functionality for Excel5 format - Feature: (MB) Work item 6039 - Feature request: PHPExcel_Writer_PDF - Bugfix: (MB) Work item 5517 - DefinedNames null check - Bugfix: (MB) Work item 5463 - Hyperlinks should not always have trailing slash - Bugfix: (MB) Work item 5592 - Saving Error - Uncaught exception (#REF! named range) - Bugfix: (MB) Work item 5634 - Error when creating Zip file on Linux System (Not Windows) - Bugfix: (MB) Work item 5876 - Time incorrecly formated - Bugfix: (MB) Work item 5914 - Conditional formatting - second rule not applied - Bugfix: (MB) Work item 5978 - PHPExcel_Reader_Excel2007 cannot load PHPExcel_Shared_File - Bugfix: (MB) Work item 6020 - Output redirection to web browser 2008/02/14 (v1.6.0): - General: (MB) Work item 3156 - Use PHPExcel datatypes in formula calculation - Feature: (MB) Work item 5019 - Center on page when printing - Feature: (MB) Work item 5099 - Hyperlink to other spreadsheet - Feature: (MB) Work item 5104 - Set the print area of a worksheet - Feature: (MB) Work item 5118 - Read "definedNames" property of worksheet - Feature: (MB) Work item 5338 - Set default style for all cells - Feature: (MB) Work item 4216 - Named Ranges - Feature: (MB) Work item 5398 - Implement worksheet references (Sheet1!A1) - Bugfix: (MB) Work item 4967 - Redirect output to a client's web browser - Bugfix: (MB) Work item 5008 - "File Error: data may have been lost." seen in Excel 2007 and Excel 2003 SP3 when opening XLS file - Bugfix: (MB) Work item 5165 - Bug in style's getHashCode() - Bugfix: (MB) Work item 5165 - PHPExcel_Reader not correctly reading numeric values - Bugfix: (MB) Work item 5324 - Text rotation is read incorrectly - Bugfix: (MB) Work item 5326 - Enclosure " and data " result a bad data : \" instead of "" - Bugfix: (MB) Work item 5332 - Formula parser - IF statement returning array instead of scalar - Bugfix: (MB) Work item 5351 - setFitToWidth(nbpage) & setFitToWidth(nbpage) work partially - Bugfix: (MB) Work item 5361 - Worksheet::setTitle() causes unwanted renaming - Bugfix: (MB) Work item 5407 - Hyperlinks not working. Results in broken xlsx file. 2007/12/24 (v1.5.5): - General: (MB) Work item 4135 - Grouping Rows - General: (MB) Work item 4427 - Semi-nightly builds - Feature: (MB) Work item 3155 - Implement "date" datatype - Feature: (MB) Work item 4150 - Date format not honored in CSV writer - Feature: (MB) Work item 4199 - RichText and sharedStrings - Feature: (MB) Work item 2346 - Implement more Excel calculation functions - Addition of DATE, DATEDIF, DATEVALUE, DAY, DAYS360 - Feature: (MBaker) Work item 2346 - Implement more Excel calculation functions - Addition of AVEDEV, HARMEAN and GEOMEAN - Addition of the BINOMDIST (Non-cumulative only), COUNTBLANK, EXPONDIST, FISHER, FISHERINV, NORMDIST, NORMSDIST, PERMUT, POISSON (Non-cumulative only) and STANDARDIZE Statistical Functions - Addition of the CEILING, COMBIN, EVEN, FACT, FACTDOUBLE, FLOOR, MULTINOMIAL, ODD, ROUNDDOWN, ROUNDUP, SIGN, SQRTPI and SUMSQ Mathematical Functions - Addition of the NORMINV, NORMSINV, CONFIDENCE and SKEW Statistical Functions - Addition of the CRITBINOM, HYPGEOMDIST, KURT, LOGINV, LOGNORMDIST, NEGBINOMDIST and WEIBULL Statistical Functions - Addition of the LARGE, PERCENTILE, QUARTILE, SMALL and TRIMMEAN Statistical Functions - Addition of the BIN2HEX, BIN2OCT, DELTA, ERF, ERFC, GESTEP, HEX2BIN, HEX2DEC, HEX2OCT, OCT2BIN and OCT2HEX Engineering Functions - Addition of the CHIDIST, GAMMADIST and GAMMALN Statistical Functions - Addition of the GCD, LCM, MROUND and SUBTOTAL Mathematical Functions - Addition of the LOWER, PROPER and UPPER Text Functions - Addition of the BETADIST and BETAINV Statistical Functions - Addition of the CHIINV and GAMMAINV Statistical Functions - Addition of the SERIESSUM Mathematical Function - Addition of the CHAR, CODE, FIND, LEN, REPT, SEARCH, T, TRIM Text Functions - Addition of the FALSE and TRUE Boolean Functions - Addition of the TDIST and TINV Statistical Functions - Addition of the EDATE, EOMONTH, YEAR, MONTH, TIME, TIMEVALUE, HOUR, MINUTE, SECOND, WEEKDAY, WEEKNUM, NOW, TODAY and Date/Time Function - Addition of the BESSELI, BESSELJ, BESSELK and BESSELY Engineering Functions - Addition of the SLN and SYD Financial Functions - reworked MODE calculation to handle floating point numbers - Improved error trapping for invalid input values - Fix to SMALL, LARGE, PERCENTILE and TRIMMEAN to eliminate non-numeric values - Added CDF to BINOMDIST and POISSON - Fix to a potential endless loop in CRITBINOM, together with other bugfixes to the algorithm - Fix to SQRTPI so that it will work with a real value parameter rather than just integers - Trap for passing negative values to FACT - Improved accuracy of the NORMDIST cumulative function, and of the ERF and ERFC functions - Replicated Excel data-type and error handling for BIN, DEC, OCT and HEX conversion functions - Replicated Excel data-type and error handling for AND and OR Boolean functions - Bugfix to MROUND - Rework of the DATE, DATEVALUE, DAY, DAYS360 and DATEDIF date/Time functions to use Excel dates rather than straight PHP dates - Rework of the AND, OR Boolean functions to ignore string values - Rework of the BIN2DEC, BIN2HEX, BIN2OCT, DEC2BIN, DEC2HEX, DEC2OCT Engineering functions to handle two's complement - Excel, Gnumeric and OpenOffice Calc compatibility flag for functions Note, not all functions have yet been written to work with the Gnumeric and OpenOffice Calc compatibility flags - 1900 or 1904 Calendar flag for date functions - Reworked ExcelToPHP date method to handle the Excel 1900 leap year Note that this will not correctly return values prior to 13-Dec-1901 20:45:52 as this is the minimum value that PHP date serial values can handle. If you need to work with dates prior to this, then an ExcelToPHPObject method has been added which will work correctly with values between Excel's 1900 calendar base date of 1-Jan-1900, and 13-Dec-1901 - Addition of ExcelToPHPObject date method to return a PHP DateTime object from an Excel date serial value - PHPToExcel method modified to accept either PHP date serial numbers or PHP DateTime objects - Addition of FormattedPHPToExcel which will accept a date and time broken to into year, month, day, hour, minute, second and retuen an Excel date serial value - Feature: (MB) Work item 4485 - Control characters in Excel 2007 - Feature: (MB) Work item 4796 - BaseDrawing::setWidthAndHeight method request - Feature: (MB) Work item 4798 - Page Setup -> Print Titles -> Sheet -> 'Rows to repeat at top' - Feature: (MB) Work item 4433 - Comment functionality - Bugfix: (MB) Work item 4124 - Undefined variable in PHPExcel_Writer_Serialized - Bugfix: (MB) Work item 4125 - Notice: Object of class PHPExcel_RichText could not be converted to int - Bugfix: (MB) Work item 4126 - Excel5Writer: utf8 string not converted to utf16 - Bugfix: (MB) Work item 4180 - PHPExcel_RichText and autosize - Bugfix: (MB) Work item 4574 - Excel5Writer produces broken xls files after change mentioned in work item 4126 - Bugfix: (MB) Work item 4797 - Small bug in PHPExcel_Reader_Excel2007 function _readStyle 2007/10/23 (v 1.5.0): - General: (MB) Work item 3265 - Refactor PHPExcel Drawing - Feature: (CS) Work item 3079 - Update Shared/OLE.php to latest version from PEAR - Feature: (MB) Work item 3217 - Excel2007 vs Excel2003 compatibility pack - Feature: (MB) Work item 3234 - Cell protection (lock/unlock) - Feature: (MB) Work item 3543 - Create clickable links (hyperlinks) - Feature: (MB) Work item 3241 - Additional page setup parameters - Feature: (MB) Work item 3300 - Make temporary file path configurable (Excel5) - Feature: (MB) Work item 3306 - Small addition to applyFromArray for font - Feature: (MB) Work item 3373 - Better feedback when save of file is not possible - Bugfix: (MB) Work item 3181 - Text Rotation - Bugfix: (MB) Work item 3237 - Small bug in Page Orientation - Bugfix: (MB) Work item 3812 - insertNewColumnBeforeByColumn undefined - Bugfix: (MB) Work item 3893 - Sheet references not working in formula (Excel5 Writer) 2007/08/23 (v 1.4.5): - General: (MB) Work item 3003 - Class file endings - General: (MB) Work item 3081 - Different calculation engine improvements - General: (MB) Work item 3082 - Different improvements in PHPExcel_Reader_Excel2007 - General: (MB) Work item 3146 - Set XML indentation in PHPExcel_Writer_Excel2007 - Feature: (MB) Work item 3159 - Optionally store temporary Excel2007 writer data in file instead of memory - Feature: (MB) Work item 3063 - Implement show/hide gridlines - Feature: (MB) Work item 3064 - Implement option to read only data - Feature: (MB) Work item 3080 - Optionally disable formula precalculation - Feature: (MB) Work item 3154 - Explicitly set cell datatype - Feature: (MBaker) Work item 2346 - Implement more Excel calculation functions - Addition of MINA, MAXA, COUNTA, AVERAGEA, MEDIAN, MODE, DEVSQ, STDEV, STDEVA, STDEVP, STDEVPA, VAR, VARA, VARP and VARPA Excel Functions - Fix to SUM, PRODUCT, QUOTIENT, MIN, MAX, COUNT and AVERAGE functions when cell contains a numeric value in a string datatype, bringing it in line with MS Excel behaviour - Bugfix: (MB) Work item 2881 - File_exists on ZIP fails on some installations - Bugfix: (MB) Work item 2879 - Argument in textRotation should be -90..90 - Bugfix: (MB) Work item 2883 - Excel2007 reader/writer not implementing OpenXML/SpreadsheetML styles 100% correct - Bugfix: (MB) Work item 2513 - Active sheet index not read/saved - Bugfix: (MB) Work item 2935 - Print and print preview of generated XLSX causes Excel2007 to crash - Bugfix: (MB) Work item 2952 - Error in Calculations - COUNT() function - Bugfix: (MB) Work item 3002 - HTML and CSV writer not writing last row - Bugfix: (MB) Work item 3017 - Memory leak in Excel5 writer - Bugfix: (MB) Work item 3044 - Printing (PHPExcel_Writer_Excel5) - Bugfix: (MB) Work item 3046 - Problems reading zip:// - Bugfix: (MB) Work item 3047 - Error reading conditional formatting - Bugfix: (MB) Work item 3067 - Bug in Excel5 writer (storePanes) - Bugfix: (MB) Work item 3077 - Memory leak in PHPExcel_Style_Color 2007/07/23 (v 1.4.0): - General: (MB) Work item 2687 - Coding convention / code cleanup - General: (MB) Work item 2717 - Use set_include_path in tests - General: (MB) Work item 2812 - Move PHPExcel_Writer_Excel5 OLE to PHPExcel_Shared_OLE - Feature: (MB) Work item 2679 - Hide/Unhide Column or Row - Feature: (MB) Work item 2271 - Implement multi-cell styling - Feature: (MB) Work item 2720 - Implement CSV file format (reader/writer) - Feature: (MB) Work item 2845 - Implement HTML file format - Bugfix: (MB) Work item 2513 - Active sheet index not read/saved - Bugfix: (MB) Work item 2678 - Freeze Panes with PHPExcel_Writer_Excel5 - Bugfix: (MB) Work item 2680 - OLE.php - Bugfix: (MB) Work item 2736 - Copy and pasting multiple drop-down list cells breaks reader - Bugfix: (MB) Work item 2775 - Function setAutoFilterByColumnAndRow takes wrong arguments - Bugfix: (MB) Work item 2858 - Simplexml_load_file fails on ZipArchive 2007/06/27 (v 1.3.5): - General: (MB) Work item 15 - Documentation - Feature: (JV) PHPExcel_Writer_Excel5 - Feature: (JV) PHPExcel_Reader_Excel2007: Image shadows - Feature: (MB) Work item 2385 - Data validation - Feature: (MB) Work item 187 - Implement richtext strings - Bugfix: (MB) Work item 2443 - Empty relations when adding image to any sheet but the first one - Bugfix: (MB) Work item 2536 - Excel2007 crashes on print preview 2007/06/05 (v 1.3.0): - General: (MB) Work item 1942 - Create PEAR package - General: (MB) Work item 2331 - Replace *->duplicate() by __clone() - Feature: (JV) PHPExcel_Reader_Excel2007: Column auto-size, Protection, Merged cells, Wrap text, Page breaks, Auto filter, Images - Feature: (MB) Work item 245 - Implement "freezing" panes - Feature: (MB) Work item 2273 - Cell addressing alternative - Feature: (MB) Work item 2270 - Implement cell word-wrap attribute - Feature: (MB) Work item 2282 - Auto-size column - Feature: (MB) Work item 241 - Implement formula calculation - Feature: (MB) Work item 2375 - Insert/remove row/column - Bugfix: (MB) Work item 1931 - PHPExcel_Worksheet::getCell() should not accept absolute coordinates - Bugfix: (MB) Work item 2272 - Cell reference without row number - Bugfix: (MB) Work item 2276 - Styles with same coordinate but different worksheet - Bugfix: (MB) Work item 2290 - PHPExcel_Worksheet->getCellCollection() usort error - Bugfix: (SS) Work item 2353 - Bug in PHPExcel_Cell::stringFromColumnIndex - Bugfix: (JV) Work item 2353 - Reader: numFmts can be missing, use cellStyleXfs instead of cellXfs in styles 2007/04/26 (v 1.2.0): - General: (MB) Stringtable attribute "count" not necessary, provides wrong info to Excel sometimes... - General: (MB) Updated tests to address more document properties - General: (MB) Some refactoring in PHPExcel_Writer_Excel2007_Workbook - General: (MB) New package: PHPExcel_Shared - General: (MB) Password hashing algorithm implemented in PHPExcel_Shared_PasswordHasher - General: (MB) Moved pixel conversion functions to PHPExcel_Shared_Drawing - General: (MB) Work item 244 - Switch over to LGPL license - General: (MB) Work item 5 - Include PHPExcel version in file headers - Feature: (MB) Work item 6 - Autofilter - Feature: (MB) Work item 7 - Extra document property: keywords - Feature: (MB) Work item 8 - Extra document property: category - Feature: (MB) Work item 9 - Document security - Feature: (MB) Work item 10 - PHPExcel_Writer_Serialized and PHPExcel_Reader_Serialized - Feature: (MB) Work item 11 - Alternative syntax: Addressing a cell - Feature: (MB) Work item 12 - Merge cells - Feature: (MB) Work item 13 - Protect ranges of cells with a password - Bugfix: (JV) Work item 14 - (style/fill/patternFill/fgColor or bgColor can be empty) 2007/03/26 (v 1.1.1): - Bugfix: (MB) Work item 1250 - Syntax error in "Classes/PHPExcel/Writer/Excel2007.php" on line 243 - General: (MB) Work item 1282 - Reader should check if file exists and throws an exception when it doesn't 2007/03/22 (v 1.1.0): - Changed filenames of tests - Bugfix: (MB) Work item 836 - Style information lost after passing trough Excel2007_Reader - Bugfix: (MB) Work item 913 - Number of columns > AZ fails fixed in PHPExcel_Cell::columnIndexFromString - General: (MB) Added a brief file with installation instructions - Feature: (MB) Page breaks (horizontal and vertical) - Feature: (MB) Image shadows 2007/02/22 (v 1.0.0): - Changelog now includes developer initials - Bugfix: (JV) PHPExcel->removeSheetByIndex now re-orders sheets after deletion, so no array indexes are lost - Bugfix: (JV) PHPExcel_Writer_Excel2007_Worksheet::_writeCols() used direct assignment to $pSheet->getColumnDimension('A')->Width instead of $pSheet->getColumnDimension('A')->setWidth() - Bugfix: (JV) DocumentProperties used $this->LastModifiedBy instead of $this->_lastModifiedBy. - Bugfix: (JV) Only first = should be removed when writing formula in PHPExcel_Writer_Excel2007_Worksheet. - General: (JV) Consistency of method names to camelCase - General: (JV) Updated tests to match consistency changes - General: (JV) Detection of mime-types now with image_type_to_mime_type() - General: (JV) Constants now hold string value used in Excel 2007 - General: (MB) Fixed folder name case (WorkSheet -> Worksheet) - Feature: (MB) PHPExcel classes (not the Writer classes) can be duplicated, using a duplicate() method. - Feature: (MB) Cell styles can now be duplicated to a range of cells using PHPExcel_Worksheet->duplicateStyle() - Feature: (MB) Conditional formatting - Feature: (JV) Reader for Excel 2007 (not supporting full specification yet!) 2007/01/31 (v 1.0.0 RC): - Project name has been changed to PHPExcel - Project homepage is now http://www.codeplex.com/PHPExcel - Started versioning at number: PHPExcel 1.0.0 RC 2007/01/22: - Fixed some performance issues on large-scale worksheets (mainly loops vs. indexed arrays) - Performance on creating StringTable has been increased - Performance on writing Excel2007 worksheet has been increased 2007/01/18: - Images can now be rotated - Fixed bug: When drawings have full path specified, no mime type can be deducted - Fixed bug: Only one drawing can be added to a worksheet 2007/01/12: - Refactoring of some classes to use ArrayObject instead of array() - Cell style now has support for number format (i.e. #,##0) - Implemented embedding images 2007/01/02: - Cell style now has support for fills, including gradient fills - Cell style now has support for fonts - Cell style now has support for border colors - Cell style now has support for font colors - Cell style now has support for alignment 2006/12/21: - Support for cell style borders - Support for cell styles - Refactoring of Excel2007 Writer into multiple classes in package SpreadSheet_Writer_Excel2007 - Refactoring of all classes, changed public members to public properties using getter/setter - Worksheet names are now unique. On duplicate worksheet names, a number is appended. - Worksheet now has parent SpreadSheet object - Worksheet now has support for page header and footer - Worksheet now has support for page margins - Worksheet now has support for page setup (only Paper size and Orientation) - Worksheet properties now accessible by using getProperties() - Worksheet now has support for row and column dimensions (height / width) - Exceptions thrown have a more clear description Initial version: - Create a Spreadsheet object - Add one or more Worksheet objects - Add cells to Worksheet objects - Export Spreadsheet object to Excel 2007 OpenXML format - Each cell supports the following data formats: string, number, formula, boolean.