private static object GetCellValueForDataBase(ItemField field, ICell cell)
    {
        if (cell == null || cell.CellType == CellType.Blank)
        {
            return(null);
        }

        object cellValue = null;

        switch (field.DataType)
        {
        case FieldDataType.Text:
            cellValue = ToolsXlsx.GetValue <string>(cell);
            break;

        case FieldDataType.Decimal:
        case FieldDataType.NullableDecimal:
            cellValue = ToolsXlsx.GetValue <decimal?>(cell);
            break;

        case FieldDataType.Long:
        case FieldDataType.NullableLong:
        case FieldDataType.Integer:
        case FieldDataType.NullableInteger:
        case FieldDataType.Float:
        case FieldDataType.NullableFloat:
            switch (cell.CellType)
            {
            case CellType.Numeric:
                cellValue = cell.NumericCellValue.ToString(CultureInfo.InvariantCulture);
                break;

            default:
                cellValue = cell.StringCellValue;
                break;
            }

            break;

        case FieldDataType.DateTime:
        case FieldDataType.NullableDateTime:
            var dateTimeValue = ToolsXlsx.GetValue <DateTime?>(cell);
            if (dateTimeValue.HasValue)
            {
                cellValue = string.Format(CultureInfo.InvariantCulture, @"""{0:dd/MM/yyyy}", dateTimeValue);
            }

            break;

        case FieldDataType.Boolean:
        case FieldDataType.NullableBoolean:
            if (cell.CellType == CellType.String)
            {
                string cellData = cell.StringCellValue.ToUpperInvariant();

                if (string.IsNullOrEmpty(cellData))
                {
                    cellValue = null;
                    break;
                }

                cellValue = cellData == ConstantValue.True.ToUpperInvariant() ? ConstantValue.True : ConstantValue.False;
                break;
            }

            cellValue = ToolsXlsx.GetBooleanValue(cell);
            break;

        default:
            cellValue = null;
            break;
        }

        return(cellValue);
    }
    private static string GetCellValueForJson(FieldDataType dataType, ICell cell, int?length)
    {
        if (cell == null || cell.CellType == CellType.Blank)
        {
            return(string.Empty);
        }

        string cellValue = string.Empty;

        switch (dataType)
        {
        case FieldDataType.Text:
        case FieldDataType.Textarea:
            cellValue = string.Format(@"""{0}""", ToolsJson.JsonCompliant(ToolsXlsx.GetValue <string>(cell)));
            break;

        case FieldDataType.Decimal:
        case FieldDataType.NullableDecimal:
            var decimalValue = ToolsXlsx.GetValue <decimal?>(cell);

            if (decimalValue.HasValue)
            {
                cellValue = string.Format(CultureInfo.InvariantCulture, "{0:################0.##################}", decimalValue);
            }
            else
            {
                cellValue = ConstantValue.Null;
            }
            break;

        case FieldDataType.Long:
        case FieldDataType.NullableLong:
        case FieldDataType.Integer:
        case FieldDataType.NullableInteger:
        case FieldDataType.Float:
        case FieldDataType.NullableFloat:
            switch (cell.CellType)
            {
            case CellType.Numeric:
                cellValue = cell.NumericCellValue.ToString(CultureInfo.InvariantCulture);
                break;

            default:
                cellValue = cell.StringCellValue;
                break;
            }

            break;

        case FieldDataType.Time:
        case FieldDataType.NullableTime:
            var timeValue = ToolsXlsx.GetValue <DateTime?>(cell);
            if (timeValue.HasValue)
            {
                cellValue = string.Format(CultureInfo.InvariantCulture, @"""{0:hh:mm}""", timeValue);
            }
            else
            {
                cellValue = ConstantValue.Null;
            }

            break;

        case FieldDataType.DateTime:
        case FieldDataType.NullableDateTime:
            var dateTimeValue = ToolsXlsx.GetValue <DateTime?>(cell);
            if (dateTimeValue.HasValue)
            {
                cellValue = string.Format(CultureInfo.InvariantCulture, @"""{0:dd/MM/yyyy}""", dateTimeValue);
            }
            else
            {
                cellValue = ConstantValue.Null;
            }

            break;

        case FieldDataType.Boolean:
        case FieldDataType.NullableBoolean:
            if (cell.CellType == CellType.String)
            {
                string cellData = cell.StringCellValue.ToUpperInvariant();

                if (string.IsNullOrEmpty(cellData))
                {
                    cellValue = string.Empty;
                    break;
                }

                cellValue = cellData == ConstantValue.True.ToUpperInvariant() ? ConstantValue.True : ConstantValue.False;
                break;
            }

            var booleanValue = ToolsXlsx.GetBooleanValue(cell);
            cellValue = booleanValue.HasValue ? (booleanValue.Value ? ConstantValue.True : ConstantValue.False) : string.Empty;
            break;

        case FieldDataType.Url:
        case FieldDataType.Email:
            cellValue = ToolsXlsx.GetValue <string>(cell);
            break;

        default:
            cellValue = string.Format(CultureInfo.InvariantCulture, @"""{0}""", dataType);
            break;
        }

        return(cellValue);
    }