Tags: carleii/PhpSpreadsheet
Tags
1.23.0 - 2022-04-24 - Ods Writer support for Freeze Pane [Issue PHPOffice#2013](PHPOffice#2013) [PR PHPOffice#2755](PHPOffice#2755) - Ods Writer support for setting column width/row height (including the use of AutoSize) [Issue PHPOffice#2346](PHPOffice#2346) [PR PHPOffice#2753](PHPOffice#2753) - Introduced CellAddress, CellRange, RowRange and ColumnRange value objects that can be used as an alternative to a string value (e.g. `'C5'`, `'B2:D4'`, `'2:2'` or `'B:C'`) in appropriate contexts. - Implementation of the FILTER(), SORT(), SORTBY() and UNIQUE() Lookup/Reference (array) functions. - Implementation of the ISREF() Information function. - Added support for reading "formatted" numeric values from Csv files; although default behaviour of reading these values as strings is preserved. (i.e a value of "12,345.67" can be read as numeric `12345.67`, not simply as a string `"12,345.67"`, if the `castFormattedNumberToNumeric()` setting is enabled. This functionality is locale-aware, using the server's locale settings to identify the thousands and decimal separators. - Support for two cell anchor drawing of images. [PHPOffice#2532](PHPOffice#2532) [PHPOffice#2674](PHPOffice#2674) - Limited support for Xls Reader to handle Conditional Formatting: Ranges and Rules are read, but style is currently limited to font size, weight and color; and to fill style and color. - Add ability to suppress Mac line ending check for CSV [PHPOffice#2623](PHPOffice#2623) - Initial support for creating and writing Tables (Xlsx Writer only) [PR PHPOffice#2671](PHPOffice#2671) See `/samples/Table` for examples of use. Note that PreCalculateFormulas needs to be disabled when saving spreadsheets containing tables with formulae (totals or column formulae). - Gnumeric Reader now loads number formatting for cells. - Gnumeric Reader now correctly identifies selected worksheet and selected cells in a worksheet. - Some Refactoring of the Ods Reader, moving all formula and address translation from Ods to Excel into a separate class to eliminate code duplication and ensure consistency. - Make Boolean Conversion in Csv Reader locale-aware when using the String Value Binder. This is determined by the Calculation Engine locale setting. (i.e. `"Vrai"` wil be converted to a boolean `true` if the Locale is set to `fr`.) - Allow `psr/simple-cache` 2.x - All Excel Function implementations in `Calculation\Functions` (including the Error functions) have been moved to dedicated classes for groups of related functions. See the docblocks against all the deprecated methods for details of the new methods to call instead. At some point, these old classes will be deleted. - Worksheet methods that reference cells "byColumnandRow". All such methods have an equivalent that references the cell by its address (e.g. '`E3'` rather than `5, 3`). These functions now accept either a cell address string (`'E3')` or an array with columnId and rowId (`[5, 3]`) or a new `CellAddress` object as their `cellAddress`/`coordinate` argument. This includes the methods: - `setCellValueByColumnAndRow()` use the equivalent `setCellValue()` - `setCellValueExplicitByColumnAndRow()` use the equivalent `setCellValueExplicit()` - `getCellByColumnAndRow()` use the equivalent `getCell()` - `cellExistsByColumnAndRow()` use the equivalent `cellExists()` - `getStyleByColumnAndRow()` use the equivalent `getStyle()` - `setBreakByColumnAndRow()` use the equivalent `setBreak()` - `mergeCellsByColumnAndRow()` use the equivalent `mergeCells()` - `unmergeCellsByColumnAndRow()` use the equivalent `unmergeCells()` - `protectCellsByColumnAndRow()` use the equivalent `protectCells()` - `unprotectCellsByColumnAndRow()` use the equivalent `unprotectCells()` - `setAutoFilterByColumnAndRow()` use the equivalent `setAutoFilter()` - `freezePaneByColumnAndRow()` use the equivalent `freezePane()` - `getCommentByColumnAndRow()` use the equivalent `getComment()` - `setSelectedCellByColumnAndRow()` use the equivalent `setSelectedCells()` This change provides more consistency in the methods (not every "by cell address" method has an equivalent "byColumnAndRow" method); and the "by cell address" methods often provide more flexibility, such as allowing a range of cells, or referencing them by passing the defined name of a named range as the argument. - Nothing - Make allowance for the AutoFilter dropdown icon in the first row of an Autofilter range when using Autosize columns. [Issue PHPOffice#2413](PHPOffice#2413) [PR PHPOffice#2754](PHPOffice#2754) - Support for "chained" ranges (e.g. `A5:C10:C20:F1`) in the Calculation Engine; and also support for using named ranges with the Range operator (e.g. `NamedRange1:NamedRange2`) [Issue PHPOffice#2730](PHPOffice#2730) [PR PHPOffice#2746](PHPOffice#2746) - Update Conditional Formatting ranges and rule conditions when inserting/deleting rows/columns [Issue PHPOffice#2678](PHPOffice#2678) [PR PHPOffice#2689](PHPOffice#2689) - Allow `INDIRECT()` to accept row/column ranges as well as cell ranges [PR PHPOffice#2687](PHPOffice#2687) - Fix bug when deleting cells with hyperlinks, where the hyperlink was then being "inherited" by whatever cell moved to that cell address. - Fix bug in Conditional Formatting in the Xls Writer that resulted in a broken file when there were multiple conditional ranges in a worksheet. - Fix Conditional Formatting in the Xls Writer to work with rules that contain string literals, cell references and formulae. - Fix for setting Active Sheet to the first loaded worksheet when bookViews element isn't defined [Issue PHPOffice#2666](PHPOffice#2666) [PR PHPOffice#2669](PHPOffice#2669) - Fixed behaviour of XLSX font style vertical align settings [PR PHPOffice#2619](PHPOffice#2619) - Resolved formula translations to handle separators (row and column) for array functions as well as for function argument separators; and cleanly handle nesting levels. Note that this method is used when translating Excel functions between `en_us` and other locale languages, as well as when converting formulae between different spreadsheet formats (e.g. Ods to Excel). Nor is this a perfect solution, as there may still be issues when function calls have array arguments that themselves contain function calls; but it's still better than the current logic. - Fix for escaping double quotes within a formula [Issue PHPOffice#1971](PHPOffice#1971) [PR PHPOffice#2651](PHPOffice#2651) - Change open mode for output from `wb+` to `wb` [Issue PHPOffice#2372](PHPOffice#2372) [PR PHPOffice#2657](PHPOffice#2657) - Use color palette if supplied [Issue PHPOffice#2499](PHPOffice#2499) [PR PHPOffice#2595](PHPOffice#2595) - Xls reader treat drawing offsets as int rather than float [PR PHPOffice#2648](PHPOffice#2648) - Handle booleans in conditional styles properly [PR PHPOffice#2654](PHPOffice#2654) - Fix for reading files in the root directory of a ZipFile, which should not be prefixed by relative paths ("./") as dirname($filename) does by default. - Fix invalid style of cells in empty columns with columnDimensions and rows with rowDimensions in added external sheet. [PR PHPOffice#2739](PHPOffice#2739) - Time Interval Formatting [Issue PHPOffice#2768](PHPOffice#2768) [PR PHPOffice#2772](PHPOffice#2772)
1.22.0 ### Added - Namespacing phase 2 - styles. [PR PHPOffice#2471](PHPOffice#2471) - Improved support for passing of array arguments to Excel function implementations to return array results (where appropriate). [Issue PHPOffice#2551](PHPOffice#2551) This is the first stage in an ongoing process of adding array support to all appropriate function implementations, - Support for the Excel365 Math/Trig SEQUENCE() function [PR PHPOffice#2536](PHPOffice#2536) - Support for the Excel365 Math/Trig RANDARRAY() function [PR PHPOffice#2540](PHPOffice#2540) Note that the Spill Operator is not yet supported in the Calculation Engine; but this can still be useful for defining array constants. - Improved support for Conditional Formatting Rules [PR PHPOffice#2491](PHPOffice#2491) - Provide support for a wider range of Conditional Formatting Rules for Xlsx Reader/Writer: - Cells Containing (cellIs) - Specific Text (containing, notContaining, beginsWith, endsWith) - Dates Occurring (all supported timePeriods) - Blanks/NoBlanks - Errors/NoErrors - Duplicates/Unique - Expression - Provision of CF Wizards (for all the above listed rule types) to help create/modify CF Rules without having to manage all the combinations of types/operators, and the complexities of formula expressions, or the text/timePeriod attributes. See [documentation](https://phpspreadsheet.readthedocs.io/en/latest/topics/conditional-formatting/) for details - Full support of the above CF Rules for the Xlsx Reader and Writer; even when the file being loaded has CF rules listed in the `<extLst><ext><ConditionalFormattings>` element for the worksheet rather than the `<ConditionalFormatting>` element. - Provision of a CellMatcher to identify if rules are matched for a cell, and which matching style will be applied. - Improved documentation and examples, covering all supported CF rule types. - Add support for one digit decimals (FORMAT_NUMBER_0, FORMAT_PERCENTAGE_0). [PR PHPOffice#2525](PHPOffice#2525) - Initial work enabling Excel function implementations for handling arrays as arguments when used in "array formulae" [PHPOffice#2562](PHPOffice#2562) - Enable most of the Date/Time functions to accept array arguments [PHPOffice#2573](PHPOffice#2573) - Array ready functions - Text, Math/Trig, Statistical, Engineering and Logical [PHPOffice#2580](PHPOffice#2580) ### Changed - Additional Russian translations for Excel Functions (courtesy of aleks-samurai). - Improved code coverage for NumberFormat. [PR PHPOffice#2556](PHPOffice#2556) - Extract some methods from the Calculation Engine into dedicated classes [PHPOffice#2537](PHPOffice#2537) - Eliminate calls to `flattenSingleValue()` that are no longer required when we're checking for array values as arguments [PHPOffice#2590](PHPOffice#2590) ### Deprecated - Nothing ### Removed - Nothing ### Fixed - Fixed `ReferenceHelper@insertNewBefore` behavior when removing column before last column with null value [PR PHPOffice#2541](PHPOffice#2541) - Fix bug with `DOLLARDE()` and `DOLLARFR()` functions when the dollar value is negative [Issue PHPOffice#2578](PHPOffice#2578) [PR PHPOffice#2579](PHPOffice#2579) - Fix partial function name matching when translating formulae from Russian to English [Issue PHPOffice#2533](PHPOffice#2533) [PR PHPOffice#2534](PHPOffice#2534) - Various bugs related to Conditional Formatting Rules, and errors in the Xlsx Writer for Conditional Formatting [PR PHPOffice#2491](PHPOffice#2491) - Xlsx Reader merge range fixes. [Issue PHPOffice#2501](PHPOffice#2501) [PR PHPOffice#2504](PHPOffice#2504) - Handle explicit "date" type for Cell in Xlsx Reader. [Issue PHPOffice#2373](PHPOffice#2373) [PR PHPOffice#2485](PHPOffice#2485) - Recalibrate Row/Column Dimensions after removeRow/Column. [Issue PHPOffice#2442](PHPOffice#2442) [PR PHPOffice#2486](PHPOffice#2486) - Refinement for XIRR. [Issue PHPOffice#2469](PHPOffice#2469) [PR PHPOffice#2487](PHPOffice#2487) - Xlsx Reader handle cell with non-null explicit type but null value. [Issue PHPOffice#2488](PHPOffice#2488) [PR PHPOffice#2489](PHPOffice#2489) - Xlsx Reader fix height and width for oneCellAnchorDrawings. [PR PHPOffice#2492](PHPOffice#2492) - Fix rounding error in NumberFormat::NUMBER_PERCENTAGE, NumberFormat::NUMBER_PERCENTAGE_00. [PR PHPOffice#2555](PHPOffice#2555) - Don't treat thumbnail file as xml. [Issue PHPOffice#2516](PHPOffice#2516) [PR PHPOffice#2517](PHPOffice#2517) - Eliminating Xlsx Reader warning when no sz tag for RichText. [Issue PHPOffice#2542](PHPOffice#2542) [PR PHPOffice#2550](PHPOffice#2550) - Fix Xlsx/Xls Writer handling of inline strings. [Issue PHPOffice#353](PHPOffice#353) [PR PHPOffice#2569](PHPOffice#2569) - Richtext colors were not being read correctly after namespace change [PHPOffice#2458](PHPOffice#2458) - Fix discrepancy between the way markdown tables are rendered in ReadTheDocs and in PHPStorm [PHPOffice#2520](PHPOffice#2520) - Update Russian Functions Text File [PHPOffice#2557](PHPOffice#2557) - Fix documentation, instantiation example [PHPOffice#2564](PHPOffice#2564)
1.21.0 ### Added - Ability to add a picture to the background of the comment. Supports four image formats: png, jpeg, gif, bmp. New `Comment::setSizeAsBackgroundImage()` to change the size of a comment to the size of a background image. [Issue PHPOffice#1547](PHPOffice#1547) [PR PHPOffice#2422](PHPOffice#2422) - Ability to set default paper size and orientation [PR PHPOffice#2410](PHPOffice#2410) - Ability to extend AutoFilter to Maximum Row [PR PHPOffice#2414](PHPOffice#2414) ### Changed - Xlsx Writer will evaluate AutoFilter only if it is as yet unevaluated, or has changed since it was last evaluated [PR PHPOffice#2414](PHPOffice#2414) ### Deprecated - Nothing ### Removed - Nothing ### Fixed - Rounding in `NumberFormatter` [Issue PHPOffice#2385](PHPOffice#2385) [PR PHPOffice#2399](PHPOffice#2399) - Support for themes [Issue PHPOffice#2075](PHPOffice#2075) [Issue PHPOffice#2387](PHPOffice#2387) [PR PHPOffice#2403](PHPOffice#2403) - Read spreadsheet with `#` in name [Issue PHPOffice#2405](PHPOffice#2405) [PR PHPOffice#2409](PHPOffice#2409) - Improve PDF support for page size and orientation [Issue PHPOffice#1691](PHPOffice#1691) [PR PHPOffice#2410](PHPOffice#2410) - Wildcard handling issues in text match [Issue PHPOffice#2430](PHPOffice#2430) [PR PHPOffice#2431](PHPOffice#2431) - Respect DataType in `insertNewBefore` [PR PHPOffice#2433](PHPOffice#2433) - Handle rows explicitly hidden after AutoFilter [Issue PHPOffice#1641](PHPOffice#1641) [PR PHPOffice#2414](PHPOffice#2414) - Special characters in image file name [Issue PHPOffice#1470](PHPOffice#1470) [Issue PHPOffice#2415](PHPOffice#2415) [PR PHPOffice#2416](PHPOffice#2416) - Mpdf with very many styles [Issue PHPOffice#2432](PHPOffice#2432) [PR PHPOffice#2434](PHPOffice#2434) - Name clashes between parsed and unparsed drawings [Issue PHPOffice#1767](PHPOffice#1767) [Issue PHPOffice#2396](PHPOffice#2396) [PR PHPOffice#2423](PHPOffice#2423) - Fill pattern start and end colors [Issue PHPOffice#2441](PHPOffice#2441) [PR PHPOffice#2444](PHPOffice#2444) - General style specified in wrong case [Issue PHPOffice#2450](PHPOffice#2450) [PR PHPOffice#2451](PHPOffice#2451) - Null passed to `AutoFilter::setRange()` [Issue PHPOffice#2281](PHPOffice#2281) [PR PHPOffice#2454](PHPOffice#2454) - Another undefined index in Xls reader (PHPOffice#2470) [Issue PHPOffice#2463](PHPOffice#2463) [PR PHPOffice#2470](PHPOffice#2470) - Allow single-cell checks on conditional styles, even when the style is configured for a range of cells (#) [PR PHPOffice#2483](PHPOffice#2483)
1.20.0 ### Added - Xlsx Writer Support for WMF Files [PHPOffice#2339](PHPOffice#2339) - Use standard temporary file for internal use of HTMLPurifier [PHPOffice#2383](PHPOffice#2383) ### Changed - Drop support for PHP 7.2, according to https://phpspreadsheet.readthedocs.io/en/latest/#php-version-support - Use native typing for objects that were already documented as such ### Deprecated - Nothing ### Removed - Nothing ### Fixed - Fixed null conversation for strToUpper [PHPOffice#2292](PHPOffice#2292) - Fixed Trying to access array offset on value of type null (Xls Reader) [PHPOffice#2315](PHPOffice#2315) - Don't corrupt XLSX files containing data validation [PHPOffice#2377](PHPOffice#2377) - Non-fixed cells were not updated if shared formula has a fixed cell [PHPOffice#2354](PHPOffice#2354) - Declare key of generic ArrayObject - CSV reader better support for boolean values [PHPOffice#2374](PHPOffice#2374) - Some ZIP file could not be read [PHPOffice#2376](PHPOffice#2376) - Fix regression were hyperlinks could not be read [PHPOffice#2391](PHPOffice#2391) - AutoFilter Improvements [PHPOffice#2393](PHPOffice#2393) - Don't corrupt file when using chart with fill color [PHPOffice#589](PHPOffice#589) - Restore imperfect array formula values in xlsx writer [PHPOffice#2343](PHPOffice#2343) - Restore explicit list of changes to PHPExcel migration document [PHPOffice#1546](PHPOffice#1546)
1.19.0 ### Added - Ability to set style on named range, and validate input to setSelectedCells [Issue PHPOffice#2279](PHPOffice#2279) [PR PHPOffice#2280](PHPOffice#2280) - Process comments in Sylk file [Issue PHPOffice#2276](PHPOffice#2276) [PR PHPOffice#2277](PHPOffice#2277) - Addition of Custom Properties to Ods Writer, and 32-bit-safe timestamps for Document Properties [PR PHPOffice#2113](PHPOffice#2113) - Added callback to CSV reader to set user-specified defaults for various properties (especially for escape which has a poor PHP-inherited default of backslash which does not correspond with Excel) [PR PHPOffice#2103](PHPOffice#2103) - Phase 1 of better namespace handling for Xlsx, resolving many open issues [PR PHPOffice#2173](PHPOffice#2173) [PR PHPOffice#2204](PHPOffice#2204) [PR PHPOffice#2303](PHPOffice#2303) - Add ability to extract images if source is a URL [Issue PHPOffice#1997](PHPOffice#1997) [PR PHPOffice#2072](PHPOffice#2072) - Support for passing flags in the Reader `load()` and Writer `save()`methods, and through the IOFactory, to set behaviours [PR PHPOffice#2136](PHPOffice#2136) - See [documentation](https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-and-writing-to-file/#readerwriter-flags) for details - More flexibility in the StringValueBinder to determine what datatypes should be treated as strings [PR PHPOffice#2138](PHPOffice#2138) - Helper class for conversion between css size Units of measure (`px`, `pt`, `pc`, `in`, `cm`, `mm`) [PR PHPOffice#2152](PHPOffice#2145) - Allow Row height and Column Width to be set using different units of measure (`px`, `pt`, `pc`, `in`, `cm`, `mm`), rather than only in points or MS Excel column width units [PR PHPOffice#2152](PHPOffice#2145) - Ability to stream to an Amazon S3 bucket [Issue PHPOffice#2249](PHPOffice#2249) - Provided a Size Helper class to validate size values (pt, px, em) [PR PHPOffice#1694](PHPOffice#1694) ### Changed - Nothing. ### Deprecated - PHP 8.1 will deprecate auto_detect_line_endings. As a result of this change, Csv Reader using PHP8.1+ will no longer be able to handle a Csv with Mac line endings. ### Removed - Nothing. ### Fixed - Unexpected format in Xlsx Timestamp [Issue PHPOffice#2331](PHPOffice#2331) [PR PHPOffice#2332](PHPOffice#2332) - Corrections for HLOOKUP [Issue PHPOffice#2123](PHPOffice#2123) [PR PHPOffice#2330](PHPOffice#2330) - Corrections for Xlsx Read Comments [Issue PHPOffice#2316](PHPOffice#2316) [PR PHPOffice#2329](PHPOffice#2329) - Lowercase Calibri font names [Issue PHPOffice#2273](PHPOffice#2273) [PR PHPOffice#2325](PHPOffice#2325) - isFormula Referencing Sheet with Space in Title [Issue PHPOffice#2304](PHPOffice#2304) [PR PHPOffice#2306](PHPOffice#2306) - Xls Reader Fatal Error due to Undefined Offset [Issue PHPOffice#1114](PHPOffice#1114) [PR PHPOffice#2308](PHPOffice#2308) - Permit Csv Reader delimiter to be set to null [Issue PHPOffice#2287](PHPOffice#2287) [PR PHPOffice#2288](PHPOffice#2288) - Csv Reader did not handle booleans correctly [PR PHPOffice#2232](PHPOffice#2232) - Problems when deleting sheet with local defined name [Issue PHPOffice#2266](PHPOffice#2266) [PR PHPOffice#2284](PHPOffice#2284) - Worksheet passwords were not always handled correctly [Issue PHPOffice#1897](PHPOffice#1897) [PR PHPOffice#2197](PHPOffice#2197) - Gnumeric Reader will now distinguish between Created and Modified timestamp [PR PHPOffice#2133](PHPOffice#2133) - Xls Reader will now handle MACCENTRALEUROPE with or without hyphen [Issue PHPOffice#549](PHPOffice#549) [PR PHPOffice#2213](PHPOffice#2213) - Tweaks to input file validation [Issue PHPOffice#1718](PHPOffice#1718) [PR PHPOffice#2217](PHPOffice#2217) - Html Reader did not handle comments correctly [Issue PHPOffice#2234](PHPOffice#2234) [PR PHPOffice#2235](PHPOffice#2235) - Apache OpenOffice Uses Unexpected Case for General format [Issue PHPOffice#2239](PHPOffice#2239) [PR PHPOffice#2242](PHPOffice#2242) - Problems with fraction formatting [Issue PHPOffice#2253](PHPOffice#2253) [PR PHPOffice#2254](PHPOffice#2254) - Xlsx Reader had problems reading file with no styles.xml or empty styles.xml [Issue PHPOffice#2246](PHPOffice#2246) [PR PHPOffice#2247](PHPOffice#2247) - Xlsx Reader did not read Data Validation flags correctly [Issue PHPOffice#2224](PHPOffice#2224) [PR PHPOffice#2225](PHPOffice#2225) - Better handling of empty arguments in Calculation engine [PR PHPOffice#2143](PHPOffice#2143) - Many fixes for Autofilter [Issue PHPOffice#2216](PHPOffice#2216) [PR PHPOffice#2141](PHPOffice#2141) [PR PHPOffice#2162](PHPOffice#2162) [PR PHPOffice#2218](PHPOffice#2218) - Locale generator will now use Unix line endings even on Windows [Issue PHPOffice#2172](PHPOffice#2172) [PR PHPOffice#2174](PHPOffice#2174) - Support differences in implementation of Text functions between Excel/Ods/Gnumeric [PR PHPOffice#2151](PHPOffice#2151) - Fixes to places where PHP8.1 enforces new or previously unenforced restrictions [PR PHPOffice#2137](PHPOffice#2137) [PR PHPOffice#2191](PHPOffice#2191) [PR PHPOffice#2231](PHPOffice#2231) - Clone for HashTable was incorrect [PR PHPOffice#2130](PHPOffice#2130) - Xlsx Reader was not evaluating Document Security Lock correctly [PR PHPOffice#2128](PHPOffice#2128) - Error in COUPNCD handling end of month [Issue PHPOffice#2116](PHPOffice#2116) [PR PHPOffice#2119](PHPOffice#2119) - Xls Writer Parser did not handle concatenation operator correctly [PR PHPOffice#2080](PHPOffice#2080) - Xlsx Writer did not handle boolean false correctly [Issue PHPOffice#2082](PHPOffice#2082) [PR PHPOffice#2087](PHPOffice#2087) - SUM needs to treat invalid strings differently depending on whether they come from a cell or are used as literals [Issue PHPOffice#2042](PHPOffice#2042) [PR PHPOffice#2045](PHPOffice#2045) - Html reader could have set illegal coordinates when dealing with embedded tables [Issue PHPOffice#2029](PHPOffice#2029) [PR PHPOffice#2032](PHPOffice#2032) - Documentation for printing gridlines was wrong [PR PHPOffice#2188](PHPOffice#2188) - Return Value Error - DatabaseAbstruct::buildQuery() return null but must be string [Issue PHPOffice#2158](PHPOffice#2158) [PR PHPOffice#2160](PHPOffice#2160) - Xlsx reader not recognize data validations that references another sheet [Issue PHPOffice#1432](PHPOffice#1432) [Issue PHPOffice#2149](PHPOffice#2149) [PR PHPOffice#2150](PHPOffice#2150) [PR PHPOffice#2265](PHPOffice#2265) - Don't calculate cell width for autosize columns if a cell contains a null or empty string value [Issue PHPOffice#2165](PHPOffice#2165) [PR PHPOffice#2167](PHPOffice#2167) - Allow negative interest rate values in a number of the Financial functions (`PPMT()`, `PMT()`, `FV()`, `PV()`, `NPER()`, etc) [Issue PHPOffice#2163](PHPOffice#2163) [PR PHPOffice#2164](PHPOffice#2164) - Xls Reader changing grey background to black in Excel template [Issue PHPOffice#2147](PHPOffice#2147) [PR PHPOffice#2156](PHPOffice#2156) - Column width and Row height styles in the Html Reader when the value includes a unit of measure [Issue PHPOffice#2145](PHPOffice#2145). - Data Validation flags not set correctly when reading XLSX files [Issue PHPOffice#2224](PHPOffice#2224) [PR PHPOffice#2225](PHPOffice#2225) - Reading XLSX files without styles.xml throws an exception [Issue PHPOffice#2246](PHPOffice#2246) - Improved performance of `Style::applyFromArray()` when applied to several cells [PR PHPOffice#1785](PHPOffice#1785). - Improve XLSX parsing speed if no readFilter is applied (again) - [PHPOffice#772](PHPOffice#772)
1.18.0 - Enhancements to CSV Reader, allowing options to be set when using `IOFactory::load()` with a callback to set delimiter, enclosure, charset etc. [PR PHPOffice#2103](PHPOffice#2103) - See [documentation](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/docs/topics/reading-and-writing-to-file.md#csv-comma-separated-values) for details. - Implemented basic AutoFiltering for Ods Reader and Writer [PR PHPOffice#2053](PHPOffice#2053) - Implemented basic AutoFiltering for Gnumeric Reader [PR #2055](https://github.com/PHPOffice/PhpSpreadsheet/pull/2055) - Improved support for Row and Column ranges in formulae [Issue PHPOffice#1755](PHPOffice#1755) [PR PHPOffice#2028](PHPOffice#2028) - Implemented URLENCODE() Web Function - Implemented the CHITEST(), CHISQ.DIST() and CHISQ.INV() and equivalent Statistical functions, for both left- and right-tailed distributions. - Support for ActiveSheet and SelectedCells in the ODS Reader and Writer. [PR PHPOffice#1908](PHPOffice#1908) - Support for notContainsText Conditional Style in xlsx [Issue PHPOffice#984](PHPOffice#984) - Use of `nb` rather than `no` as the locale code for Norsk Bokmål. - All Excel Function implementations in `Calculation\Database`, `Calculation\DateTime`, `Calculation\Engineering`, `Calculation\Financial`, `Calculation\Logical`, `Calculation\LookupRef`, `Calculation\MathTrig`, `Calculation\Statistical`, `Calculation\TextData` and `Calculation\Web` have been moved to dedicated classes for individual functions or groups of related functions. See the docblocks against all the deprecated methods for details of the new methods to call instead. At some point, these old classes will be deleted. - Use of `nb` rather than `no` as the locale language code for Norsk Bokmål. - Fixed error in COUPNCD() calculation for end of month [Issue PHPOffice#2116](PHPOffice#2116) - [PR PHPOffice#2119](PHPOffice#2119) - Resolve default values when a null argument is passed for HLOOKUP(), VLOOKUP() and ADDRESS() functions [Issue PHPOffice#2120](PHPOffice#2120) - [PR PHPOffice#2121](PHPOffice#2121) - Fixed incorrect R1C1 to A1 subtraction formula conversion (`R[-2]C-R[2]C`) [Issue PHPOffice#2076](PHPOffice#2076) [PR PHPOffice#2086](PHPOffice#2086) - Correctly handle absolute A1 references when converting to R1C1 format [PR PHPOffice#2060](PHPOffice#2060) - Correct default fill style for conditional without a pattern defined [Issue PHPOffice#2035](PHPOffice#2035) [PR PHPOffice#2050](PHPOffice#2050) - Fixed issue where array key check for existince before accessing arrays in Xlsx.php. [PR PHPOffice#1970](PHPOffice#1970) - Fixed issue with quoted strings in number format mask rendered with toFormattedString() [Issue 1972#](PHPOffice#1972) [PR PHPOffice#1978](PHPOffice#1978) - Fixed issue with percentage formats in number format mask rendered with toFormattedString() [Issue 1929#](PHPOffice#1929) [PR PHPOffice#1928](PHPOffice#1928) - Fixed issue with _ spacing character in number format mask corrupting output from toFormattedString() [Issue 1924#](PHPOffice#1924) [PR PHPOffice#1927](PHPOffice#1927) - Fix for [Issue PHPOffice#1887](PHPOffice#1887) - Lose Track of Selected Cells After Save - Fixed issue with Xlsx@listWorksheetInfo not returning any data - Fixed invalid arguments triggering mb_substr() error in LEFT(), MID() and RIGHT() text functions. [Issue PHPOffice#640](PHPOffice#640) - Fix for [Issue PHPOffice#1916](PHPOffice#1916) - Invalid signature check for XML files - Fix change in `Font::setSize()` behavior for PHP8. [PR PHPOffice#2100](PHPOffice#2100)
1.17.1 - 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(). [PHPOffice#1875](PHPOffice#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(). [PHPOffice#1876](PHPOffice#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. [PHPOffice#1754](PHPOffice#1754) - Alignment for ODS Writer [PHPOffice#1796](PHPOffice#1796) - Basic implementation of the PERMUTATIONA() Statistical Function - Formula functions that previously called PHP functions directly are now processed through the Excel Functions classes; resolving issues with PHP8 stricter typing. [PHPOffice#1789](PHPOffice#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()`. - 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. - Nothing. - Avoid Duplicate Titles When Reading Multiple HTML Files.[Issue PHPOffice#1823](PHPOffice#1823) [PR PHPOffice#1829](PHPOffice#1829) - Fixed issue with Worksheet's `getCell()` method when trying to get a cell by defined name. [PHPOffice#1858](PHPOffice#1858) - Fix possible endless loop in NumberFormat Masks [PHPOffice#1792](PHPOffice#1792) - Fix problem resulting from literal dot inside quotes in number format masks. [PR PHPOffice#1830](PHPOffice#1830) - Resolve Google Sheets Xlsx charts issue. Google Sheets uses oneCellAnchor positioning and does not include *Cache values in the exported Xlsx. [PR PHPOffice#1761](PHPOffice#1761) - Fix for Xlsx Chart axis titles mapping to correct X or Y axis label when only one is present. [PR PHPOffice#1760](PHPOffice#1760) - Fix For Null Exception on ODS Read of Page Settings. [PHPOffice#1772](PHPOffice#1772) - Fix Xlsx reader overriding manually set number format with builtin number format. [PR PHPOffice#1805](PHPOffice#1805) - Fix Xlsx reader cell alignment. [PR PHPOffice#1710](PHPOffice#1710) - Fix for not yet implemented data-types in Open Document writer [Issue PHPOffice#1674](PHPOffice#1674) - Fix XLSX reader when having a corrupt numeric cell data type [PR PHPOffice#1664](PHPOffice#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 or `int`) would fail.
1.17.0 - 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(). [PHPOffice#1875](PHPOffice#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(). [PHPOffice#1876](PHPOffice#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. [PHPOffice#1754](PHPOffice#1754) - Alignment for ODS Writer [PHPOffice#1796](PHPOffice#1796) - Basic implementation of the PERMUTATIONA() Statistical Function - Formula functions that previously called PHP functions directly are now processed through the Excel Functions classes; resolving issues with PHP8 stricter typing. [PHPOffice#1789](PHPOffice#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()`. - 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. - Nothing. - Avoid Duplicate Titles When Reading Multiple HTML Files.[Issue PHPOffice#1823](PHPOffice#1823) [PR PHPOffice#1829](PHPOffice#1829) - Fixed issue with Worksheet's `getCell()` method when trying to get a cell by defined name. [PHPOffice#1858](PHPOffice#1858) - Fix possible endless loop in NumberFormat Masks [PHPOffice#1792](PHPOffice#1792) - Fix problem resulting from literal dot inside quotes in number format masks. [PR PHPOffice#1830](PHPOffice#1830) - Resolve Google Sheets Xlsx charts issue. Google Sheets uses oneCellAnchor positioning and does not include *Cache values in the exported Xlsx. [PR PHPOffice#1761](PHPOffice#1761) - Fix for Xlsx Chart axis titles mapping to correct X or Y axis label when only one is present. [PR PHPOffice#1760](PHPOffice#1760) - Fix For Null Exception on ODS Read of Page Settings. [PHPOffice#1772](PHPOffice#1772) - Fix Xlsx reader overriding manually set number format with builtin number format. [PR PHPOffice#1805](PHPOffice#1805) - Fix Xlsx reader cell alignment. [PR PHPOffice#1710](PHPOffice#1710) - Fix for not yet implemented data-types in Open Document writer [Issue PHPOffice#1674](PHPOffice#1674) - Fix XLSX reader when having a corrupt numeric cell data type [PR PHPOffice#1664](PHPOffice#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 or `int`) would fail.
1.16.0 - CSV Reader - Best Guess for Encoding, and Handle Null-string Escape [PHPOffice#1647](PHPOffice#1647) - Updated the CONVERT() function to support all current MS Excel categories and Units of Measure. - Nothing. - Nothing. - Fix for Xls Reader when SST has a bad length [PHPOffice#1592](PHPOffice#1592) - Resolve Xlsx loader issue whe hyperlinks don't have a destination - Resolve issues when printer settings resources IDs clash with drawing IDs - Resolve issue with SLK long filenames [PHPOffice#1612](PHPOffice#1612) - ROUNDUP and ROUNDDOWN return incorrect results for values of 0 [PHPOffice#1627](PHPOffice#1627) - Apply Column and Row Styles to Existing Cells [PHPOffice#1712](PHPOffice#1712) [PR PHPOffice#1721](PHPOffice#1721) - Resolve issues with defined names where worksheet doesn't exist (PHPOffice#1686)[PHPOffice#1686] and [PHPOffice#1723](PHPOffice#1723) - [PR PHPOffice#1742](PHPOffice#1742) - Fix for issue [PHPOffice#1735](PHPOffice#1735) Incorrect activeSheetIndex after RemoveSheetByIndex - [PR PHPOffice#1743](PHPOffice#1743) - Ensure that the list of shared formulae is maintained when an xlsx file is chunked with readFilter[Issue PHPOffice#169](PHPOffice#1669). - Fix for notice during accessing "cached magnification factor" offset [PHPOffice#1354](PHPOffice#1354) - Fix compatibility with ext-gd on php 8 - Prevent XSS through cell comments in the HTML Writer.
1.15.0 ### 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 [PHPOffice#1559](PHPOffice#1559) - Implementation of the Excel `LOGNORM.DIST()`, `NORM.S.DIST()`, `GAMMA()` and `GAUSS()` functions. [PHPOffice#1588](PHPOffice#1588) - Named formula implementation, and improved handling of Defined Names generally [PHPOffice#1535](PHPOffice#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 [PHPOffice#1545](PHPOffice#1545) - Named formula implementation, and improved handling of Defined Names generally [PHPOffice#1535](PHPOffice#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 [PHPOffice#1646](PHPOffice#1646) - Improving Coverage for Excel2003 XML Reader [PHPOffice#1557](PHPOffice#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 [PHPOffice#1544](PHPOffice#1544) - Calculation/DateTime Failure With PHP8 [PHPOffice#1661](PHPOffice#1661) - Reader/Gnumeric Failure with PHP8 [PHPOffice#1662](PHPOffice#1662) - ReverseSort bug, exposed but not caused by PHP8 [PHPOffice#1660](PHPOffice#1660) - Bug setting Superscript/Subscript to false [PHPOffice#1567](PHPOffice#1567)
PreviousNext