diff --git a/src/PhpSpreadsheet/Reader/Xlsx/Styles.php b/src/PhpSpreadsheet/Reader/Xlsx/Styles.php index 550c52c0e9..4ec5c27534 100644 --- a/src/PhpSpreadsheet/Reader/Xlsx/Styles.php +++ b/src/PhpSpreadsheet/Reader/Xlsx/Styles.php @@ -94,7 +94,7 @@ private function readNumberFormat(NumberFormat $numfmtStyle, SimpleXMLElement $n } $numfmt = Xlsx::getAttributes($numfmtStyleXml); if ($numfmt->count() > 0 && isset($numfmt['formatCode'])) { - $numfmtStyle->setFormatCode((string) $numfmt['formatCode']); + $numfmtStyle->setFormatCode(self::formatGeneral((string) $numfmt['formatCode'])); } } @@ -183,6 +183,15 @@ public function readAlignmentStyle(Alignment $alignment, SimpleXMLElement $align ); } + private function formatGeneral(string $formatString): string + { + if ($formatString === 'GENERAL') { + $formatString = NumberFormat::FORMAT_GENERAL; + } + + return $formatString; + } + /** * Read style. * @@ -193,7 +202,7 @@ public function readStyle(Style $docStyle, $style): void if ($style->numFmt instanceof SimpleXMLElement) { $this->readNumberFormat($docStyle->getNumberFormat(), $style->numFmt); } else { - $docStyle->getNumberFormat()->setFormatCode($style->numFmt); + $docStyle->getNumberFormat()->setFormatCode(self::formatGeneral((string) $style->numFmt)); } if (isset($style->font)) { diff --git a/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2450Test.php b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2450Test.php new file mode 100644 index 0000000000..d8327b8360 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue2450Test.php @@ -0,0 +1,34 @@ +load($filename); + $sheet = $spreadsheet->getActiveSheet(); + $sheet = $spreadsheet->getActiveSheet(); + $birthYears = [ + 'C2' => $sheet->getCell('C2')->getFormattedValue(), + 'C3' => $sheet->getCell('C3')->getFormattedValue(), + 'C4' => $sheet->getCell('C4')->getFormattedValue(), + ]; + self::assertSame( + [ + 'C2' => '1932', + 'C3' => '1964', + 'C4' => '1988', + ], + $birthYears + ); + + $spreadsheet->disconnectWorksheets(); + } +} diff --git a/tests/data/Reader/XLSX/issue.2450.xlsx b/tests/data/Reader/XLSX/issue.2450.xlsx new file mode 100644 index 0000000000..b6975e4982 Binary files /dev/null and b/tests/data/Reader/XLSX/issue.2450.xlsx differ