You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+27-2Lines changed: 27 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,11 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org).
9
9
10
10
### Added
11
11
12
-
- Implementation of the FILTER(), SORT(), SORTBY() and UNIQUE() Lookup/Reference (array) functions
12
+
- 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.
13
+
- Implementation of the FILTER(), SORT(), SORTBY() and UNIQUE() Lookup/Reference (array) functions.
13
14
- Implementation of the ISREF() Information function.
14
15
- Added support for reading "formatted" numeric values from Csv files; although default behaviour of reading these values as strings is preserved.
15
16
16
-
(i.e a value of "12,345.67" can be read as numeric `1235.67`, not simply as a string `"12,345.67"`, if the `castFormattedNumberToNumeric()` setting is enabled.
17
+
(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.
17
18
18
19
This functionality is locale-aware, using the server's locale settings to identify the thousands and decimal separators.
19
20
@@ -37,13 +38,35 @@ and this project adheres to [Semantic Versioning](https://semver.org).
37
38
### Deprecated
38
39
39
40
- 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.
41
+
- 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`).
42
+
43
+
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.
44
+
This includes the methods:
45
+
-`setCellValueByColumnAndRow()` use the equivalent `setCellValue()`
46
+
-`setCellValueExplicitByColumnAndRow()` use the equivalent `setCellValueExplicit()`
47
+
-`getCellByColumnAndRow()` use the equivalent `getCell()`
48
+
-`cellExistsByColumnAndRow()` use the equivalent `cellExists()`
49
+
-`getStyleByColumnAndRow()` use the equivalent `getStyle()`
50
+
-`setBreakByColumnAndRow()` use the equivalent `setBreak()`
51
+
-`mergeCellsByColumnAndRow()` use the equivalent `mergeCells()`
52
+
-`unmergeCellsByColumnAndRow()` use the equivalent `unmergeCells()`
53
+
-`protectCellsByColumnAndRow()` use the equivalent `protectCells()`
54
+
-`unprotectCellsByColumnAndRow()` use the equivalent `unprotectCells()`
55
+
-`setAutoFilterByColumnAndRow()` use the equivalent `setAutoFilter()`
56
+
-`freezePaneByColumnAndRow()` use the equivalent `freezePane()`
57
+
-`getCommentByColumnAndRow()` use the equivalent `getComment()`
58
+
-`setSelectedCellByColumnAndRow()` use the equivalent `setSelectedCells()`
59
+
60
+
This change provides more consistency in the methods (not every "by cell address" method has an equivalent "byColumnAndRow" method);
61
+
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.
40
62
41
63
### Removed
42
64
43
65
- Nothing
44
66
45
67
### Fixed
46
68
69
+
- 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 #2730](https://github.com/PHPOffice/PhpSpreadsheet/issues/2730)[PR #2746](https://github.com/PHPOffice/PhpSpreadsheet/pull/2746)
47
70
- Update Conditional Formatting ranges and rule conditions when inserting/deleting rows/columns [Issue #2678](https://github.com/PHPOffice/PhpSpreadsheet/issues/2678)[PR #2689](https://github.com/PHPOffice/PhpSpreadsheet/pull/2689)
48
71
- Allow `INDIRECT()` to accept row/column ranges as well as cell ranges [PR #2687](https://github.com/PHPOffice/PhpSpreadsheet/pull/2687)
49
72
- Fix bug when deleting cells with hyperlinks, where the hyperlink was then being "inherited" by whatever cell moved to that cell address.
@@ -57,6 +80,8 @@ and this project adheres to [Semantic Versioning](https://semver.org).
57
80
58
81
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.
59
82
- Fix for escaping double quotes within a formula [Issue #1971](https://github.com/PHPOffice/PhpSpreadsheet/issues/1971)[PR #2651](https://github.com/PHPOffice/PhpSpreadsheet/pull/2651)
83
+
- Fix invalid style of cells in empty columns with columnDimensions and rows with rowDimensions in added external sheet. [PR #2739](https://github.com/PHPOffice/PhpSpreadsheet/pull/2739)
message:"#^Method PhpOffice\\\\PhpSpreadsheet\\\\Calculation\\\\Engineering\\\\ConvertBase\\:\\:validatePlaces\\(\\) has parameter \\$places with no type specified\\.$#"
350
345
count:1
@@ -2070,11 +2065,6 @@ parameters:
2070
2065
count:1
2071
2066
path:src/PhpSpreadsheet/Reader/Ods.php
2072
2067
2073
-
-
2074
-
message:"#^If condition is always true\\.$#"
2075
-
count:1
2076
-
path:src/PhpSpreadsheet/Reader/Ods.php
2077
-
2078
2068
-
2079
2069
message:"#^Method PhpOffice\\\\PhpSpreadsheet\\\\Reader\\\\Ods\\:\\:listWorksheetNames\\(\\) should return array\\<string\\> but returns array\\<int, string\\|null\\>\\.$#"
2080
2070
count:1
@@ -2095,11 +2085,6 @@ parameters:
2095
2085
count:1
2096
2086
path:src/PhpSpreadsheet/Reader/Ods.php
2097
2087
2098
-
-
2099
-
message:"#^While loop condition is always true\\.$#"
2100
-
count:2
2101
-
path:src/PhpSpreadsheet/Reader/Ods.php
2102
-
2103
2088
-
2104
2089
message:"#^Cannot call method getElementsByTagNameNS\\(\\) on DOMElement\\|null\\.$#"
2105
2090
count:3
@@ -3880,11 +3865,6 @@ parameters:
3880
3865
count:1
3881
3866
path:src/PhpSpreadsheet/Shared/Trend/Trend.php
3882
3867
3883
-
-
3884
-
message:"#^Parameter \\#1 \\$order of class PhpOffice\\\\PhpSpreadsheet\\\\Shared\\\\Trend\\\\PolynomialBestFit constructor expects int, string given\\.$#"
3885
-
count:2
3886
-
path:src/PhpSpreadsheet/Shared/Trend/Trend.php
3887
-
3888
3868
-
3889
3869
message:"#^Method PhpOffice\\\\PhpSpreadsheet\\\\Shared\\\\XMLWriter\\:\\:getData\\(\\) should return string but returns string\\|false\\.$#"
0 commit comments