PhpSpreadsheet Versions Save

A pure PHP library for reading and writing spreadsheet files

1.15.0

3 years ago

Added

  • Implemented Page Order for Xlsx and Xls Readers, and provided Page Settings (Orientation, Scale, Horizontal/Vertical Centering, Page Order, Margins) support for Ods, Gnumeric and Xls Readers #1559
  • Implementation of the Excel LOGNORM.DIST(), NORM.S.DIST(), GAMMA() and GAUSS() functions. #1588
  • Named formula implementation, and improved handling of Defined Names generally #1535
    • Defined Names are now case-insensitive
    • Distinction between named ranges and named formulae
    • Correct handling of union and intersection operators in named ranges
    • Correct evaluation of named range operators in calculations
    • fix resolution of relative named range values in the calculation engine; previously all named range values had been treated as absolute.
    • Calculation support for named formulae
    • Support for nested ranges and formulae (named ranges and formulae that reference other named ranges/formulae) in calculations
    • Introduction of a helper to convert address formats between R1C1 and A1 (and the reverse)
    • Proper support for both named ranges and named formulae in all appropriate Readers
      • Xlsx (Previously only simple named ranges were supported)
      • Xls (Previously only simple named ranges were supported)
      • Gnumeric (Previously neither named ranges nor formulae were supported)
      • Ods (Previously neither named ranges nor formulae were supported)
      • Xml (Previously neither named ranges nor formulae were supported)
    • Proper support for named ranges and named formulae in all appropriate Writers
      • Xlsx (Previously only simple named ranges were supported)
      • Xls (Previously neither named ranges nor formulae were supported) - Still not supported, but some parser issues resolved that previously failed to differentiate between a defined name and a function name
      • Ods (Previously neither named ranges nor formulae were supported)
  • Support for PHP 8.0

Changed

  • Improve Coverage for ODS Reader #1545
  • Named formula implementation, and improved handling of Defined Names generally #1535
  • fix resolution of relative named range values in the calculation engine; previously all named range values had been treated as absolute.
  • Drop $this->spreadSheet null check from Xlsx Writer #1646
  • Improving Coverage for Excel2003 XML Reader #1557

Deprecated

  • IMPORTANT NOTE: This Introduces a BC break in the handling of named ranges. Previously, a named range cell reference of B2 would be treated identically to a named range cell reference of $B2 or B$2 or $B$2 because the calculation engine treated then all as absolute references. These changes "fix" that, so the calculation engine now handles relative references in named ranges correctly. This change that resolves previously incorrect behaviour in the calculation may affect users who have dynamically defined named ranges using relative references when they should have used absolute references.

Removed

  • Nothing.

Fixed

  • PrintArea causes exception #1544
  • Calculation/DateTime Failure With PHP8 #1661
  • Reader/Gnumeric Failure with PHP8 #1662
  • ReverseSort bug, exposed but not caused by PHP8 #1660
  • Bug setting Superscript/Subscript to false #1567

1.14.1

3 years ago

Added

  • nothing

Fixed

  • WEBSERVICE is HTTP client agnostic and must be configured via Settings::setHttpClient() #1562
  • Borders were not complete on rowspanned columns using HTML reader #1473

Changed

  • nothing

1.14.0

3 years ago

Added

  • Add support for IFS() logical function #1442
  • Add Cell Address Helper to provide conversions between the R1C1 and A1 address formats #1558
  • Add ability to edit Html/Pdf before saving #1499
  • Add ability to set codepage explicitly for BIFF5 #1018
  • Added support for the WEBSERVICE function #1409

Fixed

  • Resolve evaluation of utf-8 named ranges in calculation engine #1522
  • Fix HLOOKUP on single row #1512
  • Fix MATCH when comparing different numeric types #1521
  • Fix exact MATCH on ranges with empty cells #1520
  • Fix for Issue #1516 (Cloning worksheet makes corrupted Xlsx) #1530
  • Fix For Issue #1509 (Can not set empty enclosure for CSV) #1518
  • Fix for Issue #1505 (TypeError : Argument 4 passed to PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet::writeAttributeIf() must be of the type string) #1525
  • Fix for Issue #1495 (Sheet index being changed when multiple sheets are used in formula) #1500
  • Fix for Issue #1533 (A reference to a cell containing a string starting with "#" leads to errors in the generated xlsx.) #1534
  • Xls Writer - Correct Timestamp Bug #1493
  • Don't ouput row and columns without any cells in HTML writer #1235

1.13.0

3 years ago

Added

  • Support writing to streams in all writers #1292
  • Support CSV files with data wrapping a lot of lines #1468
  • Support protection of worksheet by a specific hash algorithm #1485

Fixed

  • Fix Chart samples by updating chart parameter from 0 to DataSeries::EMPTY_AS_GAP #1448
  • Fix return type in docblock for the Cells::get() #1398
  • Fix RATE, PRICE, XIRR, and XNPV Functions #1456
  • Save Excel 2010+ functions properly in XLSX #1461
  • Several improvements in HTML writer #1464
  • Fix incorrect behaviour when saving XLSX file with drawings #1462,
  • Fix Crash while trying setting a cell the value "123456\n" #1476
  • Improved DATEDIF() function and reduced errors for Y and YM units #1466
  • Stricter typing for mergeCells #1494

Changed

1.12.0

4 years ago

Added

  • Improved the ARABIC function to also handle short-hand roman numerals
  • Added support for the FLOOR.MATH and FLOOR.PRECISE functions #1351

Fixed

  • Fix ROUNDUP and ROUNDDOWN for floating-point rounding error #1404
  • Fix ROUNDUP and ROUNDDOWN for negative number #1417
  • Fix loading styles from vmlDrawings when containing whitespace #1347
  • Fix incorrect behavior when removing last row #1365
  • MATCH with a static array should return the position of the found value based on the values submitted #1332
  • Fix Xlsx Reader's handling of undefined fill color #1353

1.11.0

4 years ago

Added

  • Added support for the BASE function
  • Added support for the ARABIC function
  • Conditionals - Extend Support for (NOT)CONTAINSBLANKS #1278

Fixed

  • Handle Error in Formula Processing Better for Xls #1267
  • Handle ConditionalStyle NumberFormat When Reading Xlsx File #1296
  • Fix Xlsx Writer's handling of decimal commas #1282
  • Fix for issue by removing test code mistakenly left in #1328
  • Fix for Xls writer wrong selected cells and active sheet #1256
  • Fix active cell when freeze pane is used #1323
  • Fix XLSX file loading with autofilter containing '$' #1326
  • PHPDoc - Use @return $this for fluent methods #1362

1.10.1

4 years ago

Changed

  • PHP 7.4 compatibility

Fixed

  • FLOOR() function accept negative number and negative significance #1245
  • Correct column style even when using rowspan #1249
  • Do not confuse defined names and cell refs #1263
  • XLSX reader/writer keep decimal for floats with a zero decimal part #1262
  • ODS writer prevent invalid numeric value if locale decimal separator is comma #1268
  • Xlsx writer actually writes plotVisOnly and dispBlanksAs from chart properties #1266

1.10.0

4 years ago

Changed

  • Change license from LGPL 2.1 to MIT #140

Added

  • Implementation of IFNA() logical function
  • Support "showZeros" worksheet option to change how Excel shows and handles "null" values returned from a calculation
  • Allow HTML Reader to accept HTML as a string into an existing spreadsheet #1212

Fixed

  • IF implementation properly handles the value #N/A #1165
  • Formula Parser: Wrong line count for stuff like "MyOtherSheet!A:D" #1215
  • Call garbage collector after removing a column to prevent stale cached values
  • Trying to remove a column that doesn't exist deletes the latest column
  • Keep big integer as integer instead of lossely casting to float #874
  • Fix branch pruning handling of non boolean conditions #1167
  • Fix ODS Reader when no DC namespace are defined #1182
  • Fixed Functions->ifCondition for allowing <> and empty condition #1206
  • Validate XIRR inputs and return correct error values #1120
  • Allow to read xlsx files with exotic workbook names like "workbook2.xml" #1183

1.9.0

4 years ago

Changed

  • Drop support for PHP 5.6 and 7.0, according to our policy

Added

  • When <br> appears in a table cell, set the cell to wrap #1071 and #1070
  • Add MAXIFS, MINIFS, COUNTIFS and Remove MINIF, MAXIF #1056
  • HLookup needs an ordered list even if range_lookup is set to false #1055 and #1076
  • Improve performance of IF function calls via ranch pruning to avoid resolution of every branches #844
  • MATCH function supports *?~ Excel functionality, when match_type=0 #1116
  • Allow HTML Reader to accept HTML as a string #1136

Fixed

  • Fix to AVERAGEIF() function when called with a third argument
  • Eliminate duplicate fill none style entries #1066
  • Fix number format masks containing literal (non-decimal point) dots #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
  • Stricter-typed comparison testing in COUNTIF() and COUNTIFS() evaluation #1046
  • COUPNUM should not return zero when settlement is in the last period #1020 and #1021
  • Fix handling of named ranges referencing sheets with spaces or "!" in their title
  • Cover getSheetByName() with tests for name with quote and spaces #739
  • Best effort to support invalid colspan values in HTML reader - #878
  • Fixes incorrect rows deletion #868
  • MATCH function fix (value search by type, stop search when match_type=-1 and unordered element encountered) #1116
  • Fix getCalculatedValue() error with more than two INDIRECT #1115
  • Writer\Html did not hide columns #985

1.8.2

4 years ago

Fixed

  • Uncaught error when opening ods file and properties aren't defined - #1047
  • Xlsx Reader Cell datavalidations bug - #1052