Commit Graph

4705 Commits

Author SHA1 Message Date
oleibman 59dfd1f20d Merge branch 'master' into issue64 2024-07-11 20:39:49 -07:00
oleibman 9652ffe73a Update CHANGELOG.md 2024-07-11 20:38:22 -07:00
oleibman 6c1b00b6f9 Merge pull request #4087 from oleibman/issue804
Ods Xml Reader and Whitespace Text Nodes
2024-07-11 03:17:28 +00:00
oleibman 2c150d5381 Merge branch 'master' into issue804 2024-07-10 20:14:46 -07:00
oleibman f6f155263c Update CHANGELOG.md 2024-07-10 20:13:50 -07:00
oleibman ca41de3b23 Merge pull request #4086 from oleibman/issue4081
Ods Comments With Newlines
2024-07-07 14:32:24 +00:00
oleibman 96f09441ca Merge branch 'master' into issue4081 2024-07-07 07:27:49 -07:00
oleibman 81964f991a Update CHANGELOG.md 2024-07-07 07:26:18 -07:00
oleibman f6823c79e8 More Doc Updates 2024-07-06 20:26:15 -07:00
oleibman 6d2d99a5b3 Merge pull request #4080 from oleibman/issue2581
Propagate Errors in Text Functions
2024-07-06 05:51:35 +00:00
oleibman 22bac3eb49 Merge branch 'master' into issue2581 2024-07-05 22:48:45 -07:00
oleibman 61b8aff359 Update CHANGELOG.md 2024-07-05 22:46:55 -07:00
oleibman 06737c1f96 Merge pull request #4073 from oleibman/issue1310
Change Style Without Affecting Current Cell/Sheet, and Invalid Formulas
2024-07-06 05:34:16 +00:00
oleibman 2a7cbaba1d Merge branch 'master' into issue1310 2024-07-05 22:22:01 -07:00
oleibman b8715a5d8a Update CHANGELOG.md 2024-07-05 22:20:57 -07:00
oleibman 070ceef5d0 Changes to INDEX Function
Fix #64 (really!), closed as stale in December 2017, another in our "better late than never" series. Excel's INDEX function doesn't really behave quite as described. If a single row is used as an argument, either in literal form `{item1, item2, item3}` or expressed as a range `A1:A6`, INDEX is happy to evaluate the array as if each entry were a row rather than a single item. PhpSpreadsheet is changed to do likewise.

INDEX also returned `#REF!` when it would normally return an array (which would often be reduced to its leftmost topmost entry later). This code is deleted, invalidating one existing test, and INDEX will now operate like other functions which can return arrays.
2024-07-05 20:57:43 -07:00
oleibman 2897c4de33 Missed One Doc Change 2024-07-04 20:18:25 -07:00
oleibman 7d8bec828b Documentation Updates
Mostly in response to issue #3961, which noted some discrepancies, both positive and negative, between documentation and reality concerning ODS support.
2024-07-04 20:06:17 -07:00
oleibman 1d86675e04 Ods Xml Reader and Whitespace Text Nodes
Fix #804, opened in Dec. 2018, and closed as stale in Feb. 2019, and which I have re-opened to be closed properly by this PR. Better late than never, I suppose. A third party generated an ODS spreadsheet which PhpSpreadsheet could not read. By way of explanation, the xml in the file contained lots of whitespace between tags, which is wonderful for those humans among us who have to analyze it; but PhpSpreadsheet was not prepared for it. It is now.
2024-07-03 19:56:38 -07:00
oleibman 8557ccb72a Ods Comments With Newlines
Fix #4081. Ods Reader was not reading entire contents of comment. On further inspection, Ods Writer also was not handling comments completely correctly. Ods comments are recorded as `text:p` children of `office:annotation` elements. A newline is inserted between successive `text:p` elements. The `text:p` element itself can have as descendants (at least):
- raw text
- `text:span` elements
- `text:line-break` elements, which also causes the insertion of a newline

Ods Writer is changed to use a single `text:p` with multiple span/linebreak elements. Ods Reader is changed to process in their entirety either that form, or multiple `text:p` elements. Styling of the individual elements of the comment is permitted in Ods. That has not been supported till now by PhpSpreadsheet, and this PR will not address that situation - Ods Reader hast little style support, and this would hardly be the most urgent case where it is missing.
2024-07-01 14:52:23 -07:00
oleibman 1b68270f80 Merge pull request #4085 from PHPOffice/dependabot/composer/phpstan/phpstan-1.11.5
Bump phpstan/phpstan from 1.11.3 to 1.11.5
2024-07-01 13:48:57 +00:00
oleibman ae8f2d7bd5 Update MemoryDrawing.php 2024-07-01 06:21:59 -07:00
dependabot[bot] a299be3a75 Bump phpstan/phpstan from 1.11.3 to 1.11.5
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.11.3 to 1.11.5.
- [Release notes](https://github.com/phpstan/phpstan/releases)
- [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md)
- [Commits](https://github.com/phpstan/phpstan/compare/1.11.3...1.11.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 13:19:03 +00:00
oleibman cffcfb4a5c Merge pull request #4083 from PHPOffice/dependabot/composer/friendsofphp/php-cs-fixer-3.59.3
Bump friendsofphp/php-cs-fixer from 3.58.1 to 3.59.3
2024-07-01 13:13:12 +00:00
oleibman af96582219 Merge pull request #4084 from PHPOffice/dependabot/composer/mpdf/mpdf-8.2.4
Bump mpdf/mpdf from 8.2.3 to 8.2.4
2024-07-01 13:12:49 +00:00
oleibman 1f83ba8765 Merge pull request #4082 from PHPOffice/dependabot/composer/phpunit/phpunit-10.5.24
Bump phpunit/phpunit from 10.5.20 to 10.5.24
2024-07-01 13:12:19 +00:00
dependabot[bot] 381304db83 Bump mpdf/mpdf from 8.2.3 to 8.2.4
Bumps [mpdf/mpdf](https://github.com/mpdf/mpdf) from 8.2.3 to 8.2.4.
- [Release notes](https://github.com/mpdf/mpdf/releases)
- [Changelog](https://github.com/mpdf/mpdf/blob/development/CHANGELOG.md)
- [Commits](https://github.com/mpdf/mpdf/compare/v8.2.3...v8.2.4)

---
updated-dependencies:
- dependency-name: mpdf/mpdf
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 11:53:07 +00:00
dependabot[bot] dd22bb5b7b Bump friendsofphp/php-cs-fixer from 3.58.1 to 3.59.3
Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.58.1 to 3.59.3.
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.58.1...v3.59.3)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 11:53:04 +00:00
dependabot[bot] 7ce99c8834 Bump phpunit/phpunit from 10.5.20 to 10.5.24
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 10.5.20 to 10.5.24.
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/10.5.24/ChangeLog-10.5.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/10.5.20...10.5.24)

---
updated-dependencies:
- dependency-name: phpunit/phpunit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 11:52:56 +00:00
oleibman 4860e8e4b8 Correct 2 Doc-block statements 2024-06-29 22:23:50 -07:00
oleibman 4b04cc1c8d Propagate Errors in Text Functions
Fix #2581 (not obvious - see next paragraph for explanation). This continues the work of PR #2902 (and also PR #3467) to have errors propagated through function calculations rather than treating them as strings. All text functions, and the concatenation operator, are addressed in this PR.

In the original issue, the spreadsheet being loaded uses the result of an unimplemented function as an argument to another function. When `getCalculatedValue` is used on the cell in question, the result is returned as `#VALUE!`. If the cell had just contained a function call to the unimplemented function, getCalculatedValue would have recognized the situation and returned oldCalculatedValue as the result. Not perfect, but good enough most of the time. User would like oldCalculatedValue returned here as well, which seems like a reasonable request.

PhpSpreadsheet always returns `#Not Yet Implemented` as the result for a function which it knows about but which is not yet implemented. That is the key to the `Cell` class being able to substitute oldCalculatedValue in the first place. However, in order to do that for the issue in question, that result has to be propagated to any functions for which the result is an argument. I don't want to add unimplemented to the list of known error codes, but I am willing to add a parameter to `ErrorValue::isError` to indicate whether that value should be considered an error (default is "no").

The first use of that new parameter would be by the text functions. They go through a common Helper routine, so it is pretty easily implemented. And, as it turns out, most of the text functions do not currently propagate errors, e.g. if A1 results in a value error, `=LEFT(A1,2)` will result in `#V` rather than `#VALUE!`. With this PR, they will now be handled correctly.
2024-06-29 22:00:39 -07:00
oleibman 14c3df0ebc Merge pull request #4076 from oleibman/pr1415
CSV Writer Allow Varying Number of Columns
2024-06-30 02:34:08 +00:00
oleibman e8bb091f3b Merge branch 'master' into pr1415 2024-06-29 19:32:02 -07:00
oleibman 1ef063381b Update CHANGELOG.md 2024-06-29 19:28:40 -07:00
oleibman aae4992dca Merge pull request #4074 from yfinkel/patch-1
Update JpGraphRendererBase.php - check existing of PlotLabel
2024-06-30 02:12:15 +00:00
Юрий Финкель 675efc1f79 getDataLabel() defends against empty labels 2024-06-28 11:01:58 +04:00
Юрий Финкель 3b37d3e300 getDataLabel() defends against empty labels 2024-06-28 10:58:03 +04:00
Юрий Финкель 766a73cf84 getDataLabel() defends against empty labels 2024-06-28 10:54:30 +04:00
Юрий Финкель f3693406ed getDataLabel defends against empty labels 2024-06-28 10:49:56 +04:00
Юрий Финкель ccee8690d1 getDataLabel defends against empty labels 2024-06-28 10:43:05 +04:00
oleibman 02479de01a CSV Writer Allow Varying Number of Columns
Supersedes PR #1415 by @AndrewMonty, which went stale in May 2020, and which is not directly usable due to changes between now and then. Fix #1414, which also went stale; I will remove the stale status and reopen the issue pending the merging of this PR.

Add an option to CSV Writer so that it writes the cells for a row only through the highest data column used in the row, rather than through the highest data column used in the worksheet.
2024-06-27 00:01:55 -07:00
Юрий Финкель 17fc6234e6 Update JpGraphRendererBase.php 2024-06-26 12:39:26 +04:00
Юрий Финкель 36f316856b Check existing of PlotLabel before using its method getDataValue()
I'v got that:

Uncaught PHP Exception Symfony\Component\ErrorHandler\Error\FatalError: "Error: Uncaught Error: Call to a member function getDataValue() on bool in .../vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/JpGraphRendererBase.php:337

I've found that it's necessary to check existing of PlotLabel before using its method getDataValue().
2024-06-26 10:59:17 +04:00
Юрий Финкель acd0e386e8 Update JpGraphRendererBase.php - check existing of PlotLabel
I've got
Uncaught PHP Exception Symfony\Component\ErrorHandler\Error\FatalError: "Error: Uncaught Error: Call to a member function getDataValue() on bool in .../vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/JpGraphRendererBase.php:337

I found that it's necessary to check existing of PlotLabel before using its method getDataValue().
2024-06-26 10:35:25 +04:00
oleibman 6d06bf94b0 Merge branch 'master' into issue1310 2024-06-25 23:18:38 -07:00
oleibman 352872048b Resolve Merge Conflicts 2024-06-25 23:16:10 -07:00
oleibman e40438916f Change Style Without Affecting Current Cell/Sheet, and Invalid Formulas
Fix #1310, which was closed as stale in 2020, but which I will now reopen. Supersedes PR #1311 (@jaiminmoslake7020), from which I will remove the stale label but leave closed. The issue and the PR were too limited  - they detected that the use of two equal signs at the start of a string made for an invalid formula, but there are variations, trivial and otherwise, which might also be detected. Using `setValue` with a string which starts with an equal sign will now attempt to parse (not evaluate) the formula; for certain situations in which the parser throws an exception, the string will be treated as a string rather than a formula. An example where it will still be treated as a formula is a 3D range reference, where the problem is not that it can't be parsed, but rather that the formula isn't supported (see unit test Calculation/Engine/RangeTest::test3dRangeEvaluation). Allowing such a formula might cause problems later on, but that is already what happens.

A string beginning with an equal sign but which isn't treated as a formula will automatically set the `quotePrefix` attribute to `true`; all other `setValue` attempts will set it to `false`. This avoids the problem of a lingering value causing problems later on.

It has long been a matter of discontent that setting a style can change the selected cells. A new method is added to `Worksheet`:
```php
applyStylesFromArray(string $coordinate, array $styleArray)
```
This will attempt to guarantee that the active sheet in the current spreadsheet, and the selected cells in the current worksheet, remain undisturbed after the call. The setting of `quotePrefix` above is the first use of the new method.
2024-06-25 22:06:36 -07:00
oleibman d767d4618a Merge pull request #4071 from oleibman/year1904
Make Base Date a Property of Spreadsheet
2024-06-26 05:00:26 +00:00
oleibman fe162bcf0e Update CHANGELOG.md 2024-06-25 21:58:10 -07:00
oleibman f181a4c66e Merge branch 'master' into year1904 2024-06-22 22:13:42 -07:00