Commit Graph

5406 Commits

Author SHA1 Message Date
oleibman 71b243539a Ignore Fractional Part of Drawing Shadow Alpha
Fix #4415. We store the rarely-used property Drawing/Shadow/Alpha as an integer representing the percentage. Excel also stores it as an integer, but multiplies it by 1,000, so we divide by 1,000 when we read this value. This can, and in the case of the issue at hand does, leave a fractional portion. Php has deprecated passing a float with a fractional portion to an int argument, so the reporter saw a deprecation message. This is easily fixed.
2025-03-20 20:11:11 -07:00
oleibman 74dca30c89 Merge pull request #4399 from oleibman/stan2lv902
Phpstan Level 9 - Part 2 of Many
2025-03-13 15:39:34 +00:00
oleibman b1beafb86f Merge pull request #4398 from oleibman/localesplit2
Move Locale Logic in Calculation to Separate Class
2025-03-12 07:37:32 +00:00
oleibman c3ea02ec01 Merge branch 'master' into localesplit2 2025-03-12 00:34:59 -07:00
oleibman 815a3c0494 Update CHANGELOG.md 2025-03-12 00:33:57 -07:00
oleibman 5868f899db Merge pull request #4339 from quonly/patch-1
changed $trenType to $trendMethod in case TREND_BEST_FIT
2025-03-12 06:48:09 +00:00
oleibman 8f3bb96387 Update CHANGELOG.md 2025-03-11 23:45:31 -07:00
oleibman 6e1f3b909c More Phpstan
Having Trend:calculate return BestFit rather than mixed eliminates many Phpstan messages in baseline.neon.
2025-03-09 21:56:32 -07:00
oleibman 596af4e4b3 Merge branch 'master' into patch-1 2025-03-09 21:35:21 -07:00
oleibman d462fbf05e Fix Phpstan and Scrutinizer Problems 2025-03-09 21:27:29 -07:00
oleibman 263a397b84 Add test, Disable TREND_BEST_FIT, POLYNOMIAL_BEST_FIT 2025-03-09 20:21:16 -07:00
oleibman c84960fb69 Phpstan Level 9 - Part 2 of Many 2025-03-08 23:22:15 -08:00
oleibman 156a12c0a4 Move Locale Logic in Calculation to Separate Class
Make things more maintainable (I hope).
2025-03-07 23:55:44 -08:00
oleibman 20aac080e1 Merge pull request #4396 from oleibman/stan2lv901
Phpstan Level 9 - Part 1 of Many
2025-03-08 06:18:52 +00:00
oleibman fca2184fdf Fix Phpstan Problems 2025-03-07 22:15:50 -08:00
oleibman b2d885fc4c Merge branch 'master' into stan2lv901 2025-03-07 21:55:50 -08:00
oleibman 9fc52cd91c Update CHANGELOG.md 2025-03-07 21:53:55 -08:00
oleibman 6ec2cc97a8 Merge pull request #4390 from oleibman/customfunc
Add Ability to Add Custom Functions to Calculation
2025-03-08 05:38:04 +00:00
oleibman 4d81e53606 Merge branch 'master' into customfunc 2025-03-07 11:47:56 -08:00
oleibman 3ef8ec4b1a Merge pull request #4393 from oleibman/formularange
Add FormulaRange to IgnoredErrors Possibilities
2025-03-07 03:44:16 +00:00
oleibman 6ab82465f8 Update CHANGELOG.md 2025-03-06 19:41:46 -08:00
oleibman c0a966b9bb Add a Test
Prove you can't override a built-in function.
2025-03-06 16:40:09 -08:00
oleibman acf20f079d Merge pull request #4389 from oleibman/issue4383
BIN2DEC, OCT2DEC, HEX2DEC Return Numbers Rather than Strings
2025-03-06 06:20:14 +00:00
oleibman d1d12ed92d Phpstan Level 9 - Part 1 of Many
Dealing mostly with mixed variable type. In a great many cases, problems can be resolved replacing `getValue` with `getValueString` or `getCalculatedValue` with `getCalculatedValueString`.
2025-03-05 21:59:54 -08:00
oleibman 190af743f8 Add FormulaRange to IgnoredErrors Possibilities
When I implemented IgnoredErrors (PR #3508), I dealt only with those that I understood well enough to come up with an example. I finally found an example for FormulaRange in the wild, so this PR adds it. Still unsupported are `calculatedColumn`, `emptyCellReferece`, `listDataValidation`, and `unlockedFormula`.
2025-03-03 20:16:12 -08:00
oleibman 93069fd1ad Merge pull request #4392 from christian-fries/patch-1
Add sheet state to worksheet info
2025-03-03 16:40:02 +00:00
Christian Fries 27518ac6d8 Add sheet state to worksheet info 2025-03-03 11:24:49 +01:00
oleibman 53bce34456 Add Ability to Add Custom Functions to Calculation
For an overview of why this is desired (and ways that people have coped with its absence), see issue #2900 and issue #4048; also PR #4043 which will be superseded by this PR.

The list of Excel functions is moved from Calculation/Calculation to its own member. I believe that it is done in a way that will not cause big complications to two experiments from @MarkBaker (PR #2714 and PR #2734). I believe it is also done in such a way that further refactoring of Calculation can follow this model.

Custom functions can be added or removed from the function list. You cannot add a function if it already exists in the list, and you cannot remove a non-custom function from the list. They will, of course, not be understood by Excel if written to a spreadsheet; the use case is mainly using the Calculation engine outside of spreadsheet context.
2025-03-02 13:56:34 -08:00
oleibman a67a981d5e BIN2DEC, OCT2DEC, HEX2DEC Return Numbers Rather than Strings
Fix #4383.
2025-03-02 01:16:14 -08:00
oleibman 875dc354f9 Merge pull request #4384 from oleibman/stan2new
Phpstan V2
2025-03-02 07:05:51 +00:00
oleibman 6ff18c3a8d Merge pull request #4388 from oleibman/changelog20250301
Prepare Changelog for New Release
4.1.0
2025-03-02 06:52:24 +00:00
oleibman c13e803bf2 Prepare Changelog for New Release 2025-03-01 22:47:54 -08:00
oleibman 7fd06b524a Merge pull request #4387 from PHPOffice/dependabot/composer/friendsofphp/php-cs-fixer-3.70.0
Bump friendsofphp/php-cs-fixer from 3.68.5 to 3.70.0
2025-03-01 15:23:29 +00:00
dependabot[bot] 0cac522ca5 Bump friendsofphp/php-cs-fixer from 3.68.5 to 3.70.0
Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.68.5 to 3.70.0.
- [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.68.5...v3.70.0)

---
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>
2025-03-01 11:19:12 +00:00
oleibman 4791209658 Merge pull request #4382 from oleibman/issue4381
Handle #REF! As Argument to COUNTIF, AVERAGEIF, SUMIF
2025-03-01 00:20:33 +00:00
oleibman 44ed8a8b6d Merge branch 'master' into issue4381 2025-02-28 16:17:52 -08:00
oleibman 98e5a3f7da Update CHANGELOG.md 2025-02-28 16:17:13 -08:00
oleibman 027a5c69c1 Merge pull request #3341 from HuongNV13/php82-str-split-function-return
Fix PHP8.2 str_split function returns empty arrays for empty strings
2025-02-28 23:57:21 +00:00
oleibman 93169c6203 Update CHANGELOG.md 2025-02-28 15:54:46 -08:00
oleibman 497d036e91 Make Use of UTF-8 Explicit
Php manual describes it as good practice to do so.
2025-02-27 09:49:13 -08:00
oleibman a1f90b76e4 Add A Test 2025-02-26 18:52:31 -08:00
oleibman a2040b88b5 Phpstan V2 2025-02-26 14:18:58 -08:00
oleibman ea490a1d87 Remove Unwanted Tests 2025-02-26 00:58:57 -08:00
oleibman fcc781d3d7 Merge branch 'master' into php82-str-split-function-return 2025-02-25 22:33:31 -08:00
oleibman a936254e10 Merge pull request #3528 from oleibman/pr1449
Partial Solution for Removing Rows or Columns that Include Edge Ranges
2025-02-26 05:03:23 +00:00
oleibman 1e2c86bdbb Update CHANGELOG.md 2025-02-25 21:00:46 -08:00
oleibman 753e5d5e5a Merge branch 'master' into pr1449 2025-02-25 20:40:10 -08:00
oleibman b4cd42d2b2 Merge pull request #4380 from oleibman/stanbleed06
Phpstan Bleeding Edge Last: Reader
2025-02-26 04:35:09 +00:00
oleibman db6e6ebd72 3rd Parameter for AVERAGEIF/SUMIF Can Also Be #REF! 2025-02-25 20:11:23 -08:00
oleibman 990e3ec3a3 Handle #REF! As Argument to COUNTIF, AVERAGEIF, SUMIF
Fix #4381. The report refers to COUNTIF, but AVERAGEIF and SUMIF, which are implemented in the same module, exhibit the same behavior. (There may be others, but, for now, I will just fix those 3.)

Most methods which implement Excel functions should accept mixed arguments, so that they won't throw exceptions when calculated. Of course, MS often doesn't give much guidance as to how unexpected arguments should be handled. It at least seems clear that MS will often substitute #REF! for some arguments, and will return #REF! as the result in such cases. My test indicates that a formula using, say, #DIV/0! in lieu of #REF! will cause Excel to deem the spreadsheet corrupt. So, I think I am just going to deal with #REF! and let other unexpected values continue to throw exceptions.
2025-02-24 21:40:12 -08:00