public ExtendedPivotTableViewFieldsRecord(RecordInputStream in1)
        {

            grbit1 = in1.ReadInt();
            grbit2 = in1.ReadUByte();
            citmShow = in1.ReadUByte();
            isxdiSort = in1.ReadUShort();
            isxdiShow = in1.ReadUShort();
            // This record seems to have different valid encodings
		    switch (in1.Remaining) {
			    case 0:
				    // as per "Microsoft Excel Developer's Kit" book
				    // older version of SXVDEX - doesn't seem to have a sub-total name
				    reserved1 = 0;
				    reserved2 = 0;
				    subName = null;
				    return;
			    case 10:
				    // as per "MICROSOFT OFFICE EXCEL 97-2007 BINARY FILE FORMAT SPECIFICATION" pdf
				    break;
			    default:
				    throw new RecordFormatException("Unexpected remaining size (" + in1.Remaining + ")");
		    }
            int cchSubName = in1.ReadUShort();
            reserved1 = in1.ReadInt();
            reserved2 = in1.ReadInt();
            if (cchSubName != STRING_NOT_PRESENT_LEN)
            {
                subName = in1.ReadUnicodeLEString(cchSubName);
            }
        }
Ejemplo n.º 2
0
        public FeatRecord(RecordInputStream in1)
        {
            futureHeader = new FtrHeader(in1);

            isf_sharedFeatureType = in1.ReadShort();
            reserved1 = (byte)in1.ReadByte();
            reserved2 = in1.ReadInt();
            int cref = in1.ReadUShort();
            cbFeatData = in1.ReadInt();
            reserved3 = in1.ReadShort();

            cellRefs = new CellRangeAddress[cref];
            for (int i = 0; i < cellRefs.Length; i++)
            {
                cellRefs[i] = new CellRangeAddress(in1);
            }

            switch (isf_sharedFeatureType)
            {
                case FeatHdrRecord.SHAREDFEATURES_ISFPROTECTION:
                    sharedFeature = new FeatProtection(in1);
                    break;
                case FeatHdrRecord.SHAREDFEATURES_ISFFEC2:
                    sharedFeature = new FeatFormulaErr2(in1);
                    break;
                case FeatHdrRecord.SHAREDFEATURES_ISFFACTOID:
                    sharedFeature = new FeatSmartTag(in1);
                    break;
                default:
                    System.Console.WriteLine("Unknown Shared Feature " + isf_sharedFeatureType + " found!");
                    break;
            }
        }
Ejemplo n.º 3
0
        /**
         * Constructs a Dimensions record and Sets its fields appropriately.
         * @param in the RecordInputstream to Read the record from
         */

        public DimensionsRecord(RecordInputStream in1)
        {
            field_1_first_row = in1.ReadInt();
            field_2_last_row = in1.ReadInt();
            field_3_first_col = in1.ReadShort();
            field_4_last_col = in1.ReadShort();
            field_5_zero = in1.ReadShort();
        }
Ejemplo n.º 4
0
        /**
         * Constructs a DVAL record and Sets its fields appropriately.
         *
         * @param in the RecordInputstream to Read the record from
         */

        public DVALRecord(RecordInputStream in1)
        {
            this.field_1_options = in1.ReadShort();
            this.field_2_horiz_pos = in1.ReadInt();
            this.field_3_vert_pos = in1.ReadInt();
            this.field_cbo_id = in1.ReadInt();
            this.field_5_dv_no = in1.ReadInt();
        }
Ejemplo n.º 5
0
        /**
         * Constructs a ChartFormatRecord record and Sets its fields appropriately.
         * @param in the RecordInputstream to Read the record from
         */

        public ChartFormatRecord(RecordInputStream in1)
        {
            field1_x_position = in1.ReadInt();
            field2_y_position = in1.ReadInt();
            field3_width = in1.ReadInt();
            field4_height = in1.ReadInt();
            field5_grbit = in1.ReadShort();
            field6_icrt = in1.ReadShort();
        }
Ejemplo n.º 6
0
        public FeatProtection(RecordInputStream in1)
        {
            fSD = in1.ReadInt();
            passwordVerifier = in1.ReadInt();

            title = StringUtil.ReadUnicodeString(in1);

            securityDescriptor = in1.ReadRemainder();
        }
Ejemplo n.º 7
0
        /**
         * Constructs a Tick record and Sets its fields appropriately.
         *
         * @param in the RecordInputstream to Read the record from
         */

        public TickRecord(RecordInputStream in1)
        {

            field_1_majorTickType = (byte)in1.ReadByte();
            field_2_minorTickType = (byte)in1.ReadByte();
            field_3_labelPosition = (byte)in1.ReadByte();
            field_4_background = (byte)in1.ReadByte();
            field_5_labelColorRgb = (byte)in1.ReadInt();
            field_6_zero1 = in1.ReadInt();
            field_7_zero2 = in1.ReadInt();
            field_8_zero3 = in1.ReadInt();
            field_9_zero4 = in1.ReadInt();

            field_10_options = in1.ReadShort();
            field_11_tickColor = in1.ReadShort();
            field_12_zero5 = in1.ReadShort();    
        }
Ejemplo n.º 8
0
        public ArrayRecord(RecordInputStream in1)
            : base(in1)
        {

            _options = in1.ReadUShort();
            _field3notUsed = in1.ReadInt();
            int formulaTokenLen = in1.ReadUShort();
		    int totalFormulaLen = in1.Available();
		    _formula = LF.Utils.NPOI.SS.Formula.Formula.Read(formulaTokenLen, in1, totalFormulaLen);
        }
Ejemplo n.º 9
0
        /**
         * Constructs an Index record and Sets its fields appropriately.
         * @param in the RecordInputstream to Read the record from
         */

        public IndexRecord(RecordInputStream in1)
        {
            field_1_zero = in1.ReadInt();
            if (field_1_zero != 0)
            {
                throw new RecordFormatException("Expected zero for field 1 but got " + field_1_zero);
            }
            field_2_first_row = in1.ReadInt();
            field_3_last_row_add1 = in1.ReadInt();
            field_4_zero = in1.ReadInt();

            int nCells = in1.Remaining / 4;
            field_5_dbcells =
                new IntList(nCells);   // initial capacity of 30
            for (int i = 0; i < nCells; i++)
            {
                field_5_dbcells.Add(in1.ReadInt());
            }

        }
Ejemplo n.º 10
0
        public TableStylesRecord(RecordInputStream in1)
        {
            rt = in1.ReadUShort();
            grbitFrt = in1.ReadUShort();
            in1.ReadFully(unused);
            cts = in1.ReadInt();
            int cchDefListStyle = in1.ReadUShort();
            int cchDefPivotStyle = in1.ReadUShort();

            rgchDefListStyle = in1.ReadUnicodeLEString(cchDefListStyle);
            rgchDefPivotStyle = in1.ReadUnicodeLEString(cchDefPivotStyle);
        }
Ejemplo n.º 11
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();
     }
 }
Ejemplo n.º 12
0
        /**
         * Constructs a WindowTwo record and Sets its fields appropriately.
         * @param in the RecordInputstream to Read the record from
         */

        public WindowTwoRecord(RecordInputStream in1)
        {
            int size = in1.Remaining;
            field_1_options = in1.ReadShort();
            field_2_top_row = in1.ReadShort();
            field_3_left_col = in1.ReadShort();
            field_4_header_color = in1.ReadInt();
            if (size > 10)
            {
                field_5_page_break_zoom = in1.ReadShort();
                field_6_normal_zoom = in1.ReadShort();
            }
            if (size > 14)
            {   // there Is a special case of this record that has only 14 bytes...undocumented!
                field_7_reserved = in1.ReadInt();
            }
        }
Ejemplo n.º 13
0
        /**
         * Constructs a Text record and Sets its fields appropriately.
         *
         * @param in the RecordInputstream to Read the record from
         */

        public TextRecord(RecordInputStream in1)
        {
            field_1_horizontalAlignment = (byte)in1.ReadByte();
            field_2_verticalAlignment = (byte)in1.ReadByte();
            field_3_DisplayMode = in1.ReadShort();
            field_4_rgbColor = in1.ReadInt();
            field_5_x = in1.ReadInt();
            field_6_y = in1.ReadInt();
            field_7_width = in1.ReadInt();
            field_8_height = in1.ReadInt();
            field_9_options1 = in1.ReadShort();
            field_10_IndexOfColorValue = in1.ReadShort();
            field_11_options2 = in1.ReadShort();
            field_12_textRotation = in1.ReadShort();
        }
Ejemplo n.º 14
0
        /**
         * Constructs a DV record and Sets its fields appropriately.
         *
         * @param in the RecordInputstream to Read the record from
         */

        public DVRecord(RecordInputStream in1)
        {
            _option_flags = in1.ReadInt();

            _promptTitle = ReadUnicodeString(in1);
            _errorTitle = ReadUnicodeString(in1);
            _promptText = ReadUnicodeString(in1);
            _errorText = ReadUnicodeString(in1);

            int field_size_first_formula = in1.ReadUShort();
            _not_used_1 = in1.ReadShort();

            //read first formula data condition
            _formula1 = LF.Utils.NPOI.SS.Formula.Formula.Read(field_size_first_formula, in1);

            int field_size_sec_formula = in1.ReadUShort();
            _not_used_2 = in1.ReadShort();

            //read sec formula data condition
            _formula2 = LF.Utils.NPOI.SS.Formula.Formula.Read(field_size_sec_formula, in1);

            //read cell range address list with all affected ranges
            _regions = new CellRangeAddressList(in1);
        }
Ejemplo n.º 15
0
 private RkRec(RecordInputStream in1)
 {
     xf = in1.ReadShort();
     rk = in1.ReadInt();
 }
Ejemplo n.º 16
0
 private static void ProcessFontRuns(RecordInputStream in1, IRichTextString str,
     int formattingRunDataLength)
 {
     if (formattingRunDataLength % FORMAT_RUN_ENCODED_SIZE != 0)
     {
         throw new RecordFormatException("Bad format run data length " + formattingRunDataLength
                 + ")");
     }
     int nRuns = formattingRunDataLength / FORMAT_RUN_ENCODED_SIZE;
     for (int i = 0; i < nRuns; i++)
     {
         short index = in1.ReadShort();
         short iFont = in1.ReadShort();
         in1.ReadInt(); // skip reserved.
         str.ApplyFont(index, str.Length, iFont);
     }
 }
Ejemplo n.º 17
0
        /**
         * Constructs a BOFRecord and Sets its fields appropriately
         * @param in the RecordInputstream to Read the record from
         */

        public BOFRecord(RecordInputStream in1)
        {
            field_1_version = in1.ReadShort();
            field_2_type = in1.ReadShort();

            // Some external tools don't generate all of
            //  the remaining fields
            if (in1.Remaining >= 2)
            {
                field_3_build = in1.ReadShort();
            }
            if (in1.Remaining >= 2)
            {
                field_4_year = in1.ReadShort();
            }
            if (in1.Remaining >= 4)
            {
                field_5_history = in1.ReadInt();
            }
            if (in1.Remaining >= 4)
            {
                field_6_rversion = in1.ReadInt();
            }
        }
Ejemplo n.º 18
0
        /**
         * Constructs an ExtendedFormat record and Sets its fields appropriately.
         * @param in the RecordInputstream to Read the record from
         */

        public ExtendedFormatRecord(RecordInputStream in1)
        {
            field_1_font_index = in1.ReadShort();
            field_2_format_index = in1.ReadShort();
            field_3_cell_options = in1.ReadShort();
            field_4_alignment_options = in1.ReadShort();
            field_5_indention_options = in1.ReadShort();
            field_6_border_options = in1.ReadShort();
            field_7_palette_options = in1.ReadShort();
            field_8_adtl_palette_options = in1.ReadInt();
            field_9_fill_palette_options = in1.ReadShort();
        }
Ejemplo n.º 19
0
        public FeatHdrRecord(RecordInputStream in1)
        {
            futureHeader = new FtrHeader(in1);

            isf_sharedFeatureType = in1.ReadShort();
            reserved = (byte)in1.ReadByte();
            cbHdrData = in1.ReadInt();
            // Don't process this just yet, need the BOFRecord
            rgbHdrData = in1.ReadRemainder();
        }
Ejemplo n.º 20
0
        private void ProcessFontRuns(RecordInputStream in1)
        {
            while (in1.Remaining > 0)
            {
                short index = in1.ReadShort();
                short iFont = in1.ReadShort();
                in1.ReadInt();  // skip reserved.

                _text.ApplyFont(index, _text.Length, iFont);
            }
        }
Ejemplo n.º 21
0
        public TextObjectRecord(RecordInputStream in1)
        {

            field_1_options = in1.ReadUShort();
            field_2_textOrientation = in1.ReadUShort();
            field_3_reserved4 = in1.ReadUShort();
            field_4_reserved5 = in1.ReadUShort();
            field_5_reserved6 = in1.ReadUShort();
            int field_6_textLength = in1.ReadUShort();
            int field_7_formattingDataLength = in1.ReadUShort();
            field_8_reserved7 = in1.ReadInt();

            if (in1.Remaining > 0)
            {
                // Text Objects can have simple reference formulas
                // (This bit not mentioned in the MS document)
                if (in1.Remaining < 11)
                {
                    throw new RecordFormatException("Not enough remaining data for a link formula");
                }
                int formulaSize = in1.ReadUShort();
                _unknownPreFormulaInt = in1.ReadInt();
                Ptg[] ptgs = Ptg.ReadTokens(formulaSize, in1);
                if (ptgs.Length != 1)
                {
                    throw new RecordFormatException("Read " + ptgs.Length
                            + " tokens but expected exactly 1");
                }
                _linkRefPtg = (OperandPtg)ptgs[0];
                if (in1.Remaining > 0)
                {
                    _unknownPostFormulaByte = (byte)in1.ReadByte();
                }
                else
                {
                    _unknownPostFormulaByte = null;
                }
            }
            else
            {
                _linkRefPtg = null;
            }
            if (in1.Remaining > 0)
            {
                throw new RecordFormatException("Unused " + in1.Remaining + " bytes at end of record");
            }

            String text;
            if (field_6_textLength > 0)
            {
                text = ReadRawString(in1, field_6_textLength);
            }
            else
            {
                text = "";
            }
            _text = new HSSFRichTextString(text);

            if (field_7_formattingDataLength > 0)
            {
                ProcessFontRuns(in1, _text, field_7_formattingDataLength);
            }
        }
Ejemplo n.º 22
0
        /**
         * Read hyperlink from input stream
         *
         * @param in the stream to Read from
         */
        public HyperlinkRecord(RecordInputStream in1)
        {
            _range = new CellRangeAddress(in1);

            // 16-byte GUID
            _guid = new GUID(in1);

            /*
             * streamVersion (4 bytes): An unsigned integer that specifies the version number
             * of the serialization implementation used to save this structure. This value MUST equal 2.
             */
            int streamVersion = in1.ReadInt();
            if (streamVersion != 0x00000002)
            {
                throw new RecordFormatException("Stream Version must be 0x2 but found " + streamVersion);
            }
            _linkOpts = in1.ReadInt();

            if ((_linkOpts & HLINK_LABEL) != 0)
            {
                int label_len = in1.ReadInt();
                _label = in1.ReadUnicodeLEString(label_len);
            }
            if ((_linkOpts & HLINK_TARGET_FRAME) != 0)
            {
                int len = in1.ReadInt();
                _targetFrame = in1.ReadUnicodeLEString(len);
            }
            if ((_linkOpts & HLINK_URL) != 0 && (_linkOpts & HLINK_UNC_PATH) != 0)
            {
                _moniker = null;
                int nChars = in1.ReadInt();
                _address = in1.ReadUnicodeLEString(nChars);
            }
            if ((_linkOpts & HLINK_URL) != 0 && (_linkOpts & HLINK_UNC_PATH) == 0)
            {
                _moniker = new GUID(in1);

                if (URL_MONIKER.Equals(_moniker))
                {
                    int length = in1.ReadInt();
                    /*
                     * The value of <code>length<code> be either the byte size of the url field
                     * (including the terminating NULL character) or the byte size of the url field plus 24.
                     * If the value of this field is set to the byte size of the url field,
                     * then the tail bytes fields are not present.
                     */
                    int remaining = in1.Remaining;
                    if (length == remaining)
                    {
                        int nChars = length / 2;
                        _address = in1.ReadUnicodeLEString(nChars);
                    }
                    else
                    {
                        int nChars = (length - TAIL_SIZE) / 2;
                        _address = in1.ReadUnicodeLEString(nChars);
                        /*
                         * TODO: make sense of the remaining bytes
                         * According to the spec they consist of:
                         * 1. 16-byte  GUID: This field MUST equal
                         *    {0xF4815879, 0x1D3B, 0x487F, 0xAF, 0x2C, 0x82, 0x5D, 0xC4, 0x85, 0x27, 0x63}
                         * 2. Serial version, this field MUST equal 0 if present.
                         * 3. URI Flags
                         */
                        _uninterpretedTail = ReadTail(URL_uninterpretedTail, in1);
                    }
                }
                else if (FILE_MONIKER.Equals(_moniker))
                {
                    _fileOpts = in1.ReadShort();

                    int len = in1.ReadInt();
                    _shortFilename = StringUtil.ReadCompressedUnicode(in1, len);
                    _uninterpretedTail = ReadTail(FILE_uninterpretedTail, in1);
                    int size = in1.ReadInt();
                    if (size > 0)
                    {
                        int charDataSize = in1.ReadInt();

                        //From the spec: An optional unsigned integer that MUST be 3 if present
                        int optFlags = in1.ReadUShort();
                        if (optFlags != 0x0003)
                        {
                            throw new RecordFormatException("Expected 0x3 but found " + optFlags);
                        }
                        _address = StringUtil.ReadUnicodeLE(in1, charDataSize / 2);
                    }
                    else
                    {
                        _address = null;
                    }
                }
                else if (STD_MONIKER.Equals(_moniker))
                {
                    _fileOpts = in1.ReadShort();

                    int len = in1.ReadInt();

                    byte[] path_bytes = new byte[len];
                    in1.ReadFully(path_bytes);

                    _address = Encoding.UTF8.GetString(path_bytes);
                }
            }

            if ((_linkOpts & HLINK_PLACE) != 0)
            {
                int len = in1.ReadInt();
                _textMark = in1.ReadUnicodeLEString(len);
            }

            if (in1.Remaining > 0)
            {
                Console.WriteLine(HexDump.ToHex(in1.ReadRemainder()));
            }
        }
Ejemplo n.º 23
0
 public InfoSubRecord(RecordInputStream in1)
 {
     field_1_stream_pos = in1.ReadInt();
     field_2_bucket_sst_offset = in1.ReadShort();
     field_3_zero = in1.ReadShort();
 }
Ejemplo n.º 24
0
        /**
         * Constructs a RECALCID record and Sets its fields appropriately.
         * @param in the RecordInputstream to Read the record from
         */

        public RecalcIdRecord(RecordInputStream in1)
        {
            in1.ReadUShort(); // field 'rt' should have value 0x01C1, but Excel doesn't care during reading
    	_reserved0 = in1.ReadUShort();
    	_engineId = in1.ReadInt();
        }
Ejemplo n.º 25
0
        /**
         * Constructs an SST record and Sets its fields appropriately.
         *
         * @param in the RecordInputstream to Read the record from
         */

        public SSTRecord(RecordInputStream in1)
        {
            // this method Is ALWAYS called after construction -- using
            // the nontrivial constructor, of course -- so this Is where
            // we initialize our fields
            field_1_num_strings = in1.ReadInt();
            field_2_num_unique_strings = in1.ReadInt();
            field_3_strings = new IntMapper<UnicodeString>();
            deserializer = new SSTDeserializer(field_3_strings);
            deserializer.ManufactureStrings(field_2_num_unique_strings, in1);
        }
Ejemplo n.º 26
0
 /** Creates new FontFormatting */
 public BorderFormatting(RecordInputStream in1)
 {
     field_13_border_styles1 = in1.ReadInt();
     field_14_border_styles2 = in1.ReadInt();
 }
Ejemplo n.º 27
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):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 = LF.Utils.NPOI.SS.Formula.Formula.Read(field_7_expression_len, in1,in1.Available());
        }
Ejemplo n.º 28
0
        /**
         * Constructs an LabelSST record and Sets its fields appropriately.
         * @param in the RecordInputstream to Read the record from
         */

        public LabelSSTRecord(RecordInputStream in1)
            : base(in1)
        {
            field_4_sst_index = in1.ReadInt();
        }
Ejemplo n.º 29
0
 public FeatFormulaErr2(RecordInputStream in1)
 {
     errorCheck = in1.ReadInt();
 }
Ejemplo n.º 30
0
        public CFRuleRecord(RecordInputStream in1)
        {
            field_1_condition_type = (byte)in1.ReadByte();
            field_2_comparison_operator = (byte)in1.ReadByte();
            int field_3_formula1_len = in1.ReadUShort();
            int field_4_formula2_len = in1.ReadUShort();
            field_5_options = in1.ReadInt();
            field_6_not_used = in1.ReadShort();

            if (ContainsFontFormattingBlock)
            {
                fontFormatting = new FontFormatting(in1);
            }

            if (ContainsBorderFormattingBlock)
            {
                borderFormatting = new BorderFormatting(in1);
            }

            if (ContainsPatternFormattingBlock)
            {
                patternFormatting = new PatternFormatting(in1);
            }
            field_17_formula1 = FR.Formula.Read(field_3_formula1_len, in1);
            field_18_formula2 = FR.Formula.Read(field_4_formula2_len, in1);
	}