Commit Graph

6132 Commits

Author SHA1 Message Date
oleibman e1a72c1631 Remove Redundant Tests 2026-01-18 12:25:17 -08:00
oleibman db8f3d2669 Extra Testing 2026-01-18 02:53:03 -08:00
oleibman a71ae2a736 Consolidate Some Tests 2026-01-18 02:32:55 -08:00
oleibman 3b02929010 Restore Inappropriately Deleted Test 2026-01-18 02:13:58 -08:00
oleibman dc6b1e9ed2 Update Changelog 2026-01-16 20:16:24 -08:00
oleibman 860f2c6637 Restore Tests Whose Absence Led to Omitted Coverage 2026-01-16 18:21:57 -08:00
xannyprox 820640d516 Merge branch 'master' of https://github.com/xannyprox/PhpSpreadsheet 2026-01-16 21:02:48 +03:00
xannyprox 8b010e4dcd php-cs-fixer Fixes Applied 2026-01-16 21:02:44 +03:00
Xanny 2b5e6bd14d Merge branch 'master' into master 2026-01-16 20:32:38 +03:00
xannyprox 2c4faa535d [Perf] Optimize DefaultValueBinder formula detection with dedicated CalculationParserOnly singleton 2026-01-16 20:25:11 +03:00
oleibman e2ead071da Merge pull request #4779 from oleibman/lineending2
Writer/Html Option to Set Line Ending
2026-01-16 06:40:58 +00:00
oleibman 050743f179 Eliminate Redundant Line 2026-01-15 22:37:44 -08:00
xannyprox 2c087ead2a Optimize formula detection in DefaultValueBinder by reusing Calculation singleton
While reviewing the DefaultValueBinder::dataTypeForValue() method, I noticed that a new Calculation instance is being created for every single cell validation.

Since the Calculation class is quite heavy (initializing components like CyclicReferenceStack and BranchPruner), instantiating it repeatedly causes unnecessary memory and CPU overhead, especially during bulk imports of large spreadsheets.

Changes:

    Switched from new Calculation() to Calculation::getInstance() to leverage the existing singleton.

    Added state preservation logic for branchPruning to ensure the shared instance remains consistent for other parts of the application.

    Wrapped the logic in a finally block to guarantee that the pruning state is restored regardless of success or failure.

No changes were made to the public API, so this is fully backward compatible. I've also added a unit test to verify that formula detection and state isolation work as expected.

Tests:

    Added tests/PhpSpreadsheetTests/Cell/DefaultValueBinderTest.php.
2026-01-15 03:06:28 +03:00
oleibman 561308b307 Misused and Deprecated Html Attributes
The table attributes `border`, `cellspacing`, and `cellpadding` are used in Html Writer. They are deprecated in Html5 in favor of css attributes. Further, their use is redundant or outright wrong. Their use is eliminated. A sample is added to show how equivalents might be used.
2026-01-12 23:22:03 -08:00
oleibman dbd353c90e Php-cs-fixer Error 2026-01-11 09:18:08 -08:00
oleibman 4a8f2a8f0c Witer/Html Option to Set Line Ending
It currently always uses PHP_EOL, which, of course, works, but you get slightly different results in Windows and Unix. User can now set line ending to `\n` or `\r\n` to ensure consistent results regardless of environment. Default remains PHP_EOL. We already do this for CSV.
2026-01-11 08:57:02 -08:00
oleibman 48f2fe37d6 Merge pull request #4777 from oleibman/changelog20260109
Update Changelog For New Release
5.4.0
2026-01-11 04:52:00 +00:00
oleibman 79208b34f4 Update Changelog For New Release 2026-01-10 20:43:53 -08:00
oleibman 2a60b97508 Merge pull request #4775 from oleibman/issue4773
Mpdf Styling of Multi-Line Strings
2026-01-09 17:40:05 +00:00
oleibman 69d337ded7 Update CHANGELOG.md 2026-01-09 09:35:32 -08:00
oleibman 60d0afd501 Merge pull request #4772 from oleibman/issue606
More Consistent Handling of Unsupported Functions
2026-01-09 16:32:55 +00:00
oleibman c0b28c45fd Merge branch 'master' into issue606 2026-01-09 08:30:01 -08:00
oleibman d9a4765bd5 Update CHANGELOG.md 2026-01-09 08:29:14 -08:00
oleibman a9d60a10df Remove Trailing Space 2026-01-07 22:02:53 -08:00
oleibman 53fe59626a Merge branch 'master' into issue4773 2026-01-07 21:41:33 -08:00
oleibman f3f09bc9a6 Mpdf Styling of Multi-Line Strings
Fix #4773. Mpdf is applying cell style only to the first line of a multi-line string. Explanation - Html Writer replaces newlines with `<br />` by calling `nl2br`, at least that was the intention. However, `nl2br` doesn't replace - it prepends. This doesn't do any harm in Html, Dompdf, or Tcpdf. However, Mpdf is known to be subject to occasional regexp backtracking errors when parsing large blocks of html. To avoid this, we chunk the html by splitting it at newlines, but this causes the styling to be lost for rich text elements following a newline.

The solution to this problem seems easy enough - replace `nl2br` with a routine that replaces rather than prepends. Unfortunately, Html Reader needs the newlines intact in order to parse things correctly. So a solution where the `nl2br` calls are used for non-Mpdf and using a substitute routine for Mpdf ought to work. However, doing my testing uncovered another bug - rich text with newlines can result in multiple `<br />` tags (see new Html test). The solution to this is a bit kludgey, but it does seem to fix both the Mpdf problem and the newly discovered Html problem. It will also tend to avoid the very minor problem of generating different line endings on Windows systems.
2026-01-07 21:34:34 -08:00
oleibman c69b747ec8 Merge pull request #4677 from raziel057/drawing-in-cell
Support Drawing in cell Read & Write
2026-01-07 04:30:38 +00:00
oleibman 83513c2cd5 Update Changelog 2026-01-06 20:17:28 -08:00
oleibman c96f9a7612 Coverage Tweak 2026-01-06 13:53:06 -08:00
oleibman 002f618416 More Tests and a Sample 2026-01-06 11:50:31 -08:00
Thomas Lallement 059a75880e Merge branch 'master' into drawing-in-cell 2026-01-06 09:38:09 +01:00
Thomas Lallement 9e639408ae CS Fixes 2026-01-06 09:15:49 +01:00
oleibman ccb5f05b9f Merge pull request #4771 from oleibman/hyperlinkcell
Fix Some Hyperlink Problems
2026-01-06 01:52:29 +00:00
oleibman 29908b95a7 Merge branch 'master' into hyperlinkcell 2026-01-05 17:42:12 -08:00
oleibman 2e51d0755e Update CHANGELOG.md 2026-01-05 17:41:16 -08:00
oleibman e698017d11 Merge pull request #4770 from oleibman/axisshadows
Chart Shadow `kx` and `ky`
2026-01-06 01:31:51 +00:00
oleibman ed51a473e2 Update CHANGELOG.md 2026-01-05 17:29:02 -08:00
oleibman 5a3305f28b More Consistent Handling of Unsupported Functions
Fix #606 (marked stale in 2018, but now reopened). User reports that, under some circumstances, `oldCalculatedValue` will be used as the result when an unsupported function is part of a formula (this seems like a sensible treatment), but, in other cases, the unsupported function is ignored, or has an unpredictable effect on the result.

To explain a little further, an unsupported function will return a "magic" value which will eventually be replaced by `oldCalculatedValue` (or null if there is none). However, the magic value is not being propagated. In the issue, there are 3 places where this propagation is currently omitted - when performing a binary comparison, when evaluating the condition in the `IF` function, and when evaluating the `SUM` function. This PR causes propagation to happen in all of those places, and a few others (MIN, MINA, MAX, MAXA, ROWS, COLUMNS). I would not be surprised to have missed one or more of the other situations.
2026-01-05 16:58:26 -08:00
Thomas Lallement 064f084580 Add coverage for BaseDrawing::isInCell method 2026-01-05 10:53:23 +01:00
Thomas Lallement 4d7c060897 Fix path of fixture images 2026-01-05 10:51:51 +01:00
Thomas Lallement 2e0fb13300 Fix Metadata and add test coverage 2026-01-05 10:39:48 +01:00
oleibman e33834b4ea Merge pull request #4769 from oleibman/issue918
Xls Writer and Empty RichText
2026-01-04 02:58:58 +00:00
oleibman 33007a361f Merge branch 'master' into issue918 2026-01-03 18:56:06 -08:00
oleibman 653a036510 Update CHANGELOG.md 2026-01-03 18:55:31 -08:00
oleibman 0a214f8d45 Merge pull request #4768 from oleibman/issue4766
Strings That Look Like Huge Floating Point Numbers
2026-01-04 02:24:56 +00:00
oleibman b6524f0640 Merge branch 'master' into issue4766 2026-01-03 18:18:34 -08:00
oleibman a140c3263c Update CHANGELOG.md 2026-01-03 18:17:53 -08:00
oleibman 77b6a96061 Merge pull request #4767 from oleibman/issue1319
Rowspan in Html
2026-01-04 02:02:31 +00:00
oleibman dade50db8d Update CHANGELOG.md 2026-01-03 17:59:34 -08:00
oleibman b89b4d920e Make Tests non-Static 2026-01-03 15:56:38 -08:00