From ed34b1e093146727764f2c82ff3ca181a469c64d Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Fri, 29 Nov 2024 16:52:20 +0400 Subject: [PATCH] maj traitement des dates --- src/spout/SpoutBuilder.php | 47 +++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/spout/SpoutBuilder.php b/src/spout/SpoutBuilder.php index ba82a1b..976463a 100644 --- a/src/spout/SpoutBuilder.php +++ b/src/spout/SpoutBuilder.php @@ -1,6 +1,7 @@ setDefaultColumnWidth(10.5); @@ -158,7 +164,7 @@ class SpoutBuilder extends AbstractBuilder { $this->setSheet($params["wsname"] ?? static::WSNAME, $sheetParams); } - const SS_TYPE_ODS = 0, SS_TYPE_XLSX = 1; + const SS_TYPE_ODS = 1, SS_TYPE_XLSX = 2; /** @var int type de fichier généré */ protected int $ssType; @@ -214,10 +220,10 @@ class SpoutBuilder extends AbstractBuilder { case self::SS_TYPE_XLSX: # appliquer les paramètres de la feuille $this->apply_params($ss, $sheetParams, ref_params_xlsx::SHEET); - # appliquer les paramètres de la vue de la feuille - $sheetViewParams =& $sheetParams["view"]; - $sheetViewParams["->setFreezeRow"] ??= 2; - $ws->setSheetView($this->apply_params(new SheetView(), $sheetViewParams, ref_params_xlsx::SHEET_VIEW)); + $this->ensure_style($sheetParams["default_style"]); + $this->ensure_style($sheetParams["header_style"]); + $this->ensure_style($sheetParams["odd_style"]); + $this->ensure_style($sheetParams["even_style"]); self::set_defaults($sheetParams, "header_style", [ "font" => ["bold" => true], "bg_color" => "gray", @@ -225,10 +231,10 @@ class SpoutBuilder extends AbstractBuilder { self::set_defaults($sheetParams, "even_style", [ "bg_color" => "light_gray", ]); - $this->ensure_style($sheetParams["default_style"]); - $this->ensure_style($sheetParams["header_style"]); - $this->ensure_style($sheetParams["odd_style"]); - $this->ensure_style($sheetParams["even_style"]); + # appliquer les paramètres de la vue de la feuille + $sheetViewParams =& $sheetParams["view"]; + $sheetViewParams["->setFreezeRow"] ??= 2; + $ws->setSheetView($this->apply_params(new SheetView(), $sheetViewParams, ref_params_xlsx::SHEET_VIEW)); break; } $this->sheetParams = $sheetParams; @@ -266,7 +272,15 @@ class SpoutBuilder extends AbstractBuilder { } protected function isDate(&$value, &$style): bool { - if (CellTypeHelper::isDateTimeOrDateInterval($value)) { + if ($value instanceof Date) { + $style ??= new Style(); + $style->setFormat(self::DATE_FORMAT); + return true; + } elseif ($value instanceof DateTime) { + $style ??= new Style(); + $style->setFormat(self::DATETIME_FORMAT); + return true; + } elseif (CellTypeHelper::isDateTimeOrDateInterval($value)) { $style ??= new Style(); $style->setFormat(self::DATE_FORMAT); return true; @@ -289,10 +303,10 @@ class SpoutBuilder extends AbstractBuilder { function _write(array $row, ?array $colsStyle=null, ?array $rowStyle=null): void { $sheetParams = $this->sheetParams; - $defaultStyle = $sheetParams["default_style"]; - $headerStyle = $sheetParams["header_style"]; - $oddStyle = $sheetParams["odd_style"]; - $evenStyle = $sheetParams["even_style"]; + $defaultStyle = $sheetParams["default_style"] ?? null; + $headerStyle = $sheetParams["header_style"] ?? null; + $oddStyle = $sheetParams["odd_style"] ?? null; + $evenStyle = $sheetParams["even_style"] ?? null; $cells = []; foreach ($row as $key => $col) { @@ -319,6 +333,7 @@ class SpoutBuilder extends AbstractBuilder { $rowStyle ??= $oddStyle; } $rowStyle ??= $defaultStyle; + self::ensure_style($rowStyle); $this->ss->addRow(WriterEntityFactory::createRow($cells, $rowStyle)); }