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);