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) {
foreach ($xmlStyles->cellXfs->xf as $xf) {
$numFmt = NumberFormat::FORMAT_GENERAL;
$numFmt = null;
if ($xf['numFmtId']) {
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
// So we make allowance for them rather than lose formatting masks
if (
$numFmt === null &&
(int) $xf['numFmtId'] < 164 &&
NumberFormat::builtInFormatCode((int) $xf['numFmtId']) !== ''
) {
@ -515,7 +516,7 @@ class Xlsx extends BaseReader
}
$style = (object) [
'numFmt' => $numFmt,
'numFmt' => $numFmt === null ? NumberFormat::FORMAT_GENERAL : $numFmt,
'font' => $xmlStyles->fonts->font[(int) ($xf['fontId'])],
'fill' => $xmlStyles->fills->fill[(int) ($xf['fillId'])],
'border' => $xmlStyles->borders->border[(int) ($xf['borderId'])],