Beispiel #1
0
        /// <summary> Initializes the internal format information from the data read in</summary>
        private void  initializeFormatInformation()
        {
            // Initialize the cell format string
            if (formatIndex < BuiltInFormat.builtIns.Length && BuiltInFormat.builtIns[formatIndex] != null)
            {
                excelFormat = BuiltInFormat.builtIns[formatIndex];
            }
            else
            {
                excelFormat = formattingRecords.getFormatRecord(formatIndex);
            }

            // Initialize the font
            font = formattingRecords.Fonts.getFont(fontIndex);

            // Initialize the cell format data from the binary record
            sbyte[] data = getRecord().Data;

            // Get the parent record
            int cellAttributes = IntegerHelper.getInt(data[4], data[5]);

            parentFormat = (cellAttributes & 0xfff0) >> 4;
            int formatType = cellAttributes & 0x4;

            xfFormatType = formatType == 0?cell:style;
            locked       = ((cellAttributes & 0x1) != 0);
            hidden       = ((cellAttributes & 0x2) != 0);

            if (xfFormatType == cell && (parentFormat & 0xfff) == 0xfff)
            {
                // Something is screwy with the parent format - set to zero
                parentFormat = 0;
                logger.warn("Invalid parent format found - ignoring");
            }


            int alignMask = IntegerHelper.getInt(data[6], data[7]);

            // Get the wrap
            if ((alignMask & 0x08) != 0)
            {
                wrap = true;
            }

            // Get the horizontal alignment
            align = Alignment.getAlignment(alignMask & 0x7);

            // Get the vertical alignment
            valign = VerticalAlignment.getAlignment((alignMask >> 4) & 0x7);

            // Get the orientation
            orientation = Orientation.getOrientation((alignMask >> 8) & 0xff);

            int attr = IntegerHelper.getInt(data[8], data[9]);

            // Get the shrink to fit flag
            shrinkToFit = (attr & 0x10) != 0;

            // Get the used attribute
            if (biffType == biff8)
            {
                usedAttributes = data[9];
            }

            // Get the borders
            int borderMask = IntegerHelper.getInt(data[10], data[11]);

            leftBorder   = BorderLineStyle.getStyle(borderMask & 0x7);
            rightBorder  = BorderLineStyle.getStyle((borderMask >> 4) & 0x7);
            topBorder    = BorderLineStyle.getStyle((borderMask >> 8) & 0x7);
            bottomBorder = BorderLineStyle.getStyle((borderMask >> 12) & 0x7);

            int borderColourMask = IntegerHelper.getInt(data[12], data[13]);

            leftBorderColour  = Colour.getInternalColour(borderColourMask & 0x7f);
            rightBorderColour = Colour.getInternalColour((borderColourMask & 0x3f80) >> 7);

            borderColourMask   = IntegerHelper.getInt(data[14], data[15]);
            topBorderColour    = Colour.getInternalColour(borderColourMask & 0x7f);
            bottomBorderColour = Colour.getInternalColour((borderColourMask & 0x3f80) >> 7);

            if (biffType == biff8)
            {
                // Get the background pattern
                int patternVal = IntegerHelper.getInt(data[16], data[17]);
                pattern = Pattern.getPattern(patternVal);

                // Get the background colour
                int colourPaletteMask = IntegerHelper.getInt(data[18], data[19]);
                backgroundColour = Colour.getInternalColour(colourPaletteMask & 0x3f);


                if (backgroundColour == Colour.UNKNOWN || backgroundColour == Colour.DEFAULT_BACKGROUND1)
                {
                    backgroundColour = Colour.DEFAULT_BACKGROUND;
                }
            }
            else
            {
                pattern          = Pattern.NONE;
                backgroundColour = Colour.DEFAULT_BACKGROUND;
            }

            // Set the lazy initialization flag
            formatInfoInitialized = true;
        }