private bool TryGetAttribute(object instance, PropertyInfo property, object data, int columnNumber, int rowNumber) { Type propertyType = property.PropertyType; ErrorMap errorMap = new ErrorMap { Line = rowNumber, ExcelLine = rowNumber + 1, Column = columnNumber, ExcelColumn = columnNumber + 1, ColumnLetter = ExcelExtension.ColumnIndexToColumnLetter(columnNumber) }; if (propertyType == typeof(DateTime)) { DateTime objectData = new DateTime(); if (DateUtil.TryParserObject(data, out objectData)) { property.SetValue(instance, objectData); return(true); } errorMap.Description = "Error en el formato de la fecha"; Results.ErrorMap.Add(errorMap); return(false); } if (propertyType == typeof(DateTime?)) { string dataStr = Convert.ToString(data); if (String.IsNullOrWhiteSpace(dataStr)) { property.SetValue(instance, null); return(true); } DateTime objectData = new DateTime(); if (DateUtil.TryParserObject(data, out objectData)) { property.SetValue(instance, objectData); return(true); } errorMap.Description = "Error en el formato de la fecha"; Results.ErrorMap.Add(errorMap); return(false); } try { if (propertyType == typeof(string)) { property.SetValue(instance, Convert.ToString(data)); } else { object value = null; if (FormatUtils.TryGetValue(data, property.PropertyType, out value)) { property.SetValue(instance, value); } } } catch (InvalidCastException e) { errorMap.Description = "Error en el tipo de dato no coincide con el especificado"; Results.ErrorMap.Add(errorMap); return(false); } catch (FormatException e) { errorMap.Description = "Error en el tipo de dato no coincide con el especificado"; Results.ErrorMap.Add(errorMap); return(false); } return(true); }
private bool TryGetAttribute(object instance, PropertyInfo property, object data, Header header, RowResult rowResult, out string errorMessage) { errorMessage = null; Type propertyType = property.PropertyType; ErrorMap errorMap = new ErrorMap { Line = rowResult.Index, ExcelLine = rowResult.Number, Column = header.Index, ExcelColumn = header.Column, ColumnLetter = header.Letter }; string excelName = header.Name; if (String.IsNullOrWhiteSpace(excelName)) { excelName = String.Format("\"{0}\"", header.Letter); } if (propertyType == typeof(DateTime)) { DateTime objectData = new DateTime(); if (DateUtil.TryParserObject(data, out objectData)) { property.SetValue(instance, objectData); return(true); } errorMessage = String.Format("El campo {0} no tiene el formato de fecha ", excelName); errorMap.Description = errorMessage; Results.ErrorMap.Add(errorMap); return(false); } if (propertyType == typeof(DateTime?)) { string dataStr = Convert.ToString(data); if (String.IsNullOrWhiteSpace(dataStr)) { property.SetValue(instance, null); return(true); } DateTime objectData = new DateTime(); if (DateUtil.TryParserObject(data, out objectData)) { property.SetValue(instance, objectData); return(true); } errorMessage = String.Format("El campo {0} no tiene el formato de fecha ", excelName); errorMap.Description = errorMessage; Results.ErrorMap.Add(errorMap); return(false); } try { if (propertyType == typeof(string)) { property.SetValue(instance, Convert.ToString(data)); } else { object value = null; if (Nullable.GetUnderlyingType(propertyType) != null) { if (data == null || String.IsNullOrWhiteSpace(Convert.ToString(data))) { property.SetValue(instance, null); return(true); } } if (FormatUtils.TryGetValue(data, propertyType, out value)) { property.SetValue(instance, value); } else { errorMessage = String.Format("El campo {0} no coincide con el formato especificado ", excelName); return(false); } } } catch (InvalidCastException e) { errorMessage = String.Format("El campo {0} no coincide con el formato especificado ", excelName); errorMap.Description = errorMessage; Results.ErrorMap.Add(errorMap); return(false); } catch (FormatException e) { errorMessage = String.Format("El campo {0} no coincide con el formato especificado ", excelName); errorMap.Description = errorMessage; Results.ErrorMap.Add(errorMap); return(false); } return(true); }