@@ -81,6 +81,21 @@ public static bool IsNumericType(Type type, bool isNullableUnderlyingType = fals
8181 {
8282 newValue = Guid . Parse ( itemValue . ToString ( ) ) ;
8383 }
84+ else if ( pInfo . ExcludeNullableType == typeof ( DateTimeOffset ) )
85+ {
86+ var vs = itemValue ? . ToString ( ) ;
87+ if ( pInfo . ExcelFormat != null )
88+ {
89+ if ( DateTimeOffset . TryParseExact ( vs , pInfo . ExcelFormat , CultureInfo . InvariantCulture , DateTimeStyles . None , out var _v ) )
90+ {
91+ newValue = _v ;
92+ }
93+ }
94+ else if ( DateTimeOffset . TryParse ( vs , _config . Culture , DateTimeStyles . None , out var _v ) )
95+ newValue = _v ;
96+ else
97+ throw new InvalidCastException ( $ "{ vs } can't cast to datetime") ;
98+ }
8499 else if ( pInfo . ExcludeNullableType == typeof ( DateTime ) )
85100 {
86101 // fix issue 257 https://github.com/shps951023/MiniExcel/issues/257
@@ -94,11 +109,11 @@ public static bool IsNumericType(Type type, bool isNullableUnderlyingType = fals
94109 var vs = itemValue ? . ToString ( ) ;
95110 if ( pInfo . ExcelFormat != null )
96111 {
97- if ( DateTime . TryParseExact ( vs , pInfo . ExcelFormat , CultureInfo . InvariantCulture , DateTimeStyles . None , out var _v ) )
112+ if ( pInfo . Property . PropertyType == typeof ( DateTimeOffset ) && DateTimeOffset . TryParseExact ( vs , pInfo . ExcelFormat , CultureInfo . InvariantCulture , DateTimeStyles . None , out var _v2 ) )
98113 {
99- newValue = _v ;
114+ newValue = _v2 ;
100115 }
101- else if ( DateTimeOffset . TryParseExact ( vs , pInfo . ExcelFormat , CultureInfo . InvariantCulture , DateTimeStyles . None , out var _v ) )
116+ else if ( DateTime . TryParseExact ( vs , pInfo . ExcelFormat , CultureInfo . InvariantCulture , DateTimeStyles . None , out var _v ) )
102117 {
103118 newValue = _v ;
104119 }
0 commit comments