PhpSpreadsheet v1.17.1 Release Notes

Release Date: 2021-03-01 // about 3 years ago
  • ➕ Added

    • Implementation of the Excel AVERAGEIFS() functions as part of a restructuring of Database functions and Conditional Statistical functions.
    • 👌 Support for date values and percentages in query parameters for Database functions, and the IF expressions in functions like COUNTIF() and AVERAGEIF(). #1875
    • 👌 Support for booleans, and for wildcard text search in query parameters for Database functions, and the IF expressions in functions like COUNTIF() and AVERAGEIF(). #1876
    • Implemented DataBar for conditional formatting in Xlsx, providing read/write and creation of (type, value, direction, fills, border, axis position, color settings) as DataBar options in Excel. #1754
    • Alignment for ODS Writer #1796
    • Basic implementation of the PERMUTATIONA() Statistical Function

    🔄 Changed

    • Formula functions that previously called PHP functions directly are now processed through the Excel Functions classes; resolving issues with PHP8 stricter typing. #1789

    The following MathTrig functions are affected: ABS(), ACOS(), ACOSH(), ASIN(), ASINH(), ATAN(), ATANH(), COS(), COSH(), DEGREES() (rad2deg), EXP(), LN() (log), LOG10(), RADIANS() (deg2rad), SIN(), SINH(), SQRT(), TAN(), TANH().

    One TextData function is also affected: REPT() (str_repeat).

    • 📇 formatAsDate correctly matches language metadata, reverting c55272e
    • Formulae that previously crashed on sub function call returning excel error value now return said value. The following functions are affected CUMPRINC(), CUMIPMT(), AMORLINC(), AMORDEGRC().
    • Adapt some function error return value to match excel's error. The following functions are affected PPMT(), IPMT().

    🗄 Deprecated

    • Calling many of the Excel formula functions directly rather than through the Calculation Engine.

    The logic for these Functions is now being moved out of the categorised Database, DateTime, Engineering, Financial, Logical, LookupRef, MathTrig, Statistical, TextData and Web classes into small, dedicated classes for individual functions or related groups of functions.

    This makes the logic in these classes easier to maintain; and will reduce the memory footprint required to execute formulae when calling these functions.

    ✂ Removed

    • Nothing.

    🛠 Fixed

    • Avoid Duplicate Titles When Reading Multiple HTML Files.Issue #1823 PR #1829
    • 🛠 Fixed issue with Worksheet's getCell() method when trying to get a cell by defined name. #1858
    • 🛠 Fix possible endless loop in NumberFormat Masks #1792
    • 🛠 Fix problem resulting from literal dot inside quotes in number format masks. PR #1830
    • Resolve Google Sheets Xlsx charts issue. Google Sheets uses oneCellAnchor positioning and does not include *Cache values in the exported Xlsx. PR #1761
    • 🛠 Fix for Xlsx Chart axis titles mapping to correct X or Y axis label when only one is present. PR #1760
    • 🛠 Fix For Null Exception on ODS Read of Page Settings. #1772
    • 🛠 Fix Xlsx reader overriding manually set number format with builtin number format. PR #1805
    • 🛠 Fix Xlsx reader cell alignment. PR #1710
    • 🛠 Fix for not yet implemented data-types in Open Document writer Issue #1674
    • 🛠 Fix XLSX reader when having a corrupt numeric cell data type PR #1664
    • 🛠 Fix on CUMPRINC(), CUMIPMT(), AMORLINC(), AMORDEGRC() usage. When those functions called one of YEARFRAC(), PPMT(), IPMT() and they would get back an error value (represented as a string), trying to use numeral operands (+, /, -, *) on said return value and a number (float orint`) would fail.