PhpSpreadsheet/tests/data
oleibman cd84020693
Xlsx Reader Better Namespace Handling Phase 1 Try2 (#2173)
* Xlsx Reader Better Namespace Handling Phase 1 Try2

This is a replacement for #2088, which has run into merge conflicts. I will close that PR in the near future, however the comments in that PR may prove useful for this one. While that PR has been in draft status all along, I am marking this one as ready. I will gladly add additional tests (and, of course, make code changes) that anyone has to suggest, but, with my most recent test files which I will describe in a separate comment, I have no further ideas on useful additions.

As mentioned in the earlier ticket, this is a risky change. But, as has been demonstrated, delaying it comes with its own set of risks. It would be helpful to have a temporary moratorium on changes to Reader/Xlsx until this change is merged.

The original commit message follows.

There have been a number of issues concerning the handling of legitimate but unexpected namespace prefixes in Xlsx spreadsheets created by software other than Excel and PhpSpreadsheet/PhpExcel.I have studied them, but, till now, have not had a good idea on how to act on them. A recent comment https://github.com/PHPOffice/PhpSpreadsheet/issues/860#issuecomment-824926224 in issue #860 by @IMSoP has triggered an idea about how to proceed.

Gnumeric Reader was recently changed to handle namespaces better. Using that as a model, this PR begins the process of doing the same for Xlsx. Xlsx is much larger and more complicated than Gnumeric, hence the need to tackle it in multiple phases. I believe that this PR handles all of:
- listWorkSheetNames
- listWorkSheetInfo. Note that there was a bug in this function which would cause it to count only used columns rather than all columns. That bug is corrected.
- active sheet
- selected cell and top left cell
- cell content (formulas, numbers, text)
- hyperlinks
- comments (partial - see below)

This PR does not address:
- styles
- images and charts
- VBA and ribbons
- many other items, I'm sure

The issue for non-standard namespacing till now has been the use of unexpected prefixes. While I was working on this change, @Lambik introduced issue #2067 PR #2068 which introduced a completely different problem - the use of unexpected URLs. That PR and the issue associated with it were quite well documented, including the supplying of a test file and tests for it. I asked if I could take a look to see if it could be integrated with my change, and the result seems to be yes, so those changes are also part of this PR.

While adding a comment to my test file, I discovered that Microsoft had added "threaded comments" as a new feature. I believe these are not yet supported by PhpSpreadsheet, and I am not going to add it, at least not now. I believe that, among other things, this will make identifying the author of a comment more difficult.

Although there are a number of Phpstan baseline changes as part of this PR, I did not attempt to resolve all Phpstan reports for Reader/Xlsx. Nor did I do anything to increase coverage. This change is already large and complex enough without those efforts.
2021-06-25 09:05:49 +02:00
..
Calculation Use WildcardMatch 2021-06-24 10:09:21 +02:00
Cell PHPCS and PHStan appeasement 2021-06-03 21:42:20 +02:00
Functional/TypeAttributePreservation Avoid losing calculated value type 2018-03-03 11:51:06 +01:00
Reader Xlsx Reader Better Namespace Handling Phase 1 Try2 (#2173) 2021-06-25 09:05:49 +02:00
Shared Trend unit tests (#1899) 2021-03-06 22:50:19 +01:00
Style Resolve problem where underscore placeholder in a number format masks (#2038) 2021-04-29 14:15:45 +02:00
Worksheet Bugfix #1858; Apply stricter scoping rules to named range/cell access (#1866) 2021-02-19 22:03:50 +01:00
Writer Refactor xlsx writer 2021-03-14 22:20:11 +05:30
CalculationBinaryComparisonOperation.php Refactor tests data from custom format to PHP 2016-08-16 21:00:19 +09:00
CellAbsoluteCoordinate.php Sheet title can contain exclamation mark (in formulas) 2018-10-03 12:52:51 +09:00
CellAbsoluteReference.php Sheet title can contain exclamation mark (in formulas) 2018-10-03 12:52:51 +09:00
CellBuildRange.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
CellCoordinates.php PHPStan Level 2 2021-04-04 22:06:00 +09:00
CellExtractAllCellReferencesInRange.php Range operator tests (#1501) 2020-06-02 07:38:35 +02:00
CellGetRangeBoundaries.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
CellMergeRangesInCollection.php Fix cell ranges causing coordinate merge error 2018-01-22 12:26:37 +09:00
CellRangeBoundaries.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
CellRangeDimension.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
CellSplitRange.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
ColumnIndex.php Consistent `stringFromColumnIndex()` and `columnIndexFromString()` 2017-11-26 15:29:08 +09:00
ColumnString.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
CoordinateIsRange.php Fix cell ranges causing coordinate merge error 2018-01-22 12:26:37 +09:00
ReferenceHelperFormulaUpdates.php Additional Unit Tests (#1582) 2020-07-14 10:58:50 +02:00
ReferenceHelperFormulaUpdatesMultipleSheet.php Named formula implementation, and improved handling of Defined Names generally (#1535) 2020-07-26 12:00:06 +02:00