{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":360212739,"defaultBranch":"master","name":"PhpSpreadsheet","ownerLogin":"oleibman","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2021-04-21T15:07:41.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10341515?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1719119381.0","currentOid":""},"activityList":{"items":[{"before":"43589bc9b6f5bf1e24689a8e7521a1ec01fe523e","after":"f181a4c66e44abfb9409451d2bf4bd861062efd2","ref":"refs/heads/year1904","pushedAt":"2024-06-23T05:13:42.000Z","pushType":"push","commitsCount":15,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Merge branch 'master' into year1904","shortMessageHtmlLink":"Merge branch 'master' into year1904"}},{"before":null,"after":"43589bc9b6f5bf1e24689a8e7521a1ec01fe523e","ref":"refs/heads/year1904","pushedAt":"2024-06-23T05:09:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Make Base Date a Property of Spreadsheet\n\nThis change is extracted from PR #2787 by @MarkBaker. That change mostly deals with array functions, and that part will be superseded by PR #3962. However, this part of 2787 is not included in 3962.\n\nFix #1036 (closed as stale in 2019 and just reopened). Excel spreadsheets can have either of 2 base dates, 1900 or 1904, and the numeric value of any date cells will vary depending on which base date is in use. PhpSpreadsheet has, till now, handled that as a static property of Shared/Date. This does not work well if two spreadsheets with different base dates are open simultaneously. The code is changed to store the base date as a property of the spreadsheet when an Xls/Xlsx spreadsheet is loaded, and use that property when saving an Xls/Xlsx spreadsheet. Any call to `getCalculatedValue` or `getFormattedValue` will temporarily set the Shared/Date value to that of the spreadsheet, and restore it at completion. In order to avoid a BC break, the Xls and Xlsx readers will continue to populate the Shared/Date value as before.","shortMessageHtmlLink":"Make Base Date a Property of Spreadsheet"}},{"before":"dd7c31798c8c4f492aba43a83a2df3c7a692417c","after":"6a4ff0e583e99980a0672ff55f7e7f25ab90ddc1","ref":"refs/heads/pr1449","pushedAt":"2024-06-23T04:36:32.000Z","pushType":"push","commitsCount":15,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Merge branch 'master' into pr1449","shortMessageHtmlLink":"Merge branch 'master' into pr1449"}},{"before":"85c1512b6744094a276b165bc1cce224431d0060","after":null,"ref":"refs/heads/stan9d","pushedAt":"2024-06-23T04:34:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"}},{"before":"fed7a32298687e3840e00d6ec85fdd2cd59787f8","after":"2076a07190714b20590c720b4da92ab15e71bce1","ref":"refs/heads/atsign","pushedAt":"2024-06-23T04:11:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Minor Tweaks","shortMessageHtmlLink":"Minor Tweaks"}},{"before":"ef2b5b9e001bc239efedf4578b5f71c14b0ff2ae","after":"fed7a32298687e3840e00d6ec85fdd2cd59787f8","ref":"refs/heads/atsign","pushedAt":"2024-06-22T05:30:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Dead Code","shortMessageHtmlLink":"Dead Code"}},{"before":"3a690a755c259ef317013526fdef5f948069e98b","after":"ef2b5b9e001bc239efedf4578b5f71c14b0ff2ae","ref":"refs/heads/atsign","pushedAt":"2024-06-22T04:55:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Mostly Docs and Tests\n\nAlso support for Xml format.","shortMessageHtmlLink":"Mostly Docs and Tests"}},{"before":"0b471ef77272110b16432b3ad6e0e89efe1c4fec","after":"3a690a755c259ef317013526fdef5f948069e98b","ref":"refs/heads/atsign","pushedAt":"2024-06-21T14:08:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"SINGLE Function, and Gnumeric\n\nSINGLE function can be used to return first value from a dynamic array result, or to return the value of the cell which matches the current row (VALUE error if not match) for a range. Excel allows you to specify an at-sign unary operator rather than SINGLE function; this PR does not permit that.\n\nAdd support for reading CSE array functions for Gnumeric.\n\nThrow an exception if setValueExplicit Formula is invalid (not a string, or doesn't begin with equal sign. This is equivalent to what happens when setValueExplicit Numeric specifies a non-numeric value.\n\nAdded a number of tests from PR #2787.","shortMessageHtmlLink":"SINGLE Function, and Gnumeric"}},{"before":"2c9e2e2b43d41c0706469c336e4f55a0963dc9be","after":"0b471ef77272110b16432b3ad6e0e89efe1c4fec","ref":"refs/heads/atsign","pushedAt":"2024-06-20T08:21:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Dead Code, and 1 Static Call to Non-Static","shortMessageHtmlLink":"Dead Code, and 1 Static Call to Non-Static"}},{"before":"8609b78e53af482a71e0e161555bceffbda2b2e6","after":"2c9e2e2b43d41c0706469c336e4f55a0963dc9be","ref":"refs/heads/atsign","pushedAt":"2024-06-20T07:43:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Spill Operator\n\nSpill operator now works both as trailing `#` and ARRAYANCHOR function. `#` is converted to ARRAYANCHOR when writing. I do not think it is important to convert the other way when reading.\n\nDocumentation updates have started, but are a work in progress.\n\nSINGLE function is implemented. I believe it works correctly when referring to a cell, but not when referring to a cell range. No attempt is yet made to convert leading `@` to and from SINGLE; I haven't figured out how to do so without interfering with `@` in structured references.\n\nISREF has problems. At least one of its tests was wrong, and many of those that were right were so accidentally. The code is changed, quite kludgily, so that almost all the tests are now deliberately correct. One very complicated test is incorrect; for now, I will skip it, and will open an issue when this PR is merged.","shortMessageHtmlLink":"Spill Operator"}},{"before":"d7700125faa36b055673dd50062c8214884d9aaf","after":"8609b78e53af482a71e0e161555bceffbda2b2e6","ref":"refs/heads/atsign","pushedAt":"2024-06-17T22:20:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Eliminate Dead Code","shortMessageHtmlLink":"Eliminate Dead Code"}},{"before":"784e8a0288998413531cb041af5a620c1c3645c3","after":"d7700125faa36b055673dd50062c8214884d9aaf","ref":"refs/heads/atsign","pushedAt":"2024-06-17T21:23:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Spills\n\nImplement SPILL for dynamic arrays. Calculating a dynamic array function will result in a SPILL error if it attempts to overlay a non-null cell which was not part of its previous calculation. Furthermore, it will set to null all cells which were part of its previous calculation but which are not part of the current one (i.e. one or both of the dimensions of the calculation is smaller than it had been); this should also apply for spills (whose result is reduced to 1*1).\n\nExcel will stop you from changing the value in any cell in a dynamic array except the formula cell itself. I have not built this particular aspect into PhpSpreadsheet.\n\nAs usual, MS has taken some unusual steps here. If the result of a dynamic array calculation is #SPILL!, it will nevertheless be written to the xml as #VALUE!. It recognizes this situation by adding a new `vm` attribute to the cell, and expanding metadata.xml to recognize this.\n\nA new optional parameter `$reduceArrays` is added to `toArray` and related functions. This will reduce a dynamic array to its first cell, which seems more useful than outputing it as an array (default).","shortMessageHtmlLink":"Spills"}},{"before":"ad2194d73708879d7ad4e73e006bc7a1f198e279","after":"784e8a0288998413531cb041af5a620c1c3645c3","ref":"refs/heads/atsign","pushedAt":"2024-06-14T16:26:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Drop Some Dead Code","shortMessageHtmlLink":"Drop Some Dead Code"}},{"before":"846fec7afab7d1f72660e15cd74be7776babdb1c","after":"ad2194d73708879d7ad4e73e006bc7a1f198e279","ref":"refs/heads/atsign","pushedAt":"2024-06-14T15:30:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"CONCATENATE Changes, and Csv/Html/Ods Support\n\nThe CONCATENATE function has been treated as equivalent to CONCAT. This is not how it is treated in Excel; it is closer to (and probably identical to) the ampersand concatenate operator. The difference manifests itself when any of the arguments is an array (typically a cell range). Code is added to support this difference.\n\nSupport for array results is added to Csv Writer, Html Writer, and Ods Reader and Writer. I have not figured out how to get it to work with Xls.","shortMessageHtmlLink":"CONCATENATE Changes, and Csv/Html/Ods Support"}},{"before":"5c3b63068ef81aef758116c8e225ae87cfeac40c","after":null,"ref":"refs/heads/issue4004td","pushedAt":"2024-06-11T13:35:47.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"}},{"before":"a3c6f8f5c689aee6454c5f60a15fe8467eca0d7b","after":"5c3b63068ef81aef758116c8e225ae87cfeac40c","ref":"refs/heads/issue4004td","pushedAt":"2024-06-11T13:25:38.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Merge branch 'master' into issue4004td","shortMessageHtmlLink":"Merge branch 'master' into issue4004td"}},{"before":"b57a549fabad3dd07d18e4b385466fd4edd99987","after":"a3c6f8f5c689aee6454c5f60a15fe8467eca0d7b","ref":"refs/heads/issue4004td","pushedAt":"2024-06-11T13:24:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Update CHANGELOG.md","shortMessageHtmlLink":"Update CHANGELOG.md"}},{"before":"ef176f382e19a2e01288750a5b4a980b19771e0b","after":"846fec7afab7d1f72660e15cd74be7776babdb1c","ref":"refs/heads/atsign","pushedAt":"2024-06-10T16:19:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Minor Performance Improvements","shortMessageHtmlLink":"Minor Performance Improvements"}},{"before":"3daac0a64082555baaef47b90d3bab6c279d39e2","after":"ef176f382e19a2e01288750a5b4a980b19771e0b","ref":"refs/heads/atsign","pushedAt":"2024-06-10T03:49:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Excel Handle Array Functions as Dynamic Rather than CSE\n\nWith a number of changes, PhpSpreadsheet can finally generate a spreadsheet which Excel will recognize as a Dynamic Array function rather than CSE. In particular, changes are needed to ContentTypes, workbook.xml.rels, cell definitions in the worksheet, and a new metadata.xml is added.","shortMessageHtmlLink":"Excel Handle Array Functions as Dynamic Rather than CSE"}},{"before":null,"after":"b57a549fabad3dd07d18e4b385466fd4edd99987","ref":"refs/heads/issue4004td","pushedAt":"2024-06-06T23:56:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"More RTL Support for Xlsx/Html Comments\n\nFollowing up from PR #4006. There is an additional RTL property available. It controls the placement of bidirectional neutral characters (mainly punctuation), as opposed to strong (alphabetic characters) or weak (numeric characters), especially at the beginning or end of a line. The new Comment property textboxDirection will be used for that purpose.\n\nIn a discussion in issue #4004 following the implementation of the PR, the comment was mixed RTL and LTR, and this led to some formatting problems. The user was able to overcome these with the timely insertion of Unicode directional control characters, but it would be preferable to have it happen automatically, which this change will permit. However, the use of these control characters cannot be entirely done away with. In the new test case, if one of the all-English lines ended with, say, a colon, it would not display correctly; LRM (left-to-right mark) after the colon would be needed. Likewise, one or two of the comment lines with mixed RTL and LTR (discussed in the issue) is not formatted correctly, and might require LRO/PDF or equivalent.","shortMessageHtmlLink":"More RTL Support for Xlsx/Html Comments"}},{"before":"6b5bf84fbb3a2f8f3cfab0548187b8c4218db3be","after":"3daac0a64082555baaef47b90d3bab6c279d39e2","ref":"refs/heads/atsign","pushedAt":"2024-06-06T20:16:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Add TODO Note\n\nArrayFunctions2Test - the calculations seem too complicated for PhpSpreadsheet. The debug log is 21,300 lines, so I don't know how far I will get with it.","shortMessageHtmlLink":"Add TODO Note"}},{"before":"47481c6a12329f63775a86cb716645b9a6051d87","after":"6b5bf84fbb3a2f8f3cfab0548187b8c4218db3be","ref":"refs/heads/atsign","pushedAt":"2024-06-06T14:10:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Still More Formatting\n\nI think I should go back to bed.","shortMessageHtmlLink":"Still More Formatting"}},{"before":"1b2198419e733efd30e808cb70fb95be0630c06b","after":"47481c6a12329f63775a86cb716645b9a6051d87","ref":"refs/heads/atsign","pushedAt":"2024-06-06T14:05:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"More Formatting\n\nFrustrating morning.","shortMessageHtmlLink":"More Formatting"}},{"before":"856a00b8f09cc5c89aaa3f74f35e994062c34203","after":"1b2198419e733efd30e808cb70fb95be0630c06b","ref":"refs/heads/atsign","pushedAt":"2024-06-06T14:01:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Incorrect Case for Filename","shortMessageHtmlLink":"Incorrect Case for Filename"}},{"before":"08ba00b57598b6af272c320d31ef2e68af998edc","after":"856a00b8f09cc5c89aaa3f74f35e994062c34203","ref":"refs/heads/atsign","pushedAt":"2024-06-06T13:55:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Formatting","shortMessageHtmlLink":"Formatting"}},{"before":"b79cd20f75aebca871ae2d76e4447bde6054d3d2","after":"08ba00b57598b6af272c320d31ef2e68af998edc","ref":"refs/heads/atsign","pushedAt":"2024-06-06T13:52:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Populate Rest of Array Cells, UNIQUE Changes\n\nSee issue #4062. When calculating an array formula, populate all the cells associated with the result. This is almost the same as Excel's behavior. As yet, there is no attempt to create a #SPILL error, so cells may be inappropriately overwritten. Also, if the array size shrinks (e.g. there are fewer unique values than before), no attempt is made to unpopulate the cells which were in range but are now outside the new dimensions. Spill and unpopulation are somewhat related, and will probably be handled at the same time, but their time has not yet come.\n\nUNIQUE, at least for rows, was treating all cell (calculated) values as strings. This is not the same behavior as Excel, which will preserve datatypes, and treat int 3 and string 3 as unique values. Excel will, however, treat int 3 and float 3.0 as non-unique. Within UNIQUE, private function uniqueByRow is changed to try to preserve the the datatype when executing (it will probably treat 3.0 as int - I don't know how I can, or even if I should attempt to, do better - but no int nor float should be treated as a string).","shortMessageHtmlLink":"Populate Rest of Array Cells, UNIQUE Changes"}},{"before":"7c1ff62ed4c94c7dea31841d8dcb774562abc3ed","after":null,"ref":"refs/heads/issue4063","pushedAt":"2024-06-06T13:48:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"}},{"before":"5e26de63a9e9d1431a4e0fe1d77cb5fece9ecea3","after":"7c1ff62ed4c94c7dea31841d8dcb774562abc3ed","ref":"refs/heads/issue4063","pushedAt":"2024-06-06T13:38:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Update CHANGELOG.md","shortMessageHtmlLink":"Update CHANGELOG.md"}},{"before":null,"after":"5e26de63a9e9d1431a4e0fe1d77cb5fece9ecea3","ref":"refs/heads/issue4063","pushedAt":"2024-06-06T13:17:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Handle Empty String in SharedStrings\n\nFix #4063. Fix #1560. Fix #1293. PhpSpreadsheet is not accounting for an empty string in Xlsx sharedStrings.xml.The code which parses it in Reader/Xlsx looks for a `t` or `r` tag descending from `si`, but, in this case, the tag is coded as ``, with neither t nor r tag descending. An else clause is added to set the string to empty string in this case.\n\nI was surprised that this had not turned up before, and a search through the archives found at least 2 earlier reports from 4 years ago. Those had been marked stale; the stale indicator is removed, and the issues are re-opened, to be closed when this PR is merged.","shortMessageHtmlLink":"Handle Empty String in SharedStrings"}},{"before":"5e7ebf3d91b2ce9396100cc2d76d23158a1c32a4","after":"b79cd20f75aebca871ae2d76e4447bde6054d3d2","ref":"refs/heads/atsign","pushedAt":"2024-06-05T13:58:26.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"oleibman","name":null,"path":"/oleibman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10341515?s=80&v=4"},"commit":{"message":"Merge branch 'master' into atsign","shortMessageHtmlLink":"Merge branch 'master' into atsign"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEbJcGIAA","startCursor":null,"endCursor":null}},"title":"Activity ยท oleibman/PhpSpreadsheet"}