Fix Xlsx reader overriding manually set number format with builtin number format (#1805)

This commit is contained in:
Richard van Velzen 2021-01-28 21:46:36 +01:00 committed by GitHub
parent e1ed52ecb6
commit 87c8e95ae9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 2 deletions

View File

@ -488,7 +488,7 @@ class Xlsx extends BaseReader
} }
if (!$this->readDataOnly && $xmlStyles) { if (!$this->readDataOnly && $xmlStyles) {
foreach ($xmlStyles->cellXfs->xf as $xf) { foreach ($xmlStyles->cellXfs->xf as $xf) {
$numFmt = NumberFormat::FORMAT_GENERAL; $numFmt = null;
if ($xf['numFmtId']) { if ($xf['numFmtId']) {
if (isset($numFmts)) { if (isset($numFmts)) {
@ -503,6 +503,7 @@ class Xlsx extends BaseReader
// But there's a lot of naughty homebrew xlsx writers that do use "reserved" id values that aren't actually used // But there's a lot of naughty homebrew xlsx writers that do use "reserved" id values that aren't actually used
// So we make allowance for them rather than lose formatting masks // So we make allowance for them rather than lose formatting masks
if ( if (
$numFmt === null &&
(int) $xf['numFmtId'] < 164 && (int) $xf['numFmtId'] < 164 &&
NumberFormat::builtInFormatCode((int) $xf['numFmtId']) !== '' NumberFormat::builtInFormatCode((int) $xf['numFmtId']) !== ''
) { ) {
@ -515,7 +516,7 @@ class Xlsx extends BaseReader
} }
$style = (object) [ $style = (object) [
'numFmt' => $numFmt, 'numFmt' => $numFmt === null ? NumberFormat::FORMAT_GENERAL : $numFmt,
'font' => $xmlStyles->fonts->font[(int) ($xf['fontId'])], 'font' => $xmlStyles->fonts->font[(int) ($xf['fontId'])],
'fill' => $xmlStyles->fills->fill[(int) ($xf['fillId'])], 'fill' => $xmlStyles->fills->fill[(int) ($xf['fillId'])],
'border' => $xmlStyles->borders->border[(int) ($xf['borderId'])], 'border' => $xmlStyles->borders->border[(int) ($xf['borderId'])],