Commit Graph

6605 Commits

Author SHA1 Message Date
^^ 8a98547e28 Cover encrypted XLSX file decryption errors 2026-09-02 17:20:56 +08:00
^^ 08e59dcc6d Add encrypted XLSX streaming coverage 2026-09-02 16:48:43 +08:00
^^ 44a82a7ab6 Fix encrypted XLSX reader review findings 2026-09-02 16:31:14 +08:00
n3crosis 88af36ab36 Merge branch 'PHPOffice:master' into feature/add-xlsx-file-encryption 2026-09-02 16:10:31 +08:00
oleibman f3b8124201 Merge pull request #4982 from oleibman/stan82
Update Phpstan
2026-09-02 05:57:13 +00:00
oleibman e3e21c835e Update CHANGELOG.md 2026-09-01 22:53:25 -07:00
oleibman 329a1b4730 Merge branch 'master' into stan82 2026-09-01 22:39:41 -07:00
oleibman 9e11effcad Update Phpstan
Also address problems reported in PR #4974 when Phpstan was run with an earlier Php version than our CI uses.
2026-09-01 22:24:34 -07:00
oleibman 1fcf9c5966 Merge pull request #4979 from PHPOffice/dependabot/composer/friendsofphp/php-cs-fixer-3.95.23
Bump friendsofphp/php-cs-fixer from 3.95.17 to 3.95.23
2026-09-02 05:21:40 +00:00
oleibman 2ad65fccb5 Merge pull request #4968 from sapientpro/feature/table-header-row-needs-a-data-row
Xlsx writer: a header-row table takes the empty row below it
2026-09-02 05:08:05 +00:00
oleibman df95a8665e Merge pull request #4967 from DIReports/fix/vlookup-column-range-empty-end-column
Fix VLOOKUP #N/A with whole-column ranges when the end column contains no data
2026-09-02 05:05:11 +00:00
dependabot[bot] 51cef407dd Bump friendsofphp/php-cs-fixer from 3.95.17 to 3.95.23
Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.95.17 to 3.95.23.
- [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.95.17...v3.95.23)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-01 11:02:40 +00:00
^^ cd9a6f2d7f Fix Agile encryption fixture stream size 2026-08-25 19:40:33 +08:00
^^ ef17372134 Update changelog for replacement encryption PR 2026-08-25 19:29:49 +08:00
^^ 684ebbb0d8 Fix Agile encryption CFB directory ordering 2026-08-25 19:09:31 +08:00
^^ b624d78289 Add sanitized Agile encryption fixture 2026-08-25 19:09:31 +08:00
^^ c396070d26 Harden Agile XLSX encryption handling 2026-08-25 19:09:31 +08:00
^^ beb86d9937 Document XLSX encryption support 2026-08-25 19:09:31 +08:00
^^ 90767fd23e Cover non-encrypted OLE reader fallback 2026-08-25 19:09:31 +08:00
^^ cc2dc83d01 Cover encryption and OLE error paths 2026-08-25 19:09:31 +08:00
^^ f2642d7ea4 Make encryption integrity test deterministic 2026-08-25 19:09:31 +08:00
^^ cc7a19f453 Add Agile XLSX file encryption support 2026-08-25 19:09:31 +08:00
oleibman 11645d54ac Merge pull request #4972 from oleibman/doctypo
Minor Documentation Updates
2026-08-22 05:00:37 +00:00
oleibman b9f5c37ec4 Minor Documentation Updates 2026-08-21 21:55:09 -07:00
DIReports 24fe547e0b Remove trailing empty line in ParseFormulaTest 2026-08-20 09:28:59 +02:00
DIReports 2c83284f42 Move whole-column VLOOKUP tests to VLookupTest
Move testVlookupWholeColumnRange and providerVlookupWholeColumnRange
from ParseFormulaTest to the correct location VLookupTest, which
extends AllSetupTeardown. Adapted to use $this->getSpreadsheet()
instead of managing the Spreadsheet lifecycle manually.
2026-08-20 09:27:25 +02:00
oleibman 1f3ed4977a Merge pull request #4960 from oleibman/odsmoredates
Slight Improvement in Ods Reader Date Handling
2026-08-20 03:26:27 +00:00
oleibman 7a4832f59f Update CHANGELOG.md 2026-08-19 20:22:41 -07:00
oleibman f0e7a67c3d Merge branch 'master' into odsmoredates 2026-08-19 20:13:24 -07:00
oleibman 5619827ae9 Merge pull request #4956 from oleibman/odsdrawings2
Drawings for ODS
2026-08-20 03:05:23 +00:00
oleibman 56631e36d3 Merge pull request #4962 from saifulferoz/fix/issue-4454-ods-strings
Ods Writer: do not convert inside string literals
2026-08-20 03:03:56 +00:00
oleibman 16c49b80db Merge pull request #4958 from JulienChavee/master
Avoid getStyle on every setValueExplicit quote-prefix check
2026-08-20 01:10:00 +00:00
Dmytro Kulyk d8c46b48f9 Xlsx writer: a header-row table takes the empty row below it
A table whose range covers its header row alone makes Excel report the
workbook as unreadable; it repairs the file by dropping the table, so the
markup the table was written for is lost without a word.

Excel itself never writes such a table. Asked to make one over a single row
of headings, it writes the table over the row below as well and leaves that
row empty — its `sheetData` holds no cell for it, and the sheet dimension
stays at the headings. The writer now does the same, so what is written is
what Excel would have written.

The row below is taken only when it holds nothing. A table silently
swallowing a row that belongs to something else would change what the sheet
says, so that case throws instead, naming the row in the way.
2026-08-20 00:29:44 +03:00
Julien Chavée 241635d8c9 Fix quote-prefix numeric test to cover clearing behavior 2026-08-19 22:23:29 +02:00
Julien Chavée 5083bf023f Merge branch 'master' into master 2026-08-19 22:01:59 +02:00
Dick Ittmann 67c0c51810 Apply PHP-CS-Fixer formatting 2026-08-19 18:08:34 +02:00
Dick Ittmann f5f02202a5 Remove comment 2026-08-19 18:01:15 +02:00
Dick Ittmann 89c1b9f2fa Move tests to ParseFormulaTest 2026-08-19 18:01:05 +02:00
DIReports 5e91ce2ba2 Fix VLOOKUP #N/A with whole-column ranges when end column has no data
When resolving the end reference of a whole-column range (e.g. $A:$F),
getHighestDataRow($col) was called for the specific end column. If that
column contains no data it returns 1, producing an inverted range such as
A4:F1. This caused VLOOKUP and similar functions to return #N/A when the
formula used a whole-column reference across sheets where data only exists
in the left-hand columns.

Fix: call getHighestDataRow() without a column argument so the overall
highest data row across all columns is used for the end reference.

Reproducer:
  Sheet2!A:D has data in cols A–C only; $A:$F produced A4:F1 → #N/A.
  After fix: A1:F4 → VLOOKUP finds the value correctly.
2026-08-19 16:25:33 +02:00
oleibman 930293a32a Merge pull request #4965 from oleibman/reflect86
Php8.6 Deprecation in Reflection::invokeArgs
2026-08-17 04:01:42 +00:00
oleibman 96d442ab66 Php8.6 Deprecation in Reflection::invokeArgs
Affects one test member, no source code.
2026-08-16 20:55:28 -07:00
oleibman 746430695c Merge branch 'master' into odsmoredates 2026-08-16 20:09:53 -07:00
oleibman 3b6f63599e Handle Dates A Bit Better 2026-08-16 19:41:14 -07:00
saifulislamferoz 416cc52a94 Assert round-tripped values rather than Ods xml
Rewrite the test to write the spreadsheet, read it back and check
getValue() and getCalculatedValue(), following DurationTest, instead of
matching against the generated content.xml.
2026-08-15 15:28:08 +06:00
saifulislamferoz d3ae79dfaf Ods Writer: do not convert inside string literals
convertFormula() ran the cell reference, defined name and function name
conversions over the whole formula, so anything that looked like a reference
inside a quoted string was rewritten: ="THIS IS E1" was written out as
="THIS IS [.E1]". The comma to semicolon replacement had the same problem,
turning =IF(A1>1,"yes, really","no") into a formula whose text reads
"yes; really".

Split the formula on string literals and convert only the segments outside
of them. A range cannot be interrupted by a string literal, so every
reference still sees the context the conversion relies on.

Fixes #4454
2026-08-15 10:28:48 +06:00
oleibman 65b080eef4 Merge pull request #4952 from oleibman/stancomments
Update Phpstan and Tcpdf
2026-08-11 22:20:21 +00:00
oleibman 84de45c2f4 Slight Improvement in Ods Reader Date Handling
Based on recent discussions in #2938, it can do a bit better with date cells that do not use a recognized date style. Improve differentiating `date` from `date+time`, and in deciding whether 4-digit years have been used in the input cells. This causes a change to one test, where the old result incorrectly expected a 2-digit year (you can verify by opening the spreadsheet in question that it is saved with a 4-digit year).
2026-08-11 14:09:12 -07:00
oleibman 3431af42f9 Reorder Some Tests in RowCellIterator
Prevent exceptions in obscure situations.

Accommodate some differences with Ods format saved by Excel.
2026-08-11 11:45:03 -07:00
oleibman 538ede3aa0 Merge pull request #4959 from oleibman/fix861
First Php8.6 (Extremely Minor) Problem
2026-08-11 04:34:49 +00:00
oleibman ffac2cbe29 First Php8.6 (Extremely Minor) Problem
In 8.6, XmlWriter is declared non-serializable. This changes the result of one unit test (we receive a different exception than we had expected).
2026-08-10 21:27:15 -07:00