Commit Graph

3461 Commits

Author SHA1 Message Date
oleibman 6fae406aca
New Class ChartColor and Refactoring (#2898)
* New Class ChartColor and Refactoring

Chart colors are written to Xml in a different manner than font colors, and there are several variations. It will simplify things to create a new class for them. This PR will make use of the new class in Property/Axis/Gridline glow, shadow, and line colors; in Axis fill color; and in Font underline color (used only in charts). It will be used elsewhere in future; in particular, DataSeriesValues, which I will tackle next, will use it for at least one existing and two new properties. This PR is a refactoring; no functionality is added. Some public functions are moved from Properties to ChartColor, but all of these have been introduced after the last release 1.23, so there isn't really any compatibility break. No tests needed to be revised as a result of the source changes.

* Simplify Logic in Xlsx/Writer/Chart

Minor change.
2022-06-19 19:11:40 -07:00
MarkBaker 4ae947ce64 Update php codesniffer 2022-06-19 11:33:09 +02:00
MarkBaker 27f815a9f1 Update change log 2022-06-17 14:10:35 +02:00
Mark Baker 1f85f15cd9
Merge pull request #2899 from PHPOffice/Issue-2874_Calculation-Engine-Quoted-Worksheet-Regexp
Issue 2874 calculation engine quoted worksheet regexp
2022-06-17 14:07:13 +02:00
Mark Baker 9f172733c7
Merge branch 'master' into Issue-2874_Calculation-Engine-Quoted-Worksheet-Regexp 2022-06-17 13:57:28 +02:00
MarkBaker 02c6e8cfa8 Escape double quotes in worksheet names for column range and row range references 2022-06-17 13:34:20 +02:00
MarkBaker 23e207ccb4 Adjust calc engine identification of quoted worksheet names to fix bug with multiple quoted worksheets in formula 2022-06-17 13:08:06 +02:00
oleibman 97381d4307
Complete Support for Chart/Axis and Gridlines (#2881)
Unit testing now results in 100% coverage for Axis and Properties. All the properties in methods in Gridlines were more or less duplicated in Axis, and these duplications are moved to the common ancestor Properties. So, there isn't anything left in Gridlines. PhpSpreadsheet Chart is now over 85% covered (it was below 35% until recently).

Properties are in many cases set to default to null/null-string, rather than the default values they receive from Excel, and are not written to Xml if unchanged. This is consistent with how Excel behaves. A new property `crossBetween` is added to Axis, and, with support for that added to Xlsx Reader and Writer, some minor Sample peculiarities are corrected, in particular, the charts were sometimes slightly truncated on the left and right edges.
2022-06-15 19:00:33 -07:00
oleibman 481cef2def
Php8.2 Deprecation in Reader/Xlsx (#2894)
* Php8.2 Deprecation in Reader/Xlsx

Using `${var}` will be deprecated, with the suggested resolution being to use `{$var}`. This appears to be the only place in PhpSpreadsheet which does this. Some vendor packages will need to change for 8.2 for this and other reasons.

* mb_convert_encoding and HTML_ENTITIES

Also scheduled to be deprecated with 8.2. It appears to have not been needed in PhpSpreadsheet in the first place.
2022-06-15 18:47:35 -07:00
FlameStorm 1829dea91e
Ignore square-$-brackets prefix in format string (#2886)
* Ignore square-$-brackets prefix in format string

* Test for square-$-brackets prefix in format string issue fixed

* Fix for phpstan compliance

* Additional assert for checking number format of tested source cell
2022-06-15 14:55:17 -07:00
Mark Baker 11348a4830
Merge pull request #2890 from PHPOffice/PHP82-Experimental-in-CI-Pipeline
Add PHP 8.2 with allow fail
2022-06-15 15:18:47 +02:00
MarkBaker 0a8c97cf8a Add PHP 8.2 with allow fail 2022-06-15 13:59:58 +02:00
Mark Baker 85fe696236
Merge pull request #2889 from PHPOffice/PHPCS-Update
phpcs update to version 3.7.0
2022-06-15 13:43:48 +02:00
MarkBaker 3b55689ec1 phpcs update to version 3.7.0 to ensure it catches all the PHP 8.1 updates 2022-06-15 13:33:42 +02:00
Mark Baker 1a404e8dcf
Merge pull request #2888 from PHPOffice/ReferenceHelper-Performance-Improvements
Reference helper performance improvements
2022-06-15 13:23:51 +02:00
Mark Baker ec5e46a0ba
Merge branch 'master' into ReferenceHelper-Performance-Improvements 2022-06-15 13:10:40 +02:00
MarkBaker f51f4bc0ea Update change log and documentation 2022-06-15 12:59:38 +02:00
MarkBaker 09c66ab302 Use column address rather than index for remove column loop to eliminate extra math and repeated calls to stringFromColumnIndex() 2022-06-15 12:59:37 +02:00
oleibman 04f4667658
Expand Chart Support for schemeClr and prstClr (#2879)
* Expand Chart Support for schemeClr and prstClr

Fix #2219. Address some, but not all, issues mentioned in #2863.

For Pie Charts, fill color is stored in XML as part of dPt node, which had been ignored by Reader/Xlsx/Chart. Add support for it, including when specified as schemeClr or prstClr rather than srgbClr. Add support for prstClr in other cases where schemeClr is supported.

* Update Change Log

Add this PR.
2022-06-14 08:45:12 -07:00
oleibman 90bdc7c12e
Test For Excel File Saved With Ribbon Data (#2883)
File from https://www.rondebruin.nl/win/s2/win003.htm. I have been in conversation with the author, who has no objection to its use. I have not actually opened the file in Excel (at least not with macros enabled); I am using it merely to demonstrate that the ribbon data is read and written correctly. Test added; no source code changed. This should slightly increase coverage for Reader/Xlsx (moderate), Writer/Xlsx (slight), and Spreadsheet (substantial). Note that this file has no Ribbon Bin objects, so some coverage is still lacking.
2022-06-14 08:33:36 -07:00
MarkBaker 00f570aed5 Merge branch 'master' into ReferenceHelper-Performance-Improvements 2022-06-14 16:00:09 +02:00
Mark Baker ed34a45891
Merge pull request #2875 from dgeppo/master
Add removeCommentByColumnAndRow function
2022-06-14 12:46:51 +02:00
Mark Baker c749cb5e83
Merge branch 'master' into master 2022-06-14 12:34:02 +02:00
MarkBaker 8e31dbaabe Update change log 2022-06-14 12:21:44 +02:00
MarkBaker 4d2b00dafc phpcs fxes 2022-06-14 12:19:54 +02:00
MarkBaker 11a94dabec Potential improvements for insert/delete column/row for performance testing 2022-06-14 12:01:08 +02:00
Dams 7f62fba7ef
Update the method testRemoveComment
Adding test to check if comment exists before delete it
2022-06-14 10:44:42 +02:00
Dams 861b955b3b
Add feature removeComment
Use $cellCoordinate as argument
Return $this to support the fluent interface
2022-06-14 10:12:08 +02:00
Mark Baker 7b7d3bc33c
Merge pull request #2882 from PHPOffice/Datatype-Stricter-Typing
Apply some coercive type-hinting
2022-06-12 19:57:56 +02:00
MarkBaker 09c843427f Apply some coercive type-hinting 2022-06-12 19:21:43 +02:00
Mark Baker 67f87c87c2
Merge pull request #2880 from PHPOffice/Tighten-up-TypeChecking-for-Strings
Apply some coercive type-hinting
2022-06-11 14:46:48 +02:00
MarkBaker 189152ee07 Apply some coercive type-hinting 2022-06-11 14:32:29 +02:00
Mark Baker 5cba6d86e6
Merge pull request #2873 from PHPOffice/Row/Column_isEmpty-check
New functionality to allow checking whether a row or column is "empty"
2022-06-10 17:37:43 +02:00
Mark Baker 0ef98ac044
Merge branch 'master' into Row/Column_isEmpty-check 2022-06-10 17:34:11 +02:00
Mark Baker e3471f8a0f
Merge pull request #2878 from PHPOffice/Issue-2868_Emphasis-Documentation-for-setValueExplict
Update docblock documentation for setting cell values explicit
2022-06-10 14:37:24 +02:00
MarkBaker 8434189336 Update docblock documentation for setting cell values explicit to indicate that value/datatype matching is the responsibility of the end-user developer making this call; and that values may be changed to reflect the specified datatype.
No doubt some developers will complain that it should be the other way round, that datatpe should be modified to match the specified value; but then they should be using setValue() instead; the use of setValueExplicit() is explicit.
2022-06-10 13:38:41 +02:00
oleibman 4f22b39b89
Add Support to Chart/Axis and Gridlines for Shadow (#2872)
* Add Support to Chart/Axis and Gridlines for Shadow

Continuing the work from #2865. Support is added for Shadow properties for Axis and Gridlines, and Glow and SoftEdges are extended to Gridlines. Tests are added. Some chart tests are moved from Reader/Xlsx and Writer/Xlsx so that most chart tests are under a single directory.

This is a minor breaking change. Since the support for these properties was just added, it can't really affect much in userland. Some properties had been stored in the form which the XML requires them rather than as the user would enter them to Excel. So, for example, setting the Glow size to 10 points would have caused it to be stored internally as 127,000. This change will store the size internally as 10, obviously making the appropriate conversion when reading from or writing to XML. This makes unit tests much simpler, and I think this is also what a user would expect, especially considering the difficulties in keeping track of the trailing zeros.

* More Tests

Confirm value change between internal and xml.

* Still More Tests

Add a little more coverage, and use a neat trick suggested by @MarkBaker in the discussion of PR #2724 to greatly simplify MultiplierTest.
2022-06-09 18:08:56 -07:00
Mark Baker 1f1fc360af
Merge pull request #2877 from PHPOffice/Issue-2776_Allow-Merge-Cells-for-single-cell
Relax validation on merge cells to allow input of a single cell
2022-06-10 01:27:29 +02:00
MarkBaker 00dae1bbda Relax validation on merge cells to allow input of a single cell 2022-06-10 01:15:57 +02:00
MarkBaker adf4531c99 Adjust worksheet regexps for CellRef and Row/Column Ranges for improved handling of quoted worksheet names 2022-06-09 19:54:25 +02:00
Dams 801f5296e9
Update Worksheet.php 2022-06-09 09:21:18 +02:00
Dams 52da0dc0fc
Add use PhpOffice\PhpSpreadsheet\Spreadsheet; 2022-06-09 09:18:48 +02:00
Dams 56ddbc4dd5
Add testRemoveComment 2022-06-09 09:08:52 +02:00
Dams 13437384af
Change removeComment to use CellCoordinate 2022-06-09 09:08:02 +02:00
dgeppo 391e6308d7
Add removeCommentByColumnAndRow function 2022-06-08 11:24:56 +02:00
MarkBaker b62de98bf7 New functionality to allow checking whether a row or column is "empty", with flags to allow variation in the definition of "empty" 2022-06-07 20:22:33 +02:00
oleibman 5608e05eda
Add Support to Chart/Axis for Glow/SoftEdges (#2865)
* Add Support to Chart/Axis for Glow/SoftEdges

Chart is very under-covered in unit tests. I was hoping to just add some tests and be done with it, but that just won't suffice - many code changes are required. Adding Glow properties for Axis turned out to be a real mixed bag - no support in Xlsx/Reader at all, support in Xlsx/Writer ... for the X-axis only. So we'll just inch forward in many stages.

This change does not address other Axis properties (Fill, Shadow, Line, LineStyle, and maybe others, and their sub-properties). On my to-do list.

GridLines, and maybe other Chart objects, also should support these properties. This change does not address those. On my to-do list.

No support is added for spreadsheet formats other than Xlsx.

* Refactoring

This should make the code easier to follow, and I hope it will also be extensible to other object types (e.g. GridLines).

* More Refactoring

Make scheme/srgb easier to handle.

* Fix Typo

In a very rarely used function.
2022-06-03 16:47:03 -07:00
dependabot[bot] d0ff3d9ca7
Bump phpstan/phpstan from 1.6.3 to 1.7.7 (#2864)
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.6.3 to 1.7.7.
- [Release notes](https://github.com/phpstan/phpstan/releases)
- [Changelog](https://github.com/phpstan/phpstan/blob/1.7.x/CHANGELOG.md)
- [Commits](https://github.com/phpstan/phpstan/compare/1.6.3...1.7.7)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: oleibman <10341515+oleibman@users.noreply.github.com>
2022-06-01 21:22:53 -07:00
oleibman 8bb568c9ac
Prep Work Before Upgrading to Phpstan 1.7.7 (#2867)
Clean up the usual discrepancies which arise between Phpstan releases.
2022-06-01 21:10:41 -07:00
oleibman c936f1d9f8
Coverage Improvements (#2859)
Mostly new tests, some code annotations, some minor code changes:
- RichText clone logic is wrong
- TextElement doesn't have object properties, doesn't need clone
2022-06-01 08:29:56 -07:00