Vendor/phpspreadsheet/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Xf.php
public function writeXf()
    {
        // Set the type of the XF record and some of the attributes.
        if ($this->isStyleXf) {
            $style = 0xFFF5;
        } else {
            $style = self::mapLocked($this->_style->getProtection()->getLocked());
            $style |= self::mapHidden($this->_style->getProtection()->getHidden()) << 1;
        }

        // Flags to indicate if attributes have been set.
        $atr_num = ($this->numberFormatIndex != 0) ? 1 : 0;
        $atr_fnt = ($this->fontIndex != 0) ? 1 : 0;
        $atr_alc = ((int) $this->_style->getAlignment()->getWrapText()) ? 1 : 0;
        $atr_bdr = (self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) ||
                        self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) ||
                        self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) ||
                        self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle())) ? 1 : 0;
        $atr_pat = (($this->foregroundColor != 0x40) ||
                        ($this->backgroundColor != 0x41) ||
                        self::mapFillType($this->_style->getFill()->getFillType())) ? 1 : 0;
        $atr_prot = self::mapLocked($this->_style->getProtection()->getLocked())
                        | self::mapHidden($this->_style->getProtection()->getHidden());

        // Zero the default border colour if the border has not been set.
        if (self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) == 0) {
            $this->bottomBorderColor = 0;
        }
        if (self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) == 0) {
            $this->topBorderColor = 0;
        }
        if (self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) == 0) {
            $this->rightBorderColor = 0;
        }
        if (self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) == 0) {
            $this->leftBorderColor = 0;
        }
        if (self::mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) == 0) {
            $this->_diag_color = 0;
        }

        $record = 0x00E0; // Record identifier
        $length = 0x0014; // Number of bytes to follow

        $ifnt = $this->fontIndex; // Index to FONT record
        $ifmt = $this->numberFormatIndex; // Index to FORMAT record

        $align = $this->mapHAlign($this->_style->getAlignment()->getHorizontal()); // Alignment
        $align |= (int) $this->_style->getAlignment()->getWrapText() << 3;
        $align |= self::mapVAlign($this->_style->getAlignment()->getVertical()) << 4;
        $align |= $this->textJustLast << 7;

        $used_attrib = $atr_num << 2;
        $used_attrib |= $atr_fnt << 3;
        $used_attrib |= $atr_alc << 4;
        $used_attrib |= $atr_bdr << 5;
        $used_attrib |= $atr_pat << 6;
        $used_attrib |= $atr_prot << 7;

        $icv = $this->foregroundColor; // fg and bg pattern colors
        $icv |= $this->backgroundColor << 7;

        $border1 = self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()); // Border line style and color
        $border1 |= self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) << 4;
        $border1 |= self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) << 8;
        $border1 |= self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) << 12;
        $border1 |= $this->leftBorderColor << 16;
        $border1 |= $this->rightBorderColor << 23;

        $diagonalDirection = $this->_style->getBorders()->getDiagonalDirection();
        $diag_tl_to_rb = $diagonalDirection == Borders::DIAGONAL_BOTH
                            || $diagonalDirection == Borders::DIAGONAL_DOWN;
        $diag_tr_to_lb = $diagonalDirection == Borders::DIAGONAL_BOTH
                            || $diagonalDirection == Borders::DIAGONAL_UP;
        $border1 |= $diag_tl_to_rb << 30;
        $border1 |= $diag_tr_to_lb << 31;

        $border2 = $this->topBorderColor; // Border color
        $border2 |= $this->bottomBorderColor << 7;
        $border2 |= $this->_diag_color << 14;
        $border2 |= self::mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) << 21;
        $border2 |= self::mapFillType($this->_style->getFill()->getFillType()) << 26;

        $header = pack('vv', $record, $length);

        //BIFF8 options: identation, shrinkToFit and  text direction
        $biff8_options = $this->_style->getAlignment()->getIndent();
        $biff8_options |= (int) $this->_style->getAlignment()->getShrinkToFit() << 4;

        $data = pack('vvvC', $ifnt, $ifmt, $style, $align);
        $data .= pack('CCC', self::mapTextRotation($this->_style->getAlignment()->getTextRotation()), $biff8_options, $used_attrib);
        $data .= pack('VVv', $border1, $border2, $icv);

        return $header . $data;
    }
public function writeXf()
    {
        // Set the type of the XF record and some of the attributes.
        if ($this->isStyleXf) {
            $style = 0xFFF5;
        } else {
            $style = self::mapLocked($this->_style->getProtection()->getLocked());
            $style |= self::mapHidden($this->_style->getProtection()->getHidden()) << 1;
        }

        // Flags to indicate if attributes have been set.
        $atr_num = ($this->numberFormatIndex != 0) ? 1 : 0;
        $atr_fnt = ($this->fontIndex != 0) ? 1 : 0;
        $atr_alc = ((int) $this->_style->getAlignment()->getWrapText()) ? 1 : 0;
        $atr_bdr = (self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) ||
                        self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) ||
                        self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) ||
                        self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle())) ? 1 : 0;
        $atr_pat = (($this->foregroundColor != 0x40) ||
                        ($this->backgroundColor != 0x41) ||
                        self::mapFillType($this->_style->getFill()->getFillType())) ? 1 : 0;
        $atr_prot = self::mapLocked($this->_style->getProtection()->getLocked())
                        | self::mapHidden($this->_style->getProtection()->getHidden());

        // Zero the default border colour if the border has not been set.
        if (self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) == 0) {
            $this->bottomBorderColor = 0;
        }
        if (self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) == 0) {
            $this->topBorderColor = 0;
        }
        if (self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) == 0) {
            $this->rightBorderColor = 0;
        }
        if (self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) == 0) {
            $this->leftBorderColor = 0;
        }
        if (self::mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) == 0) {
            $this->_diag_color = 0;
        }

        $record = 0x00E0; // Record identifier
        $length = 0x0014; // Number of bytes to follow

        $ifnt = $this->fontIndex; // Index to FONT record
        $ifmt = $this->numberFormatIndex; // Index to FORMAT record

        $align = $this->mapHAlign($this->_style->getAlignment()->getHorizontal()); // Alignment
        $align |= (int) $this->_style->getAlignment()->getWrapText() << 3;
        $align |= self::mapVAlign($this->_style->getAlignment()->getVertical()) << 4;
        $align |= $this->textJustLast << 7;

        $used_attrib = $atr_num << 2;
        $used_attrib |= $atr_fnt << 3;
        $used_attrib |= $atr_alc << 4;
        $used_attrib |= $atr_bdr << 5;
        $used_attrib |= $atr_pat << 6;
        $used_attrib |= $atr_prot << 7;

        $icv = $this->foregroundColor; // fg and bg pattern colors
        $icv |= $this->backgroundColor << 7;

        $border1 = self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()); // Border line style and color
        $border1 |= self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) << 4;
        $border1 |= self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) << 8;
        $border1 |= self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) << 12;
        $border1 |= $this->leftBorderColor << 16;
        $border1 |= $this->rightBorderColor << 23;

        $diagonalDirection = $this->_style->getBorders()->getDiagonalDirection();
        $diag_tl_to_rb = $diagonalDirection == Borders::DIAGONAL_BOTH
                            || $diagonalDirection == Borders::DIAGONAL_DOWN;
        $diag_tr_to_lb = $diagonalDirection == Borders::DIAGONAL_BOTH
                            || $diagonalDirection == Borders::DIAGONAL_UP;
        $border1 |= $diag_tl_to_rb << 30;
        $border1 |= $diag_tr_to_lb << 31;

        $border2 = $this->topBorderColor; // Border color
        $border2 |= $this->bottomBorderColor << 7;
        $border2 |= $this->_diag_color << 14;
        $border2 |= self::mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) << 21;
        $border2 |= self::mapFillType($this->_style->getFill()->getFillType()) << 26;

        $header = pack('vv', $record, $length);

        //BIFF8 options: identation, shrinkToFit and  text direction
        $biff8_options = $this->_style->getAlignment()->getIndent();
        $biff8_options |= (int) $this->_style->getAlignment()->getShrinkToFit() << 4;

        $data = pack('vvvC', $ifnt, $ifmt, $style, $align);
        $data .= pack('CCC', self::mapTextRotation($this->_style->getAlignment()->getTextRotation()), $biff8_options, $used_attrib);
        $data .= pack('VVv', $border1, $border2, $icv);

        return $header . $data;
    }
public function writeXf ( ) { // Set the type of the XF record and some of the attributes. if ( $ this -> isStyleXf ) { $ style = 0xFFF5 ; } else { $ style = self :: mapLocked ( $ this -> _style -> getProtection ( ) -> getLocked ( ) ) ; $ style |= self :: mapHidden ( $ this -> _style -> getProtection ( ) -> getHidden ( ) ) << 1 ; } // Flags to indicate if attributes have been set. $ atr_num = ( $ this -> numberFormatIndex != 0 ) ? 1 : 0 ; $ atr_fnt = ( $ this -> fontIndex != 0 ) ? 1 : 0 ; $ atr_alc = ( ( int ) $ this -> _style -> getAlignment ( ) -> getWrapText ( ) ) ? 1 : 0 ; $ atr_bdr = ( self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getBottom ( ) -> getBorderStyle ( ) ) || self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getTop ( ) -> getBorderStyle ( ) ) || self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getLeft ( ) -> getBorderStyle ( ) ) || self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getRight ( ) -> getBorderStyle ( ) ) ) ? 1 : 0 ; $ atr_pat = ( ( $ this -> foregroundColor != 0x40 ) || ( $ this -> backgroundColor != 0x41 ) || self :: mapFillType ( $ this -> _style -> getFill ( ) -> getFillType ( ) ) ) ? 1 : 0 ; $ atr_prot = self :: mapLocked ( $ this -> _style -> getProtection ( ) -> getLocked ( ) ) | self :: mapHidden ( $ this -> _style -> getProtection ( ) -> getHidden ( ) ) ; // Zero the default border colour if the border has not been set. if ( self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getBottom ( ) -> getBorderStyle ( ) ) == 0 ) { $ this -> bottomBorderColor = 0 ; } if ( self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getTop ( ) -> getBorderStyle ( ) ) == 0 ) { $ this -> topBorderColor = 0 ; } if ( self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getRight ( ) -> getBorderStyle ( ) ) == 0 ) { $ this -> rightBorderColor = 0 ; } if ( self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getLeft ( ) -> getBorderStyle ( ) ) == 0 ) { $ this -> leftBorderColor = 0 ; } if ( self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getDiagonal ( ) -> getBorderStyle ( ) ) == 0 ) { $ this -> _diag_color = 0 ; } $ record = 0x00E0 ; // Record identifier $ length = 0x0014 ; // Number of bytes to follow $ ifnt = $ this -> fontIndex ; // Index to FONT record $ ifmt = $ this -> numberFormatIndex ; // Index to FORMAT record $ align = $ this -> mapHAlign ( $ this -> _style -> getAlignment ( ) -> getHorizontal ( ) ) ; // Alignment $ align |= ( int ) $ this -> _style -> getAlignment ( ) -> getWrapText ( ) << 3 ; $ align |= self :: mapVAlign ( $ this -> _style -> getAlignment ( ) -> getVertical ( ) ) << 4 ; $ align |= $ this -> textJustLast << 7 ; $ used_attrib = $ atr_num << 2 ; $ used_attrib |= $ atr_fnt << 3 ; $ used_attrib |= $ atr_alc << 4 ; $ used_attrib |= $ atr_bdr << 5 ; $ used_attrib |= $ atr_pat << 6 ; $ used_attrib |= $ atr_prot << 7 ; $ icv = $ this -> foregroundColor ; // fg and bg pattern colors $ icv |= $ this -> backgroundColor << 7 ; $ border1 = self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getLeft ( ) -> getBorderStyle ( ) ) ; // Border line style and color $ border1 |= self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getRight ( ) -> getBorderStyle ( ) ) << 4 ; $ border1 |= self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getTop ( ) -> getBorderStyle ( ) ) << 8 ; $ border1 |= self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getBottom ( ) -> getBorderStyle ( ) ) << 12 ; $ border1 |= $ this -> leftBorderColor << 16 ; $ border1 |= $ this -> rightBorderColor << 23 ; $ diagonalDirection = $ this -> _style -> getBorders ( ) -> getDiagonalDirection ( ) ; $ diag_tl_to_rb = $ diagonalDirection == Borders :: DIAGONAL_BOTH || $ diagonalDirection == Borders :: DIAGONAL_DOWN ; $ diag_tr_to_lb = $ diagonalDirection == Borders :: DIAGONAL_BOTH || $ diagonalDirection == Borders :: DIAGONAL_UP ; $ border1 |= $ diag_tl_to_rb << 30 ; $ border1 |= $ diag_tr_to_lb << 31 ; $ border2 = $ this -> topBorderColor ; // Border color $ border2 |= $ this -> bottomBorderColor << 7 ; $ border2 |= $ this -> _diag_color << 14 ; $ border2 |= self :: mapBorderStyle ( $ this -> _style -> getBorders ( ) -> getDiagonal ( ) -> getBorderStyle ( ) ) << 21 ; $ border2 |= self :: mapFillType ( $ this -> _style -> getFill ( ) -> getFillType ( ) ) << 26 ; $ header = pack ( 'vv' , $ record , $ length ) ; //BIFF8 options: identation, shrinkToFit and  text direction $ biff8_options = $ this -> _style -> getAlignment ( ) -> getIndent ( ) ; $ biff8_options |= ( int ) $ this -> _style -> getAlignment ( ) -> getShrinkToFit ( ) << 4 ; $ data = pack ( 'vvvC' , $ ifnt , $ ifmt , $ style , $ align ) ; $ data .= pack ( 'CCC' , self :: mapTextRotation ( $ this -> _style -> getAlignment ( ) -> getTextRotation ( ) ) , $ biff8_options , $ used_attrib ) ; $ data .= pack ( 'VVv' , $ border1 , $ border2 , $ icv ) ; return $ header . $ data ; }
Generate an Excel BIFF XF record (style or cell).

@return string The XF record
Generate an Excel BIFF XF record ( style or cell ) .