From 519f341a44572c100d002f5ad773f30b52668dc1 Mon Sep 17 00:00:00 2001
From: Jephte Clain <Jephte.Clain@univ-reunion.fr>
Date: Tue, 4 Mar 2025 12:15:58 +0400
Subject: [PATCH] application patch page_order

---
 .../src/Writer/XLSX/Helper/FileSystemHelper.php       |  4 ++++
 openspout4/src/Writer/XLSX/Options/PageOrder.php      | 11 +++++++++++
 openspout4/src/Writer/XLSX/Options/PageSetup.php      |  1 +
 3 files changed, 16 insertions(+)
 create mode 100644 openspout4/src/Writer/XLSX/Options/PageOrder.php

diff --git a/openspout4/src/Writer/XLSX/Helper/FileSystemHelper.php b/openspout4/src/Writer/XLSX/Helper/FileSystemHelper.php
index c9803d1..5539b6a 100644
--- a/openspout4/src/Writer/XLSX/Helper/FileSystemHelper.php
+++ b/openspout4/src/Writer/XLSX/Helper/FileSystemHelper.php
@@ -517,6 +517,10 @@ final class FileSystemHelper implements FileSystemWithRootFolderHelperInterface
             $xml .= " paperSize=\"{$pageSetup->paperSize->value}\"";
         }
 
+        if (null !== $pageSetup->pageOrder) {
+            $xml .= " pageOrder=\"{$pageSetup->pageOrder->value}\"";
+        }
+
         if (null !== $pageSetup->fitToHeight) {
             $xml .= " fitToHeight=\"{$pageSetup->fitToHeight}\"";
         }
diff --git a/openspout4/src/Writer/XLSX/Options/PageOrder.php b/openspout4/src/Writer/XLSX/Options/PageOrder.php
new file mode 100644
index 0000000..ceb716b
--- /dev/null
+++ b/openspout4/src/Writer/XLSX/Options/PageOrder.php
@@ -0,0 +1,11 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenSpout\Writer\XLSX\Options;
+
+enum PageOrder: string
+{
+    case DOWN_THEN_OVER = 'downThenOver';
+    case OVER_THEN_DOWN = 'overThenDown';
+}
diff --git a/openspout4/src/Writer/XLSX/Options/PageSetup.php b/openspout4/src/Writer/XLSX/Options/PageSetup.php
index 860312c..42fec69 100644
--- a/openspout4/src/Writer/XLSX/Options/PageSetup.php
+++ b/openspout4/src/Writer/XLSX/Options/PageSetup.php
@@ -13,6 +13,7 @@ final readonly class PageSetup
         public ?PaperSize $paperSize,
         public ?int $fitToHeight = null,
         public ?int $fitToWidth = null,
+        public ?PageOrder $pageOrder = null,
     ) {
         $this->fitToPage = null !== $fitToHeight || null !== $fitToWidth;
     }