コード例 #1
0
ファイル: OldFormulaRecord.cs プロジェクト: Reinakumiko/npoi
        public OldFormulaRecord(RecordInputStream ris) :
            base(ris, ris.Sid == biff2_sid)
        {
            ;

            if (IsBiff2)
            {
                field_4_value = ris.ReadDouble();
            }
            else
            {
                long valueLongBits = ris.ReadLong();
                specialCachedValue = SpecialCachedValue.Create(valueLongBits);
                if (specialCachedValue == null)
                {
                    field_4_value = BitConverter.Int64BitsToDouble(valueLongBits);
                }
            }

            if (IsBiff2)
            {
                field_5_options = (short)ris.ReadUByte();
            }
            else
            {
                field_5_options = ris.ReadShort();
            }

            int expression_len = ris.ReadShort();
            int nBytesAvailable = ris.Available();
            field_6_Parsed_expr = Formula.Read(expression_len, ris, nBytesAvailable);
        }
コード例 #2
0
        public OldFormulaRecord(RecordInputStream ris) :
            base(ris, ris.Sid == biff2_sid)
        {
            ;

            if (IsBiff2)
            {
                field_4_value = ris.ReadDouble();
            }
            else
            {
                long valueLongBits = ris.ReadLong();
                specialCachedValue = SpecialCachedValue.Create(valueLongBits);
                if (specialCachedValue == null)
                {
                    field_4_value = BitConverter.Int64BitsToDouble(valueLongBits);
                }
            }

            if (IsBiff2)
            {
                field_5_options = (short)ris.ReadUByte();
            }
            else
            {
                field_5_options = ris.ReadShort();
            }

            int expression_len  = ris.ReadShort();
            int nBytesAvailable = ris.Available();

            field_6_Parsed_expr = Formula.Read(expression_len, ris, nBytesAvailable);
        }
コード例 #3
0
ファイル: FormulaRecord.cs プロジェクト: purehzj/npoi-1
        /**
         * Constructs a Formula record and Sets its fields appropriately.
         * Note - id must be 0x06 (NOT 0x406 see MSKB #Q184647 for an
         * "explanation of this bug in the documentation) or an exception
         *  will be throw upon validation
         *
         * @param in the RecordInputstream to Read the record from
         */

        public FormulaRecord(RecordInputStream in1) : base(in1)
        {
            long valueLongBits = in1.ReadLong();

            field_5_options    = in1.ReadShort();
            specialCachedValue = SpecialCachedValue.Create(valueLongBits);
            if (specialCachedValue == null)
            {
                field_4_value = BitConverter.Int64BitsToDouble(valueLongBits);
            }

            field_6_zero = in1.ReadInt();
            int field_7_expression_len = in1.ReadShort();

            field_8_parsed_expr = NPOI.SS.Formula.Formula.Read(field_7_expression_len, in1, in1.Available());
        }
コード例 #4
0
ファイル: SheetExtRecord.cs プロジェクト: Henry-T/UnityPG
 public SheetExtRecord(RecordInputStream in1)
 {
     rt = in1.ReadShort();
     if (rt != 0x0862)
     {
         throw new ArgumentException("frtHeader.rt must be equals 0x0862 in SheetExt record");
     }
     grbitFrt = in1.ReadShort();
     in1.ReadInt();  //reserved
     in1.ReadInt();  //reserved
     cb = in1.ReadInt();
     optionflag = in1.ReadShort();
     in1.ReadShort(); //reserved
     if (cb == 0x28)
     {
         optionflag2 = in1.ReadShort();
         xclrType = in1.ReadInt();
         xclrValue = in1.ReadInt();
         numTint = in1.ReadLong();
         in1.ReadShort();
     }
 }
コード例 #5
0
 public SheetExtRecord(RecordInputStream in1)
 {
     rt = in1.ReadShort();
     if (rt != 0x0862)
     {
         throw new ArgumentException("frtHeader.rt must be equals 0x0862 in SheetExt record");
     }
     grbitFrt = in1.ReadShort();
     in1.ReadInt();  //reserved
     in1.ReadInt();  //reserved
     cb         = in1.ReadInt();
     optionflag = in1.ReadShort();
     in1.ReadShort(); //reserved
     if (cb == 0x28)
     {
         optionflag2 = in1.ReadShort();
         xclrType    = in1.ReadInt();
         xclrValue   = in1.ReadInt();
         numTint     = in1.ReadLong();
         in1.ReadShort();
     }
 }
コード例 #6
0
 private static object ReadAConstantValue(RecordInputStream in1)
 {
     byte grbit = (byte)in1.ReadByte();
     switch (grbit)
     {
         case TYPE_EMPTY:
             in1.ReadLong(); // 8 byte 'not used' field
             return EMPTY_REPRESENTATION;
         case TYPE_NUMBER:
             return in1.ReadDouble();
         case TYPE_STRING:
             return in1.ReadUnicodeString();
         case TYPE_bool:
             return ReadBoolean(in1);
         case TYPE_ERROR_CODE:
             int errCode = in1.ReadUShort();
             // next 6 bytes are Unused
             in1.ReadUShort();
             in1.ReadInt();
             return ErrorConstant.ValueOf(errCode);
     }
     throw new Exception("Unknown grbit value (" + grbit + ")");
 }
コード例 #7
0
ファイル: FormulaRecord.cs プロジェクト: WPG/npoi
        /**
         * Constructs a Formula record and Sets its fields appropriately.
         * Note - id must be 0x06 (NOT 0x406 see MSKB #Q184647 for an 
         * "explanation of this bug in the documentation) or an exception
         *  will be throw upon validation
         *
         * @param in the RecordInputstream to Read the record from
         */

        public FormulaRecord(RecordInputStream in1):base(in1)
        {
		        long valueLongBits  = in1.ReadLong();
		        field_5_options = in1.ReadShort();
		        specialCachedValue = SpecialCachedValue.Create(valueLongBits);
		        if (specialCachedValue == null) {
			        field_4_value = BitConverter.Int64BitsToDouble(valueLongBits);
		        }

                field_6_zero = in1.ReadInt();
                int field_7_expression_len = in1.ReadShort();

                field_8_parsed_expr = NPOI.SS.Formula.Formula.Read(field_7_expression_len, in1,in1.Available());
        }
コード例 #8
0
 private static Object ReadBoolean(RecordInputStream in1)
 {
     byte val = (byte)in1.ReadLong(); // 7 bytes 'not used'
     switch (val)
     {
         case FALSE_ENCODING:
             return false;
         case TRUE_ENCODING:
             return true;
     }
     // Don't tolerate Unusual bool encoded values (unless it becomes evident that they occur)
     throw new Exception("unexpected bool encoding (" + val + ")");
 }
コード例 #9
0
        /**
         * Constructs a Formula record and Sets its fields appropriately.
         * Note - id must be 0x06 (NOT 0x406 see MSKB #Q184647 for an 
         * "explanation of this bug in the documentation) or an exception
         *  will be throw upon validation
         *
         * @param in the RecordInputstream to Read the record from
         */

        public FormulaRecord(RecordInputStream in1)
        {
            try
            {
                field_1_row = in1.ReadUShort();
		        field_2_column  = in1.ReadUShort();
		        field_3_xf	  = in1.ReadShort();
		        long valueLongBits  = in1.ReadLong();
		        field_5_options = in1.ReadShort();
		        specialCachedValue = SpecialCachedValue.Create(valueLongBits);
		        if (specialCachedValue == null) {
			        field_4_value = BitConverter.Int64BitsToDouble(valueLongBits);
		        }

                field_6_zero = in1.ReadInt();
                int field_7_expression_len = in1.ReadShort();
                field_8_parsed_expr = Ptg.ReadTokens(field_7_expression_len, in1);
                if (in1.Remaining == 10) {
			        // TODO - this seems to occur when IntersectionPtg is present
			        // 10 extra bytes are just 0x01 and 0x00
			        // This causes POI stderr: "WARN. Unread 10 bytes of record 0x6"
		        }
            }
            catch (InvalidOperationException uoe)
            {
                throw new RecordFormatException(uoe);
            }
            if (in1.Remaining == 10)
            {
                // TODO - this seems to occur when IntersectionPtg Is present
                // 10 extra bytes are just 0x01 and 0x00
                // This causes POI stderr: "WARN. UnRead 10 bytes of record 0x6"
            }
        }