From dcccd63ee376805653899c1b6903c6a99d52bd07 Mon Sep 17 00:00:00 2001
From: oleibman <10341515+oleibman@users.noreply.github.com>
Date: Thu, 26 Oct 2023 12:06:36 -0700
Subject: [PATCH] Theme File Missing But Referenced in Spreadsheet (#3772)
* Theme File Missing But Referenced in Spreadsheet
Fix #3770. A rels file points to a non-existent theme file in the spreadsheet. In other similar cases (e.g. PR #3771), Excel opens such a spreadsheet, but with an error pop-up. Not so with this file; it just opens the spreadsheet without the pop-up. PhpSpreadsheet will now account for this unusual situation as well.
* Update CHANGELOG.md
---
CHANGELOG.md | 1 +
src/PhpSpreadsheet/Reader/Xlsx.php | 3 ++
.../Reader/Xlsx/Issue3770Test.php | 47 ++++++++++++++++++
tests/data/Reader/XLSX/issue.3770.xlsx | Bin 0 -> 11946 bytes
4 files changed, 51 insertions(+)
create mode 100644 tests/PhpSpreadsheetTests/Reader/Xlsx/Issue3770Test.php
create mode 100644 tests/data/Reader/XLSX/issue.3770.xlsx
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 240454ef75..05dda2d384 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -67,6 +67,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
- Break Some Circular References. [PR #3716](https://github.com/PHPOffice/PhpSpreadsheet/pull/3716) [PR #3707](https://github.com/PHPOffice/PhpSpreadsheet/pull/3707)
- Missing Font Index in Some Xls. [PR #3734](https://github.com/PHPOffice/PhpSpreadsheet/pull/3734)
- Load Tables even with READ_DATA_ONLY. [PR #3726](https://github.com/PHPOffice/PhpSpreadsheet/pull/3726)
+- Theme File Missing but Referenced in Spreadsheet. [Issue #3770](https://github.com/PHPOffice/PhpSpreadsheet/issues/3770) [PR #3772](https://github.com/PHPOffice/PhpSpreadsheet/pull/3772)
## 1.29.0 - 2023-06-15
diff --git a/src/PhpSpreadsheet/Reader/Xlsx.php b/src/PhpSpreadsheet/Reader/Xlsx.php
index 3c2b4f244a..99fb3937d5 100644
--- a/src/PhpSpreadsheet/Reader/Xlsx.php
+++ b/src/PhpSpreadsheet/Reader/Xlsx.php
@@ -427,6 +427,9 @@ protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
}
switch ($rel['Type']) {
case "$xmlNamespaceBase/theme":
+ if (!$this->fileExistsInArchive($zip, "xl/{$relTarget}")) {
+ break; // issue3770
+ }
$themeOrderArray = ['lt1', 'dk1', 'lt2', 'dk2'];
$themeOrderAdditional = count($themeOrderArray);
diff --git a/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue3770Test.php b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue3770Test.php
new file mode 100644
index 0000000000..469c02e513
--- /dev/null
+++ b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue3770Test.php
@@ -0,0 +1,47 @@
+load(self::$testbook);
+ $sheet = $spreadsheet->getActiveSheet();
+ // Assert anything to confirm read succeeded
+ self::assertSame('Универсальный передаточный документ', $sheet->getCell('A1')->getValue());
+ $spreadsheet->disconnectWorksheets();
+ }
+}
diff --git a/tests/data/Reader/XLSX/issue.3770.xlsx b/tests/data/Reader/XLSX/issue.3770.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..415f6691d3457ca28443ecbf32a38d9ea4fa07cf
GIT binary patch
literal 11946
zcmbVyWk6iZvMv%Ff(CbYcbDMqIs|tHm%&4DcY=E$5MXeE1q}|tf
EdZcKvp-SHH
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
literal 0
HcmV?d00001