From d1ccfc6f17f77dd34882c1ae847fc551aff39a05 Mon Sep 17 00:00:00 2001 From: Sergey Shuchkin Date: Fri, 26 Feb 2021 21:39:13 +0600 Subject: [PATCH] Added PHP Datetime object values in a cells --- README.md | 6 ++++-- datatypes.png | Bin 17528 -> 20011 bytes src/SimpleXLSXGen.php | 13 ++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 40830a0..69acf86 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# SimpleXLSXGen class 0.9.24 (Official) +# SimpleXLSXGen class 0.9.25 (Official) [](https://www.patreon.com/shuchkin) [](https://github.com/shuchkin/simplexlsxgen/blob/master/license.md) [](https://github.com/shuchkin/simplexlsxgen/stargazers) [](https://github.com/shuchkin/simplexlsxgen/network) [](https://github.com/shuchkin/simplexlsxgen/issues) Export data to Excel XLSX file. PHP XLSX generator. No external tools and libraries.
@@ -40,8 +40,9 @@ $data = [ ['Datetime', '2020-05-20 02:38:00'], ['Date','2020-05-20'], ['Time','02:38:00'], + ['Datetime PHP', new DateTime('2021-02-06 21:07:00')], ['String', 'Long UTF-8 String in autoresized column'], - ['Disable Type Detection', "\0".'2020-10-04 16:02:00'] + ['RAW string', "\0".'2020-10-04 16:02:00'] ]; SimpleXLSXGen::fromArray( $data )->saveAs('datatypes.xlsx'); ``` @@ -72,6 +73,7 @@ SimpleXLSXGen::fromArray( $data )->saveAs('debug.xlsx'); ## History +v0.9.25 (2021-02-26) Added PHP Datetime object values in a cells v0.9.24 (2021-02-26) * Percent
v0.9.23 (2021-01-25) Fix local floats in XML
v0.9.22 (2020-11-04) Added multiple sheets support, thx [Savino59](https://github.com/Savino59), class ready for extend now
diff --git a/datatypes.png b/datatypes.png index 55a92deb58cee7362a236a89c0b900f81e49493d..e9180448c799eb51ccc645cc24f6b23957231edc 100644 GIT binary patch literal 20011 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 literal 17528 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 diff --git a/src/SimpleXLSXGen.php b/src/SimpleXLSXGen.php index 0533ff9..48e8ac2 100644 --- a/src/SimpleXLSXGen.php +++ b/src/SimpleXLSXGen.php @@ -351,9 +351,6 @@ class SimpleXLSXGen { if ( $v === null || $v === '' ) { continue; } - $vl = mb_strlen( (string) $v ); - - $COL[ $CUR_COL ] = max( $vl, $COL[ $CUR_COL ] ); $cname = $this->num2name($CUR_COL) . $CUR_ROW; @@ -361,6 +358,8 @@ class SimpleXLSXGen { if ( is_string($v) ) { + $vl = mb_strlen( $v ); + if ( $v === '0' || preg_match( '/^[-+]?[1-9]\d{0,14}$/', $v ) ) { // Integer as General $cv = ltrim( $v, '+' ); if ( $vl > 10 ) { @@ -412,13 +411,21 @@ class SimpleXLSXGen { } } } elseif ( is_int( $v ) ) { + $vl = mb_strlen( (string) $v ); $cv = $v; } elseif ( is_float( $v ) ) { + $vl = mb_strlen( (string) $v ); $cv = $v; + } elseif ( $v instanceof DateTime ) { + $vl = 16; + $cv = $this->date2excel( $v->format('Y'), $v->format('m'), $v->format('d'), $v->format('H'), $v->format('i'), $v->format('s') ); + $cs = 6; // [22] m/d/yy h:mm } else { continue; } + $COL[ $CUR_COL ] = max( $vl, $COL[ $CUR_COL ] ); + $row .= '' .($ct === 'inlineStr' ? ''.$cv.'' : '' . $cv . '')."\r\n"; }