2016-08-28 07:29:42 +00:00
# Changelog
2017-09-08 17:56:23 +00:00
2016-08-28 07:29:42 +00:00
All notable changes to this project will be documented in this file.
2018-10-23 11:26:25 +00:00
The format is based on [Keep a Changelog ](https://keepachangelog.com )
and this project adheres to [Semantic Versioning ](https://semver.org ).
2016-08-28 07:29:42 +00:00
2020-04-27 09:42:32 +00:00
## [Unreleased]
2020-05-02 03:35:42 +00:00
### Added
2020-05-16 11:27:47 +00:00
- Support writing to streams in all writers [#1292 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1292 )
2020-05-12 08:17:07 +00:00
- Support CSV files with data wrapping a lot of lines [#1468 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1468 )
2020-05-02 03:35:42 +00:00
### Fixed
2020-04-18 14:37:45 +00:00
- Fix Chart samples by updating chart parameter from 0 to DataSeries::EMPTY_AS_GAP [#1448 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1448 )
2020-05-17 10:42:28 +00:00
- Fix return type in docblock for the Cells::get() [#1398 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1398 )
2020-05-17 10:52:34 +00:00
- Fix RATE, PRICE, XIRR, and XNPV Functions [#1456 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1456 )
Save Excel 2010+ Functions Properly
For functions introduced in Excel 2010 and beyond, Excel saves them
in formulas with the xlfn_ prefix. PhpSpreadsheet does not do this;
as a result, when a spreadsheet so created is opened, the cells
which use the new functions display a #NAME? error.
This the cause of bug report 1246:
https://github.com/PHPOffice/PhpSpreadsheet/issues/1246
This change corrects that problem when the Xlsx writer encounters
a 2010+ formula for a cell or a conditional style. A new class
Writer/Xlsx/Xlfn, with 2 static methods,
is introduced to facilitate this change.
As part of the testing for this, I found some additional problems.
When an unknown function name is used, Excel generates a #NAME? error.
However, when an unknown function is used in PhpSpreadsheet:
- if there are no parameters, it returns #VALUE!, which is wrong
- if there are parameters, it throws an exception, which is horrible
Both of these situations will now return #NAME?
Tests have been added for these situations.
The MODE (and MODE.SNGL) function is not quite in alignment with Excel.
MODE(3, 3, 4, 4) returns 3 in both Excel and PhpSpreadsheet.
However, MODE(4, 3, 3, 4) returns 4 in Excel, but 3 in PhpSpreadsheet.
Both situations will now match Excel's result.
Also, Excel allows its parameters for MODE to be an array,
but PhpSpreadsheet did not; it now will.
There had not been any tests for MODE. Now there are.
The SHEET and SHEETS functions were introduced in Excel 2013,
but were not introduced in PhpSpreadsheet. They are now introduced
as DUMMY functions so that they can be parsed appropriately.
Finally, in common with the "rate" changes for which I am
creating a pull request at the same time as this one:
samples/Basic/13_CalculationCyclicFormulae
PhpUnit started reporting an error like "too much regression".
The test deals with an infinite cyclic formula, and allowed
the calculation engine to run for 100 cycles. The actual number of cycles
seems irrelevant for the purpose of this test. I changed it to 15,
and PhpUnit no longer complains.
2020-05-03 14:06:12 +00:00
- Save Excel 2010+ functions properly in XLSX [#1461 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1461 )
2020-05-18 03:49:46 +00:00
- Several improvements in HTML writer [#1464 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1464 )
2020-05-23 11:09:10 +00:00
- Fix incorrect behaviour when saving XLSX file with drawings [#1462 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1462 ),
2020-05-23 10:49:54 +00:00
- Fix Crash while trying setting a cell the value "123456\n" [#1476 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1481 )
2020-05-25 19:41:02 +00:00
- Improved DATEDIF() function and reduced errors for Y and YM units [#1466 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1466 )
2020-05-02 03:35:42 +00:00
2020-04-27 09:42:32 +00:00
### Changed
- Drop support for PHP 7.1, according to https://phpspreadsheet.readthedocs.io/en/latest/#php-version-support
2020-05-02 03:34:20 +00:00
- Drop partial migration tool in favor of complete migration via RectorPHP [#1445 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1445 )
2020-03-24 10:52:22 +00:00
- Limit composer package to `src/` [#1424 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1424 )
2020-04-27 09:42:32 +00:00
2020-04-27 08:12:48 +00:00
## [1.12.0] - 2020-04-27
2020-03-06 09:34:51 +00:00
2020-04-26 01:24:14 +00:00
### Added
2020-04-27 08:12:48 +00:00
- Improved the ARABIC function to also handle short-hand roman numerals
2020-02-06 07:53:25 +00:00
- Added support for the FLOOR.MATH and FLOOR.PRECISE functions [#1351 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1351 )
2020-04-26 01:24:14 +00:00
### Fixed
- Fix ROUNDUP and ROUNDDOWN for floating-point rounding error [#1404 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1404 )
2020-03-12 03:37:07 +00:00
- Fix ROUNDUP and ROUNDDOWN for negative number [#1417 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1417 )
2020-04-26 01:24:14 +00:00
- Fix loading styles from vmlDrawings when containing whitespace [#1347 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1347 )
Fix removing last row incorrect behavior
`$highestRow = $this->getHighestDataRow();` was calculated after `$this->getCellCollection()->removeRow($pRow + $r);` - this is the root reason for incorrect rows removal because removing last row will change '$this->getHighestDataRow()' value, but removing row from the middle will not change it. So, removing last row causes incorrect `$highestRow` value that is used for wiping out empty rows from the bottom of the table:
```php
for ($r = 0; $r < $pNumRows; ++$r) {
$this->getCellCollection()->removeRow($highestRow);
--$highestRow;
}
```
To prevent this incorrect behavior I've moved highest row calculation before row removal.
But this still doesn't solve another problem when trying remove non existing rows: in this case the code above will remove `$pNumRows` rows from below of the table, e.g. if `$highestRow=4` and `$pNumRows=6`, than rows 4, 3, 2, 1, 0, -1 will be deleted. Obviously, this is not good, that is why I've added `$removedRowsCounter` to fix this issue.
And finally, moved Exception to early if statement to get away from unnecessary 'if-else'.
Fixes #1364
Closes #1365
2020-04-26 02:00:43 +00:00
- Fix incorrect behavior when removing last row [#1365 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1365 )
MATCH with a static array should return the position of the found value based on the values submitted.
Returns #N/A, unless the element searched for is at the end of the array.
The problem is in Calculation.php line 4231:
if (!is_array($functionCall)) {
foreach ($args as &$arg) {
$arg = Functions::flattenSingleValue($arg);
}
unset($arg);
}
I believe this code is intended to handle functions where PhpSpreadsheet just passes
the call on to PHP without implementing the code on its own, e.g. for atan or acos.
In the bug report, the following code fails:
$flat_rate = "=MATCH(6,{4,5,6,2}, 0)";
$sheet->getCell('A1')->setValue($flat_rate);
The expected value is 3, but the actual result is "#N/A".
The reason for this result is that the parser replaces the braces with calls
to the MKMATRIX internal function, whose value for functioncall was:
'self::MKMATRIX'. Since this isn't an array, the flattening code is executed,
and the unintended result occurs. The fix is to change the definition for
functioncall in that case to [__CLASS__, 'mkMatrix'], avoiding the flattening.
However, there is also another part to this bug. The flattening should be
returning the first entry in the array, but is in fact returning the last.
This explains why the bug report specified "unless ... end of the array".
I confirmed that Excel does use the first item in the array rather than the last,
e.g. =atan({1,2,3}) entered into a cell will return atan(1), not atan(3).
The problem here is that flattenSingleValue, which says in its comments that
it is supposed to be returning the first item, uses array_pop rather than array_shift.
I have changed that as well. The same mistake was also present in
Cell.php function getCalculatedValue. The correct behavior can be verified
by entering =minverse({-2.5,1.5;2,-1}) into an Excel cell'
Excel flattens the result ({2,3;4,5}) to 2, and so should PhpSpreadsheet.
Fixes #1271
Closes #1332
2020-01-18 01:52:16 +00:00
- MATCH with a static array should return the position of the found value based on the values submitted [#1332 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1332 )
2020-02-14 13:32:41 +00:00
- Fix Xlsx Reader's handling of undefined fill color [#1353 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1353 )
2020-04-26 01:24:14 +00:00
## [1.11.0] - 2020-03-02
### Added
- Added support for the BASE function
- Added support for the ARABIC function
2020-01-04 17:55:03 +00:00
- Conditionals - Extend Support for (NOT)CONTAINSBLANKS [#1278 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1278 )
2019-11-25 07:41:55 +00:00
### Fixed
2020-01-04 17:55:03 +00:00
- Handle Error in Formula Processing Better for Xls [#1267 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1267 )
2020-01-03 23:32:27 +00:00
- Handle ConditionalStyle NumberFormat When Reading Xlsx File [#1296 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1296 )
- Fix Xlsx Writer's handling of decimal commas [#1282 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1282 )
2020-01-24 05:40:30 +00:00
- Fix for issue by removing test code mistakenly left in [#1328 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1328 )
2019-11-25 07:41:55 +00:00
- Fix for Xls writer wrong selected cells and active sheet [#1256 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1256 )
2020-01-15 03:44:06 +00:00
- Fix active cell when freeze pane is used [#1323 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1323 )
2020-01-15 14:49:24 +00:00
- Fix XLSX file loading with autofilter containing '$' [#1326 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1326 )
2020-02-16 20:51:20 +00:00
- PHPDoc - Use `@return $this` for fluent methods [#1362 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1362 )
2020-01-03 23:32:27 +00:00
2019-12-01 23:13:51 +00:00
## [1.10.1] - 2019-12-02
2019-11-29 22:41:02 +00:00
### Changed
- PHP 7.4 compatibility
### Fixed
2019-11-17 05:12:39 +00:00
- FLOOR() function accept negative number and negative significance [#1245 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1245 )
2019-11-21 10:04:55 +00:00
- Correct column style even when using rowspan [#1249 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1249 )
2019-11-30 15:23:03 +00:00
- Do not confuse defined names and cell refs [#1263 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1263 )
2019-11-25 16:00:15 +00:00
- XLSX reader/writer keep decimal for floats with a zero decimal part [#1262 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1262 )
2019-11-26 10:21:01 +00:00
- ODS writer prevent invalid numeric value if locale decimal separator is comma [#1268 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1268 )
2019-11-29 14:27:48 +00:00
- Xlsx writer actually writes plotVisOnly and dispBlanksAs from chart properties [#1266 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1266 )
2019-11-29 22:41:02 +00:00
2019-11-18 11:33:05 +00:00
## [1.10.0] - 2019-11-18
2019-05-26 08:05:45 +00:00
2019-11-17 17:08:34 +00:00
### Changed
- Change license from LGPL 2.1 to MIT [#140 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/140 )
2019-07-12 05:52:03 +00:00
### Added
2019-09-20 23:04:36 +00:00
- Implementation of IFNA() logical function
2019-10-28 20:52:30 +00:00
- Support "showZeros" worksheet option to change how Excel shows and handles "null" values returned from a calculation
2019-11-17 20:18:53 +00:00
- Allow HTML Reader to accept HTML as a string into an existing spreadsheet [#1212 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1212 )
2019-08-17 22:28:41 +00:00
### Fixed
2019-09-22 20:56:19 +00:00
- IF implementation properly handles the value `#N/A` [#1165 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1165 )
2019-10-29 22:35:23 +00:00
- Formula Parser: Wrong line count for stuff like "MyOtherSheet!A:D" [#1215 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1215 )
2019-10-28 17:42:56 +00:00
- Call garbage collector after removing a column to prevent stale cached values
2019-10-28 17:52:06 +00:00
- Trying to remove a column that doesn't exist deletes the latest column
2019-11-10 21:49:00 +00:00
- Keep big integer as integer instead of lossely casting to float [#874 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/874 )
2019-09-22 22:05:04 +00:00
- Fix branch pruning handling of non boolean conditions [#1167 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1167 )
2019-10-01 09:47:59 +00:00
- Fix ODS Reader when no DC namespace are defined [#1182 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1182 )
2019-10-15 11:11:43 +00:00
- Fixed Functions->ifCondition for allowing < > and empty condition [#1206 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1206 )
2019-09-26 13:58:28 +00:00
- Validate XIRR inputs and return correct error values [#1120 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1120 )
2019-10-01 13:52:15 +00:00
- Allow to read xlsx files with exotic workbook names like "workbook2.xml" [#1183 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1183 )
2019-08-17 22:28:41 +00:00
2019-08-17 22:24:35 +00:00
## [1.9.0] - 2019-08-17
2019-05-26 08:05:45 +00:00
2019-08-24 19:42:22 +00:00
### Changed
- Drop support for PHP 5.6 and 7.0, according to https://phpspreadsheet.readthedocs.io/en/latest/#php-version-support
2019-07-12 05:52:03 +00:00
### Added
2019-08-17 20:31:40 +00:00
- When < br> appears in a table cell, set the cell to wrap [#1071 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1071 ) and [#1070 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1070 )
- Add MAXIFS, MINIFS, COUNTIFS and Remove MINIF, MAXIF [#1056 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1056 )
- HLookup needs an ordered list even if range_lookup is set to false [#1055 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1055 ) and [#1076 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1076 )
2018-11-27 15:55:06 +00:00
- Improve performance of IF function calls via ranch pruning to avoid resolution of every branches [#844 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/844 )
2019-08-17 20:31:40 +00:00
- MATCH function supports `*?~` Excel functionality, when match_type=0 [#1116 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1116 )
- Allow HTML Reader to accept HTML as a string [#1136 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1136 )
2019-07-12 05:52:03 +00:00
2019-07-10 19:22:16 +00:00
### Fixed
2019-07-16 14:18:42 +00:00
- Fix to AVERAGEIF() function when called with a third argument
2019-08-17 20:31:40 +00:00
- Eliminate duplicate fill none style entries [#1066 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1066 )
- Fix number format masks containing literal (non-decimal point) dots [#1079 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1079 )
- Fix number format masks containing named colours that were being misinterpreted as date formats; and add support for masks that fully replace the value with a full text string [#1009 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1009 )
- Stricter-typed comparison testing in COUNTIF() and COUNTIFS() evaluation [#1046 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1046 )
- COUPNUM should not return zero when settlement is in the last period [#1020 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1020 ) and [#1021 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1021 )
2019-03-13 10:32:22 +00:00
- Fix handling of named ranges referencing sheets with spaces or "!" in their title
2019-08-17 20:31:40 +00:00
- Cover `getSheetByName()` with tests for name with quote and spaces [#739 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/739 )
- Best effort to support invalid colspan values in HTML reader - [#878 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/878 )
2019-01-31 10:38:31 +00:00
- Fixes incorrect rows deletion [#868 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/868 )
2019-08-17 20:31:40 +00:00
- MATCH function fix (value search by type, stop search when match_type=-1 and unordered element encountered) [#1116 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1116 )
2019-07-30 09:04:15 +00:00
- Fix `getCalculatedValue()` error with more than two INDIRECT [#1115 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1115 )
2019-05-14 15:37:51 +00:00
- Writer\Html did not hide columns [#985 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/985 )
2019-06-30 22:55:25 +00:00
2019-07-08 21:21:25 +00:00
## [1.8.2] - 2019-07-08
### Fixed
2019-08-17 20:31:40 +00:00
- Uncaught error when opening ods file and properties aren't defined [#1047 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1047 )
- Xlsx Reader Cell datavalidations bug [#1052 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/1052 )
2019-07-08 21:21:25 +00:00
2019-07-01 20:46:51 +00:00
## [1.8.1] - 2019-07-02
### Fixed
2019-08-17 20:31:40 +00:00
- Allow nullable theme for Xlsx Style Reader class [#1043 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/1043 )
2019-07-01 20:46:51 +00:00
2019-06-30 22:55:25 +00:00
## [1.8.0] - 2019-07-01
### Security Fix (CVE-2019-12331)
- Detect double-encoded xml in the Security scanner, and reject as suspicious.
- This change also broadens the scope of the `libxml_disable_entity_loader` setting when reading XML-based formats, so that it is enabled while the xml is being parsed and not simply while it is loaded.
On some versions of PHP, this can cause problems because it is not thread-safe, and can affect other PHP scripts running on the same server. This flag is set to true when instantiating a loader, and back to its original setting when the Reader is no longer in scope, or manually unset.
- Provide a check to identify whether libxml_disable_entity_loader is thread-safe or not.
`XmlScanner::threadSafeLibxmlDisableEntityLoaderAvailability()`
- Provide an option to disable the libxml_disable_entity_loader call through settings. This is not recommended as it reduces the security of the XML-based readers, and should only be used if you understand the consequences and have no other choice.
2019-08-17 20:31:40 +00:00
2019-05-30 08:05:37 +00:00
### Added
2019-08-17 20:31:40 +00:00
- Added support for the SWITCH function [#963 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/963 ) and [#983 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/983 )
2019-05-30 08:06:05 +00:00
- Add accounting number format style [#974 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/974 )
2019-05-30 08:05:37 +00:00
2019-05-26 08:05:45 +00:00
### Fixed
- Whitelist `tsv` extension when opening CSV files [#429 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/429 )
2019-02-01 14:01:19 +00:00
- Fix a SUMIF warning with some versions of PHP when having different length of arrays provided as input [#873 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/873 )
2019-05-30 09:59:01 +00:00
- Fix incorrectly handled backslash-escaped space characters in number format
2019-05-26 08:05:45 +00:00
2019-05-26 02:49:41 +00:00
## [1.7.0] - 2019-05-26
2019-02-16 22:11:16 +00:00
- Added support for inline styles in Html reader (borders, alignment, width, height)
2019-02-18 21:56:32 +00:00
- QuotedText cells no longer treated as formulae if the content begins with a `=`
- Clean handling for DDE in formulae
2019-03-06 21:37:06 +00:00
### Fixed
2019-02-25 22:20:50 +00:00
- Fix handling for escaped enclosures and new lines in CSV Separator Inference
2019-03-06 21:37:06 +00:00
- Fix MATCH an error was appearing when comparing strings against 0 (always true)
2019-04-15 19:39:11 +00:00
- Fix wrong calculation of highest column with specified row [#700 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/700 )
2019-08-17 20:31:40 +00:00
- Fix VLOOKUP
2019-04-15 19:33:07 +00:00
- Fix return type hint
2019-02-16 22:11:16 +00:00
2019-01-02 04:42:54 +00:00
## [1.6.0] - 2019-01-02
2018-11-20 19:57:38 +00:00
2018-11-29 21:25:31 +00:00
### Added
- Refactored Matrix Functions to use external Matrix library
2019-08-17 20:31:40 +00:00
- Possibility to specify custom colors of values for pie and donut charts [#768 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/768 )
2018-11-29 21:25:31 +00:00
2018-11-29 21:52:48 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Improve XLSX parsing speed if no readFilter is applied [#772 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/772 )
- Fix column names if read filter calls in XLSX reader skip columns [#777 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/777 )
- XLSX reader can now ignore blank cells, using the setReadEmptyCells(false) method. [#810 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/810 )
- Fix LOOKUP function which was breaking on edge cases [#796 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/796 )
- Fix VLOOKUP with exact matches [#809 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/809 )
- Support COUNTIFS multiple arguments [#830 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/830 )
- Change `libxml_disable_entity_loader()` as shortly as possible [#819 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/819 )
- Improved memory usage and performance when loading large spreadsheets [#822 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/822 )
- Improved performance when loading large spreadsheets [#825 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/825 )
- Improved performance when loading large spreadsheets [#824 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/824 )
- Fix color from CSS when reading from HTML [#831 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/831 )
- Fix infinite loop when reading invalid ODS files [#832 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/832 )
- Fix time format for duration is incorrect [#666 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/666 )
- Fix iconv unsupported `//IGNORE//TRANSLIT` on IBM i [#791 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/791 )
2018-11-29 21:25:31 +00:00
2019-01-02 04:23:59 +00:00
### Changed
- `master` is the new default branch, `develop` does not exist anymore
2018-11-25 17:39:05 +00:00
## [1.5.2] - 2018-11-25
### Security
2019-08-17 20:31:40 +00:00
- Improvements to the design of the XML Security Scanner [#771 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/771 )
2018-11-25 17:39:05 +00:00
2018-11-20 19:51:42 +00:00
## [1.5.1] - 2018-11-20
### Security
2019-08-17 20:31:40 +00:00
- Fix and improve XXE security scanning for XML-based and HTML Readers [#771 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/771 )
2018-10-02 12:51:51 +00:00
2018-11-11 10:39:19 +00:00
### Added
2019-08-17 20:31:40 +00:00
- Support page margin in mPDF [#750 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/750 )
2018-11-11 10:39:19 +00:00
2018-10-02 12:51:51 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Support numeric condition in SUMIF, SUMIFS, AVERAGEIF, COUNTIF, MAXIF and MINIF [#683 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/683 )
- SUMIFS containing multiple conditions [#704 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/704 )
- Csv reader avoid notice when the file is empty [#743 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/743 )
- Fix print area parser for XLSX reader [#734 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/734 )
- Support overriding `DefaultValueBinder::dataTypeForValue()` without overriding `DefaultValueBinder::bindValue()` [#735 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/735 )
- Mpdf export can exceed pcre.backtrack_limit [#637 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/637 )
- Fix index overflow on data values array [#748 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/748 )
2018-10-02 12:51:51 +00:00
2018-10-21 10:04:54 +00:00
## [1.5.0] - 2018-10-21
2018-10-03 03:52:51 +00:00
2018-07-11 12:50:09 +00:00
### Added
2018-10-21 10:04:54 +00:00
- PHP 7.3 support
2019-08-17 20:31:40 +00:00
- Add the DAYS() function [#594 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/594 )
2018-07-11 12:50:09 +00:00
2018-10-03 03:52:51 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Sheet title can contain exclamation mark [#325 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/325 )
- Xls file cause the exception during open by Xls reader [#402 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/402 )
- Skip non numeric value in SUMIF [#618 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/618 )
- OFFSET should allow omitted height and width [#561 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/561 )
- Correctly determine delimiter when CSV contains line breaks inside enclosures [#716 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/716 )
2018-10-03 03:52:51 +00:00
2018-09-30 03:57:24 +00:00
## [1.4.1] - 2018-09-30
2018-09-28 12:28:40 +00:00
2018-08-07 07:38:18 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Remove locale from formatting string [#644 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/644 )
- Allow iterators to go out of bounds with prev [#587 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/587 )
- Fix warning when reading xlsx without styles [#631 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/631 )
- Fix broken sample links on windows due to $baseDir having backslash [#653 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/653 )
2018-08-07 07:38:18 +00:00
2018-08-06 02:58:06 +00:00
## [1.4.0] - 2018-08-06
2018-06-17 17:46:51 +00:00
2018-06-24 11:09:32 +00:00
### Added
2019-08-17 20:31:40 +00:00
- Add excel function EXACT(value1, value2) support [#595 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/595 )
- Support workbook view attributes for Xlsx format [#523 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/523 )
- Read and write hyperlink for drawing image [#490 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/490 )
2018-07-22 21:16:34 +00:00
- Added calculation engine support for the new bitwise functions that were added in MS Excel 2013
2018-07-25 13:38:44 +00:00
- BITAND() Returns a Bitwise 'And' of two numbers
- BITOR() Returns a Bitwise 'Or' of two number
- BITXOR() Returns a Bitwise 'Exclusive Or' of two numbers
- BITLSHIFT() Returns a number shifted left by a specified number of bits
- BITRSHIFT() Returns a number shifted right by a specified number of bits
2018-07-22 21:16:34 +00:00
- Added calculation engine support for other new functions that were added in MS Excel 2013 and MS Excel 2016
2018-07-22 18:17:04 +00:00
- Text Functions
- CONCAT() Synonym for CONCATENATE()
- NUMBERVALUE() Converts text to a number, in a locale-independent way
- UNICHAR() Synonym for CHAR() in PHPSpreadsheet, which has always used UTF-8 internally
- UNIORD() Synonym for ORD() in PHPSpreadsheet, which has always used UTF-8 internally
- TEXTJOIN() Joins together two or more text strings, separated by a delimiter
- Logical Functions
- XOR() Returns a logical Exclusive Or of all arguments
- Date/Time Functions
- ISOWEEKNUM() Returns the ISO 8601 week number of the year for a given date
- Lookup and Reference Functions
- FORMULATEXT() Returns a formula as a string
- Financial Functions
- PDURATION() Calculates the number of periods required for an investment to reach a specified value
- RRI() Calculates the interest rate required for an investment to grow to a specified future value
- Engineering Functions
- ERF.PRECISE() Returns the error function integrated between 0 and a supplied limit
- ERFC.PRECISE() Synonym for ERFC
- Math and Trig Functions
- SEC() Returns the secant of an angle
- SECH() Returns the hyperbolic secant of an angle
- CSC() Returns the cosecant of an angle
- CSCH() Returns the hyperbolic cosecant of an angle
- COT() Returns the cotangent of an angle
- COTH() Returns the hyperbolic cotangent of an angle
- ACOT() Returns the cotangent of an angle
- ACOTH() Returns the hyperbolic cotangent of an angle
2018-07-25 13:38:44 +00:00
- Refactored Complex Engineering Functions to use external complex number library
- Added calculation engine support for the new complex number functions that were added in MS Excel 2013
- IMCOSH() Returns the hyperbolic cosine of a complex number
- IMCOT() Returns the cotangent of a complex number
- IMCSC() Returns the cosecant of a complex number
- IMCSCH() Returns the hyperbolic cosecant of a complex number
- IMSEC() Returns the secant of a complex number
- IMSECH() Returns the hyperbolic secant of a complex number
- IMSINH() Returns the hyperbolic sine of a complex number
2019-08-17 20:31:40 +00:00
- IMTAN() Returns the tangent of a complex number
2018-06-24 10:35:45 +00:00
2018-06-17 17:46:51 +00:00
### Fixed
2018-07-22 21:16:34 +00:00
- Fix ISFORMULA() function to work with a cell reference to another worksheet
2019-08-17 20:31:40 +00:00
- Xlsx reader crashed when reading a file with workbook protection [#553 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/553 )
- Cell formats with escaped spaces were causing incorrect date formatting [#557 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/557 )
- Could not open CSV file containing HTML fragment [#564 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/564 )
- Exclude the vendor folder in migration [#481 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/481 )
2018-07-15 03:19:54 +00:00
- Chained operations on cell ranges involving borders operated on last cell only [#428 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/428 )
2018-07-24 14:32:16 +00:00
- Avoid memory exhaustion when cloning worksheet with a drawing [#437 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/437 )
2018-07-20 16:13:01 +00:00
- Migration tool keep variables containing $PHPExcel untouched [#598 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/598 )
2018-08-01 09:45:12 +00:00
- Rowspans/colspans were incorrect when adding worksheet using loadIntoExisting [#619 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/619 )
2018-06-17 17:46:51 +00:00
2018-06-12 13:40:21 +00:00
## [1.3.1] - 2018-06-12
2018-06-11 13:54:11 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Ranges across Z and AA columns incorrectly threw an exception [#545 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/545 )
2018-06-11 13:54:11 +00:00
2018-06-10 06:44:19 +00:00
## [1.3.0] - 2018-06-10
2018-05-12 02:47:46 +00:00
### Added
2019-08-17 20:31:40 +00:00
- Support to read Xlsm templates with form elements, macros, printer settings, protected elements and back compatibility drawing, and save result without losing important elements of document [#435 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/435 )
- Expose sheet title maximum length as `Worksheet::SHEET_TITLE_MAXIMUM_LENGTH` [#482 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/482 )
- Allow escape character to be set in CSV reader [#492 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/492 )
2018-05-12 02:47:46 +00:00
2018-05-06 22:51:39 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Subtotal 9 in a group that has other subtotals 9 exclude the totals of the other subtotals in the range [#332 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/332 )
- `Helper\Html` support UTF-8 HTML input [#444 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/444 )
- Xlsx loaded an extra empty comment for each real comment [#375 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/375 )
- Xlsx reader do not read rows and columns filtered out in readFilter at all [#370 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/370 )
- Make newer Excel versions properly recalculate formulas on document open [#456 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/456 )
- `Coordinate::extractAllCellReferencesInRange()` throws an exception for an invalid range [#519 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/519 )
- Fixed parsing of conditionals in COUNTIF functions [#526 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/526 )
- Corruption errors for saved Xlsx docs with frozen panes [#532 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/532 )
2018-05-06 22:51:39 +00:00
2018-04-10 03:53:16 +00:00
## [1.2.1] - 2018-04-10
### Fixed
2019-08-17 20:31:40 +00:00
- Plain text and richtext mixed in same cell can be read [#442 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/442 )
2018-04-10 03:53:16 +00:00
2018-03-04 20:41:15 +00:00
## [1.2.0] - 2018-03-04
2018-02-01 12:23:36 +00:00
2018-02-07 11:59:25 +00:00
### Added
2019-08-17 20:31:40 +00:00
- HTML writer creates a generator meta tag [#312 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/312 )
- Support invalid zoom value in XLSX format [#350 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/350 )
- Support for `_xlfn.` prefixed functions and `ISFORMULA` , `MODE.SNGL` , `STDEV.S` , `STDEV.P` [#390 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/390 )
2018-02-07 11:59:25 +00:00
2018-02-01 12:23:36 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Avoid potentially unsupported PSR-16 cache keys [#354 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/354 )
- Check for MIME type to know if CSV reader can read a file [#167 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/167 )
- Use proper € symbol for currency format [#379 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/379 )
- Read printing area correctly when skipping some sheets [#371 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/371 )
- Avoid incorrectly overwriting calculated value type [#394 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/394 )
- Select correct cell when calling freezePane [#389 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/389 )
- `setStrikethrough()` did not set the font [#403 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/403 )
2018-02-01 12:23:36 +00:00
2018-01-28 12:35:38 +00:00
## [1.1.0] - 2018-01-28
2017-12-28 03:22:01 +00:00
### Added
2018-01-28 07:23:38 +00:00
- Support for PHP 7.2
2019-08-17 20:31:40 +00:00
- Support cell comments in HTML writer and reader [#308 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/308 )
- Option to stop at a conditional styling, if it matches (only XLSX format) [#292 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/292 )
- Support for line width for data series when rendering Xlsx [#329 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/329 )
2018-01-01 11:39:59 +00:00
2017-12-28 03:22:01 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Better auto-detection of CSV separators [#305 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/305 )
- Support for shape style ending with `;` [#304 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/304 )
- Freeze Panes takes wrong coordinates for XLSX [#322 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/322 )
- `COLUMNS` and `ROWS` functions crashed in some cases [#336 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/336 )
- Support XML file without styles [#331 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/331 )
2018-01-09 21:31:06 +00:00
- Cell coordinates which are already a range cause an exception [#319 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/319 )
2017-12-28 03:22:01 +00:00
1.0.0
```
* ,
_/^\_
< >
* /.-.\ *
* `/&\` *
,@.*;@,
/_o.I %_\ *
* (`'--:o(_@;
/`;--.,__ `') *
;@`o % O,*`'`&\
* (`'--)_@ ;o %'()\ *
/`;--._`''--._O'@;
/&*,()~o`;-.,_ `""`)
* /`,@ ;+& () o*`;-';\
(`""--.,_0 +% @' &()\
/-.,_ ``''--....-'`) *
* /@%;o`:;'--,.__ __.'\
;*,&(); @ % &^;~`"`o;@(); *
/(); o^~; & ().o@*&`;&%O\
`"="==""==,,,.,="=="==="`
__.----.(\-''#####---...___...-----._
'` \)_`"""""`
.--' ')
o( )_-\
`"""` `
```
2017-12-25 01:53:53 +00:00
## [1.0.0] - 2017-12-25
2016-08-28 07:29:42 +00:00
### Added
2019-08-17 20:31:40 +00:00
- Support to write merged cells in ODS format [#287 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/287 )
- Able to set the `topLeftCell` in freeze panes [#261 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/261 )
1.0.0
```
* ,
_/^\_
< >
* /.-.\ *
* `/&\` *
,@.*;@,
/_o.I %_\ *
* (`'--:o(_@;
/`;--.,__ `') *
;@`o % O,*`'`&\
* (`'--)_@ ;o %'()\ *
/`;--._`''--._O'@;
/&*,()~o`;-.,_ `""`)
* /`,@ ;+& () o*`;-';\
(`""--.,_0 +% @' &()\
/-.,_ ``''--....-'`) *
* /@%;o`:;'--,.__ __.'\
;*,&(); @ % &^;~`"`o;@(); *
/(); o^~; & ().o@*&`;&%O\
`"="==""==,,,.,="=="==="`
__.----.(\-''#####---...___...-----._
'` \)_`"""""`
.--' ')
o( )_-\
`"""` `
```
2017-12-25 01:53:53 +00:00
- Support `DateTimeImmutable` as cell value
- Support migration of prefixed classes
2017-11-26 06:47:24 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Can read very small HTML files [#194 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/194 )
- Written DataValidation was corrupted [#290 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/290 )
- Date format compatible with both LibreOffice and Excel [#298 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/298 )
2017-12-11 02:08:41 +00:00
2017-12-13 10:54:25 +00:00
### BREAKING CHANGE
- Constant `TYPE_DOUGHTNUTCHART` is now `TYPE_DOUGHNUTCHART` .
2017-11-26 06:47:24 +00:00
## [1.0.0-beta2] - 2017-11-26
### Added
2017-05-03 12:53:07 +00:00
- Support for chart fill color - @CrazyBite [#158 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/158 )
2017-10-20 07:38:37 +00:00
- Support for read Hyperlink for xml - @GreatHumorist [#223 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/223 )
- Support for cell value validation according to data validation rules - @SailorMax [#257 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/257 )
2017-10-30 15:14:34 +00:00
- Support for custom implementation, or configuration, of PDF libraries - @SailorMax [#266 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/266 )
2017-05-03 12:53:07 +00:00
2017-08-17 13:17:23 +00:00
### Changed
2017-07-31 18:36:54 +00:00
- Merge data-validations to reduce written worksheet size - @billblume [#131 ](https://github.com/PHPOffice/PhpSpreadSheet/issues/131 )
2017-09-20 05:20:12 +00:00
- Throws exception if a XML file is invalid - @GreatHumorist [#222 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/222 )
2019-08-17 20:31:40 +00:00
- Upgrade to mPDF 7.0+ [#144 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/144 )
2017-07-31 18:36:54 +00:00
2017-08-17 13:17:23 +00:00
### Fixed
2019-08-17 20:31:40 +00:00
- Control characters in cell values are automatically escaped [#212 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/212 )
2017-09-11 05:42:14 +00:00
- Prevent color changing when copy/pasting xls files written by PhpSpreadsheet to another file - @al -lala [#218 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/218 )
2019-08-17 20:31:40 +00:00
- Add cell reference automatic when there is no cell reference('r' attribute) in Xlsx file. - @GreatHumorist [#225 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/225 ) Refer to [#201 ](https://github.com/PHPOffice/PhpSpreadsheet/issues/201 )
2017-11-01 23:16:32 +00:00
- `Reader\Xlsx::getFromZipArchive()` function return false if the zip entry could not be located. - @anton -harvey [#268 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/268 )
2017-09-09 10:29:08 +00:00
2017-09-08 17:56:23 +00:00
### BREAKING CHANGE
2017-11-25 10:26:41 +00:00
- Extracted coordinate method to dedicate class [migration guide ](./docs/topics/migration-from-PHPExcel.md ).
- Column indexes are based on 1, see the [migration guide ](./docs/topics/migration-from-PHPExcel.md ).
2017-09-08 17:56:23 +00:00
- Standardization of array keys used for style, see the [migration guide ](./docs/topics/migration-from-PHPExcel.md ).
2017-10-21 16:54:14 +00:00
- Easier usage of PDF writers, and other custom readers and writers, see the [migration guide ](./docs/topics/migration-from-PHPExcel.md ).
2017-10-29 08:39:42 +00:00
- Easier usage of chart renderers, see the [migration guide ](./docs/topics/migration-from-PHPExcel.md ).
- Rename a few more classes to keep them in their related namespaces:
- `CalcEngine` => `Calculation\Engine`
2017-12-31 11:53:05 +00:00
- `PhpSpreadsheet\Calculation` => `PhpSpreadsheet\Calculation\Calculation`
- `PhpSpreadsheet\Cell` => `PhpSpreadsheet\Cell\Cell`
- `PhpSpreadsheet\Chart` => `PhpSpreadsheet\Chart\Chart`
- `PhpSpreadsheet\RichText` => `PhpSpreadsheet\RichText\RichText`
- `PhpSpreadsheet\Style` => `PhpSpreadsheet\Style\Style`
- `PhpSpreadsheet\Worksheet` => `PhpSpreadsheet\Worksheet\Worksheet`
2017-08-17 13:17:23 +00:00
## [1.0.0-beta] - 2017-08-17
### Added
2016-08-28 07:29:42 +00:00
- Initial implementation of SUMIFS() function
- Additional codepages
- MemoryDrawing not working in HTML writer [#808 ](https://github.com/PHPOffice/PHPExcel/issues/808 )
2017-04-17 16:51:53 +00:00
- CSV Reader can auto-detect the separator used in file [#141 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/141 )
2017-06-16 07:36:27 +00:00
- HTML Reader supports some basic inline styles [#180 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/180 )
2016-08-28 07:29:42 +00:00
### Changed
2018-10-23 11:26:25 +00:00
- Start following [SemVer ](https://semver.org ) properly.
2016-08-28 07:29:42 +00:00
2017-08-17 13:17:23 +00:00
### Fixed
2016-08-28 07:29:42 +00:00
- Fix to getCell() method when cell reference includes a worksheet reference - @MarkBaker
- Ignore inlineStr type if formula element exists - @ncrypthic [#570 ](https://github.com/PHPOffice/PHPExcel/issues/570 )
- Excel 2007 Reader freezes because of conditional formatting - @rentalhost [#575 ](https://github.com/PHPOffice/PHPExcel/issues/575 )
2017-07-14 08:53:13 +00:00
- Readers will now parse files containing worksheet titles over 31 characters [#176 ](https://github.com/PHPOffice/PhpSpreadsheet/pull/176 )
2016-08-28 07:29:42 +00:00
### General
- Whitespace after toRichTextObject() - @MarkBaker [#554 ](https://github.com/PHPOffice/PHPExcel/issues/554 )
- Optimize vlookup() sort - @umpirsky [#548 ](https://github.com/PHPOffice/PHPExcel/issues/548 )
- c:max and c:min elements shall NOT be inside c:orientation elements - @vitalyrepin [#869 ](https://github.com/PHPOffice/PHPExcel/pull/869 )
- Implement actual timezone adjustment into PHPExcel_Shared_Date::PHPToExcel - @sim642 [#489 ](https://github.com/PHPOffice/PHPExcel/pull/489 )
2016-10-06 11:39:10 +00:00
### BREAKING CHANGE
2016-12-03 05:51:04 +00:00
- Introduction of namespaces for all classes, eg: `PHPExcel_Calculation_Functions` becomes `PhpOffice\PhpSpreadsheet\Calculation\Functions`
2016-10-06 11:39:10 +00:00
- Some classes were renamed for clarity and/or consistency:
2017-09-08 17:56:23 +00:00
For a comprehensive list of all class changes, and a semi-automated migration path, read the [migration guide ](./docs/topics/migration-from-PHPExcel.md ).
2016-08-28 07:29:42 +00:00
2017-01-21 15:44:33 +00:00
- Dropped `PHPExcel_Calculation_Functions::VERSION()` . Composer or git should be used to know the version.
- Dropped `PHPExcel_Settings::setPdfRenderer()` and `PHPExcel_Settings::setPdfRenderer()` . Composer should be used to autoload PDF libs.
2017-07-14 08:06:04 +00:00
- Dropped support for HHVM
2017-01-21 15:44:33 +00:00
2017-04-14 08:38:40 +00:00
## Previous versions of PHPExcel
2016-12-03 02:19:22 +00:00
2017-04-14 08:38:40 +00:00
The changelog for the project when it was called PHPExcel is [still available ](./CHANGELOG.PHPExcel.md ).