diff --git a/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/Excel/XLWorkbook_Save.cs index 2a8d818..44dea9e 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.cs @@ -2135,10 +2135,11 @@ ptfi.DataType = XLDataType.Number; ptfi.MixedDataType = false; ptfi.DistinctValues = fieldValueCells - .Select(cell => cell.GetDouble()) - .Distinct() - .Cast() - .ToArray(); + .Where(cell => cell.TryGetValue(out Double _)) + .Select(cell => cell.CachedValue.CastTo()) + .Distinct() + .Cast() + .ToArray(); var allInteger = ptfi.DistinctValues.All(v => int.TryParse(v.ToString(), out int val)); if (allInteger) sharedItems.ContainsInteger = true; @@ -2169,7 +2170,8 @@ ptfi.DataType = XLDataType.DateTime; ptfi.MixedDataType = false; ptfi.DistinctValues = fieldValueCells - .Select(cell => cell.GetDateTime()) + .Where(cell => cell.TryGetValue(out DateTime _)) + .Select(cell => cell.CachedValue.CastTo()) .Distinct() .Cast() .ToArray(); @@ -2198,12 +2200,13 @@ if (!ptfi.MixedDataType && ptfi.DataType == XLDataType.Text) ptfi.DistinctValues = fieldValueCells - .Select(cell => cell.Value) - .Cast() + .Where(cell => cell.TryGetValue(out String _)) + .Select(cell => cell.CachedValue.CastTo()) .Distinct(StringComparer.OrdinalIgnoreCase) .ToArray(); else ptfi.DistinctValues = fieldValueCells + .Where(cell => cell.TryGetValue(out String _)) .Select(cell => cell.GetString()) .Distinct(StringComparer.OrdinalIgnoreCase) .ToArray();