From 087784db9ea21649f5b3663084afe7adae6436c0 Mon Sep 17 00:00:00 2001 From: Joost Meulenkamp Date: Mon, 8 Dec 2025 15:13:30 +0100 Subject: [PATCH] fix null reference when determining header row based on targeting rule --- .../Exporters/BaseSharpExcelSynchronizer.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/SharpExcel/Exporters/BaseSharpExcelSynchronizer.cs b/SharpExcel/Exporters/BaseSharpExcelSynchronizer.cs index 76afb07..ac5d32f 100644 --- a/SharpExcel/Exporters/BaseSharpExcelSynchronizer.cs +++ b/SharpExcel/Exporters/BaseSharpExcelSynchronizer.cs @@ -232,13 +232,21 @@ private static int FindAndMapHeaderRow( x => !string.IsNullOrWhiteSpace(x.NormalizedName)) .Select(x => x.NormalizedName?.ToLowerInvariant())! ); - - //find header row - var headerRow = usedArea - .Rows(x => x.Cells() - .Any(c => headerNames.Contains(c.Value.ToString().ToLowerInvariant()))) - .FirstOrDefault()?.WorksheetRow(); + IXLRow? headerRow; + + if (rule.Row is not null && rule.Row > 0) + { + headerRow = usedArea.Row(rule.Row.Value).WorksheetRow(); + } + else + { + headerRow = usedArea + .Rows(x => x.Cells() + .Any(c => headerNames.Contains(c.Value.ToString().ToLowerInvariant()))) + .FirstOrDefault()?.WorksheetRow(); + } + var headerRowId = headerRow!.RowNumber(); var propertiesByColumnName = instance.Properties.PropertyMappings.ToDictionary(x => x.NormalizedName);