Example #1
0
        private static CellValue EncodeCell(Cell cell, SharedResource sharedResource)
        {
            object value = cell.Value;

            if (value is int)
            {
                RK rk = new RK();
                rk.Value = (uint)((int)value << 2 | 2);
                return(rk);
            }
            else if (value is decimal)
            {
                RK rk = new RK();
                rk.Value = (uint)((decimal)value * 100) << 2 | 3; // integer and mul
                return(rk);
            }
            else if (value is double)
            {
                //RK rk = new RK();
                //Int64 data = BitConverter.DoubleToInt64Bits((double)value);
                //rk.Value = (uint)(data >> 32) & 0xFFFFFFFC;
                //return rk;
                NUMBER number = new NUMBER();
                number.Value = (double)value;
                return(number);
            }
            else if (value is string)
            {
                LABELSST label = new LABELSST();
                label.SSTIndex = sharedResource.GetSSTIndex((string)value);
                return(label);
            }
            else if (value is DateTime)
            {
                NUMBER number = new NUMBER();
                number.Value = sharedResource.EncodeDateTime((DateTime)value);
                return(number);
            }
            else if (value is bool)
            {
                BOOLERR boolerr = new BOOLERR();
                boolerr.ValueType = 0;
                boolerr.Value     = Convert.ToByte((bool)value);
                return(boolerr);
            }
            else if (value is ErrorCode)
            {
                BOOLERR boolerr = new BOOLERR();
                boolerr.ValueType = 1;
                boolerr.Value     = ((ErrorCode)value).Code;
                return(boolerr);
            }
            else
            {
                throw new Exception("Invalid cell value.");
            }
        }
        private static CellValue EncodeCell(Cell cell, SharedResource sharedResource)
        {
            object    value = cell.Value;
            CellValue result;

            if (value is int)
            {
                result = new RK
                {
                    Value = checked ((uint)((int)value << 2 | 2))
                };
            }
            else
            {
                if (value is decimal)
                {
                    result = new RK
                    {
                        Value = (uint)((decimal)value * 100m) << 2 | 3u
                    };
                }
                else
                {
                    if (value is double)
                    {
                        result = new NUMBER
                        {
                            Value = (double)value
                        };
                    }
                    else
                    {
                        if (value is string)
                        {
                            result = new LABELSST
                            {
                                SSTIndex = sharedResource.GetSSTIndex((string)value)
                            };
                        }
                        else
                        {
                            if (value is DateTime)
                            {
                                result = new NUMBER
                                {
                                    Value = sharedResource.EncodeDateTime((DateTime)value)
                                };
                            }
                            else
                            {
                                if (value is bool)
                                {
                                    result = new BOOLERR
                                    {
                                        ValueType = 0,
                                        Value     = Convert.ToByte((bool)value)
                                    };
                                }
                                else
                                {
                                    if (!(value is ErrorCode))
                                    {
                                        throw new Exception("Invalid cell value.");
                                    }
                                    result = new BOOLERR
                                    {
                                        ValueType = 1,
                                        Value     = ((ErrorCode)value).Code
                                    };
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }
 private static CellValue EncodeCell(Cell cell, SharedResource sharedResource)
 {
     object value = cell.Value;
     if (value is int || value is short || value is uint || value is byte)
     {
         RK rk = new RK();
         rk.Value = (uint)(Convert.ToInt32(value) << 2 | 2);
         return rk;
     }
     else if (value is decimal)
     {
         if (Math.Abs((decimal)value) <= (decimal)5368709.11)
         {
             RK rk = new RK();
             rk.Value = (uint)((int)((decimal)value * 100) << 2 | 3); // integer and mul
             return rk;
         }
         else
         {
             NUMBER number = new NUMBER();
             number.Value = (double)(decimal)value;
             return number;
         }
     }
     else if (value is double)
     {
         //RK rk = new RK();
         //Int64 data = BitConverter.DoubleToInt64Bits((double)value);
         //rk.Value = (uint)(data >> 32) & 0xFFFFFFFC;
         //return rk;
         NUMBER number = new NUMBER();
         number.Value = (double)value;
         return number;
     }
     else if (value is string)
     {
         LABELSST label = new LABELSST();
         label.SSTIndex = sharedResource.GetSSTIndex((string)value);
         return label;
     }
     else if (value is DateTime)
     {
         NUMBER number = new NUMBER();
         number.Value = sharedResource.EncodeDateTime((DateTime)value);
         return number;
     }
     else if (value is bool)
     {
         BOOLERR boolerr = new BOOLERR();
         boolerr.ValueType = 0;
         boolerr.Value = Convert.ToByte((bool)value);
         return boolerr;
     }
     else if (value is ErrorCode)
     {
         BOOLERR boolerr = new BOOLERR();
         boolerr.ValueType = 1;
         boolerr.Value = ((ErrorCode)value).Code;
         return boolerr;
     }
     else
     {
         throw new Exception("Invalid cell value.");
     }
 }