示例#1
0
        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);
        }
示例#2
0
        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);
        }