From 8c9e7439341e5ad4a86696010caad51065fe70f0 Mon Sep 17 00:00:00 2001 From: Owen Leibman Date: Wed, 22 Sep 2021 09:51:25 -0700 Subject: [PATCH 1/2] Xlsx Reader Better Namespace Handling Phase 1 Second Bugfix See issue #2301. The main problem in that issue had been introduced with 18.0 and had already ben fixed in master. However there was a subsequent problem that had been introduced in master, an undotted i uncrossed t with namespace handling. When using namespaces, need to call attributes() to access the attributes before trying to access them directly. Failure to do so in parseRichText caused fonts declared in Rich Text elements to be ignored. --- src/PhpSpreadsheet/Reader/Xlsx.php | 77 +++++++++++------- .../Reader/Xlsx/Issue2301Test.php | 27 ++++++ tests/data/Reader/XLSX/issue.2301.xlsx | Bin 0 -> 85327 bytes 3 files changed, 74 insertions(+), 30 deletions(-) create mode 100644 tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php create mode 100644 tests/data/Reader/XLSX/issue.2301.xlsx diff --git a/src/PhpSpreadsheet/Reader/Xlsx.php b/src/PhpSpreadsheet/Reader/Xlsx.php index 2bff7e1ed5..245c27d2d5 100644 --- a/src/PhpSpreadsheet/Reader/Xlsx.php +++ b/src/PhpSpreadsheet/Reader/Xlsx.php @@ -1675,46 +1675,63 @@ private function parseRichText(?SimpleXMLElement $is) } else { $objText = $value->createTextRun(StringHelper::controlCharacterOOXML2PHP((string) $run->t)); - if (isset($run->rPr->rFont['val'])) { - $objText->getFont()->setName((string) $run->rPr->rFont['val']); + $attr = $run->rPr->rFont->attributes(); + if (isset($attr['val'])) { + $objText->getFont()->setName((string) $attr['val']); } - if (isset($run->rPr->sz['val'])) { - $objText->getFont()->setSize((float) $run->rPr->sz['val']); + $attr = $run->rPr->sz->attributes(); + if (isset($attr['val'])) { + $objText->getFont()->setSize((float) $attr['val']); } if (isset($run->rPr->color)) { $objText->getFont()->setColor(new Color(Styles::readColor($run->rPr->color))); } - if ( - (isset($run->rPr->b['val']) && self::boolean((string) $run->rPr->b['val'])) || - (isset($run->rPr->b) && !isset($run->rPr->b['val'])) - ) { - $objText->getFont()->setBold(true); - } - if ( - (isset($run->rPr->i['val']) && self::boolean((string) $run->rPr->i['val'])) || - (isset($run->rPr->i) && !isset($run->rPr->i['val'])) - ) { - $objText->getFont()->setItalic(true); + if (isset($run->rPr->b)) { + $attr = $run->rPr->b->attributes(); + if ( + (isset($attr['val']) && self::boolean((string) $attr['val'])) || + (!isset($attr['val'])) + ) { + $objText->getFont()->setBold(true); + } } - if (isset($run->rPr->vertAlign, $run->rPr->vertAlign['val'])) { - $vertAlign = strtolower((string) $run->rPr->vertAlign['val']); - if ($vertAlign == 'superscript') { - $objText->getFont()->setSuperscript(true); + if (isset($run->rPr->i)) { + $attr = $run->rPr->i->attributes(); + if ( + (isset($attr['val']) && self::boolean((string) $attr['val'])) || + (!isset($attr['val'])) + ) { + $objText->getFont()->setItalic(true); } - if ($vertAlign == 'subscript') { - $objText->getFont()->setSubscript(true); + } + if (isset($run->rPr->vertAlign)) { + $attr = $run->rPr->vertAlign->attributes(); + if (isset($attr['val'])) { + $vertAlign = strtolower((string) $attr['val']); + if ($vertAlign == 'superscript') { + $objText->getFont()->setSuperscript(true); + } + if ($vertAlign == 'subscript') { + $objText->getFont()->setSubscript(true); + } } } - if (isset($run->rPr->u) && !isset($run->rPr->u['val'])) { - $objText->getFont()->setUnderline(\PhpOffice\PhpSpreadsheet\Style\Font::UNDERLINE_SINGLE); - } elseif (isset($run->rPr->u, $run->rPr->u['val'])) { - $objText->getFont()->setUnderline((string) $run->rPr->u['val']); + if (isset($run->rPr->u)) { + $attr = $run->rPr->u->attributes(); + if (!isset($attr['val'])) { + $objText->getFont()->setUnderline(\PhpOffice\PhpSpreadsheet\Style\Font::UNDERLINE_SINGLE); + } else { + $objText->getFont()->setUnderline((string) $attr['val']); + } } - if ( - (isset($run->rPr->strike['val']) && self::boolean((string) $run->rPr->strike['val'])) || - (isset($run->rPr->strike) && !isset($run->rPr->strike['val'])) - ) { - $objText->getFont()->setStrikethrough(true); + if (isset($run->rPr->strike)) { + $attr = $run->rPr->strike->attributes(); + if ( + (isset($attr['val']) && self::boolean((string) $attr['val'])) || + (!isset($attr['val'])) + ) { + $objText->getFont()->setStrikethrough(true); + } } } } diff --git a/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php new file mode 100644 index 0000000000..7507ab47ea --- /dev/null +++ b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php @@ -0,0 +1,27 @@ +getActiveSheet(); + $value = $sheet->getCell('B45')->getValue(); + self::assertInstanceOf(RichText::class, $value); + $richtext = $value->getRichTextElements(); + $font = $richtext[1]->getFont(); + self::assertNotNull($font); + self::assertSame('Arial CE', $font->getName()); + self::assertEquals(9, $font->getSize()); + } +} diff --git a/tests/data/Reader/XLSX/issue.2301.xlsx b/tests/data/Reader/XLSX/issue.2301.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..befbe8fcc2fefa21b4caaf33ddd6acdecc44cd52 GIT binary patch literal 85327 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 literal 0 HcmV?d00001 From ba1ab68413e6c4c0581dff7d56868d220e0778fc Mon Sep 17 00:00:00 2001 From: Owen Leibman Date: Thu, 23 Sep 2021 08:30:23 -0700 Subject: [PATCH 2/2] Add An Assertion Addresses problem in 2301 that had already been fixed. --- CHANGELOG.md | 1 + tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1b8789656..96cb58d8c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org). - Phase 1 of better namespace handling for Xlsx, resolving many open issues. [PR #2173](https://github.com/PHPOffice/PhpSpreadsheet/pull/2173) [PR #2204](https://github.com/PHPOffice/PhpSpreadsheet/pull/2204) +[PR #2303](https://github.com/PHPOffice/PhpSpreadsheet/pull/2303) - Add ability to extract images if source is a URL. [Issue #1997](https://github.com/PHPOffice/PhpSpreadsheet/issues/1997) [PR #2072](https://github.com/PHPOffice/PhpSpreadsheet/pull/2072) - Support for passing flags in the Reader `load()` and Writer `save()`methods, and through the IOFactory, to set behaviours. [PR #2136](https://github.com/PHPOffice/PhpSpreadsheet/pull/2136) - See [documentation](https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-and-writing-to-file/) for details diff --git a/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php index 7507ab47ea..4484b9e095 100644 --- a/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php +++ b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2301Test.php @@ -22,6 +22,7 @@ public static function testReadRichText(): void $font = $richtext[1]->getFont(); self::assertNotNull($font); self::assertSame('Arial CE', $font->getName()); - self::assertEquals(9, $font->getSize()); + self::assertSame(9.0, $font->getSize()); + self::assertSame('protected', $sheet->getCell('BT10')->getStyle()->getProtection()->getHidden()); } }