From 5dffb4b848c0f25a327079219fd5c1564086bc36 Mon Sep 17 00:00:00 2001 From: Michele Bastione Date: Wed, 25 Feb 2026 21:58:54 +0100 Subject: [PATCH 1/2] Added right-to-left layout exporting capability Added parameter RightToLeft to OpenXmlConfiguration that enables exported worksheets to be read in a right-to-left layout by Excel. --- src/MiniExcel.OpenXml/Constants/WorksheetXml.cs | 3 ++- src/MiniExcel.OpenXml/OpenXmlConfiguration.cs | 1 + src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/MiniExcel.OpenXml/Constants/WorksheetXml.cs b/src/MiniExcel.OpenXml/Constants/WorksheetXml.cs index f0f21498..afdaf49c 100644 --- a/src/MiniExcel.OpenXml/Constants/WorksheetXml.cs +++ b/src/MiniExcel.OpenXml/Constants/WorksheetXml.cs @@ -15,7 +15,8 @@ internal static class WorksheetXml internal const string StartSheetViews = ""; internal const string EndSheetViews = ""; - internal static string StartSheetView( int tabSelected=0, int workbookViewId=0 ) => $""; + internal static string StartSheetView( int tabSelected = 0, int workbookViewId = 0, bool rightToLeft = false) + => $""; internal const string EndSheetView = ""; internal const string StartSheetData = ""; diff --git a/src/MiniExcel.OpenXml/OpenXmlConfiguration.cs b/src/MiniExcel.OpenXml/OpenXmlConfiguration.cs index 0781d278..c5609b94 100644 --- a/src/MiniExcel.OpenXml/OpenXmlConfiguration.cs +++ b/src/MiniExcel.OpenXml/OpenXmlConfiguration.cs @@ -10,6 +10,7 @@ public class OpenXmlConfiguration : MiniExcelBaseConfiguration public bool FillMergedCells { get; set; } public TableStyles TableStyles { get; set; } = TableStyles.Default; public bool AutoFilter { get; set; } = true; + public bool RighToLeft { get; set; } = false; public int FreezeRowCount { get; set; } = 1; public int FreezeColumnCount { get; set; } = 0; public bool EnableConvertByteArray { get; set; } = true; diff --git a/src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs b/src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs index b6650bb8..203de7c8 100644 --- a/src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs +++ b/src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs @@ -68,14 +68,14 @@ private ExcellSheetInfo GetSheetInfos(string sheetName) private string GetSheetViews() { // exit early if no style to write - if (_configuration is { FreezeRowCount: <= 0, FreezeColumnCount: <= 0 }) + if (_configuration is { FreezeRowCount: <= 0, FreezeColumnCount: <= 0, RighToLeft: false }) return string.Empty; var sb = new StringBuilder(); // start sheetViews sb.Append(WorksheetXml.StartSheetViews); - sb.Append(WorksheetXml.StartSheetView()); + sb.Append(WorksheetXml.StartSheetView(rightToLeft: _configuration.RighToLeft)); // Write panes sb.Append(GetPanes()); From f9c0180adab59931550e9a8f7d822ff73916ef82 Mon Sep 17 00:00:00 2001 From: Michele Bastione Date: Wed, 25 Feb 2026 22:42:41 +0100 Subject: [PATCH 2/2] Fix typo --- src/MiniExcel.OpenXml/Constants/WorksheetXml.cs | 2 +- src/MiniExcel.OpenXml/OpenXmlConfiguration.cs | 2 +- src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/MiniExcel.OpenXml/Constants/WorksheetXml.cs b/src/MiniExcel.OpenXml/Constants/WorksheetXml.cs index afdaf49c..0792dd0d 100644 --- a/src/MiniExcel.OpenXml/Constants/WorksheetXml.cs +++ b/src/MiniExcel.OpenXml/Constants/WorksheetXml.cs @@ -16,7 +16,7 @@ internal static class WorksheetXml internal const string EndSheetViews = ""; internal static string StartSheetView( int tabSelected = 0, int workbookViewId = 0, bool rightToLeft = false) - => $""; + => $""; internal const string EndSheetView = ""; internal const string StartSheetData = ""; diff --git a/src/MiniExcel.OpenXml/OpenXmlConfiguration.cs b/src/MiniExcel.OpenXml/OpenXmlConfiguration.cs index c5609b94..9056f6f7 100644 --- a/src/MiniExcel.OpenXml/OpenXmlConfiguration.cs +++ b/src/MiniExcel.OpenXml/OpenXmlConfiguration.cs @@ -10,7 +10,7 @@ public class OpenXmlConfiguration : MiniExcelBaseConfiguration public bool FillMergedCells { get; set; } public TableStyles TableStyles { get; set; } = TableStyles.Default; public bool AutoFilter { get; set; } = true; - public bool RighToLeft { get; set; } = false; + public bool RightToLeft { get; set; } = false; public int FreezeRowCount { get; set; } = 1; public int FreezeColumnCount { get; set; } = 0; public bool EnableConvertByteArray { get; set; } = true; diff --git a/src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs b/src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs index 203de7c8..e893b741 100644 --- a/src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs +++ b/src/MiniExcel.OpenXml/OpenXmlWriter.DefaultOpenXml.cs @@ -68,14 +68,14 @@ private ExcellSheetInfo GetSheetInfos(string sheetName) private string GetSheetViews() { // exit early if no style to write - if (_configuration is { FreezeRowCount: <= 0, FreezeColumnCount: <= 0, RighToLeft: false }) + if (_configuration is { FreezeRowCount: <= 0, FreezeColumnCount: <= 0, RightToLeft: false }) return string.Empty; var sb = new StringBuilder(); // start sheetViews sb.Append(WorksheetXml.StartSheetViews); - sb.Append(WorksheetXml.StartSheetView(rightToLeft: _configuration.RighToLeft)); + sb.Append(WorksheetXml.StartSheetView(rightToLeft: _configuration.RightToLeft)); // Write panes sb.Append(GetPanes());