Merge remote-tracking branch 'origin/master'

# Conflicts:
#	tests/data/Style/NumberFormat.php
This commit is contained in:
MarkBaker 2019-07-14 19:39:44 +02:00
commit effa5175ed
5 changed files with 19 additions and 29 deletions

View File

@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
### Fixed
- Fix number format masks containing named colours that were being misinterpreted as date formats; and add support for masks that fully replace the value with a full text string [Issue #1009](https://github.com/PHPOffice/PhpSpreadsheet/issues/1009)
- Stricter-typed comparison testing in COUNTIF() and COUNTIFS() evaluation [Issue #1046](https://github.com/PHPOffice/PhpSpreadsheet/issues/1046)
- COUPNUM should not return zero when settlement is in the last period - [Issue #1020](https://github.com/PHPOffice/PhpSpreadsheet/issues/1020) and [PR #1021](https://github.com/PHPOffice/PhpSpreadsheet/pull/1021)

View File

@ -6,6 +6,17 @@ use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
class Color extends Supervisor
{
const NAMED_COLORS = [
'Black',
'White',
'Red',
'Green',
'Blue',
'Yellow',
'Magenta',
'Cyan',
];
// Colors
const COLOR_BLACK = 'FF000000';
const COLOR_WHITE = 'FFFFFFFF';

View File

@ -660,7 +660,9 @@ class NumberFormat extends Supervisor
// Save format with color information for later use below
$formatColor = $format;
// Strip colour information
$color_regex = '/\[(' . implode('|', Color::NAMED_COLORS) . ')\]/';
$format = preg_replace($color_regex, '', $format);
// Let's begin inspecting the format and converting the value to a formatted string
// Check for date/time characters (not inside quotes)
@ -668,10 +670,9 @@ class NumberFormat extends Supervisor
// datetime format
self::formatAsDate($value, $format);
} else {
// Strip color information
$color_regex = '/^\\[[a-zA-Z]+\\]/';
$format = preg_replace($color_regex, '', $format);
if (preg_match('/%$/', $format)) {
if (substr($format, 0, 1) === '"' && substr($format, -1, 1) === '"') {
$value = substr($format, 1, -1);
} elseif (preg_match('/%$/', $format)) {
// % number format
self::formatAsPercentage($value, $format);
} else {

View File

@ -38,11 +38,6 @@ return [
-70,
'#,##0;[Red]-#,##0'
],
[
'70',
-70,
'#,##0;[Red]#,##0'
],
[
'0.1',
0.10000000000000001,

View File

@ -77,22 +77,4 @@ return [
1.1354166666667,
'[h]:mm',
],
// Percentage
[
'12%',
0.12,
'0%',
],
// Simple color
[
'12345',
12345,
'[Green]General',
],
// Multiple colors
[
'12345',
12345,
'[Blue]0;[Red]0',
],
];