private function readBIFF8CellAddressB($cellAddressStructure, $baseCell = 'A1')
    {
        list($baseCol, $baseRow) = Coordinate::coordinateFromString($baseCell);
        $baseCol = Coordinate::columnIndexFromString($baseCol) - 1;

        // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767))
        $rowIndex = self::getUInt2d($cellAddressStructure, 0);
        $row = self::getUInt2d($cellAddressStructure, 0) + 1;

        // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
        if (!(0x4000 & self::getUInt2d($cellAddressStructure, 2))) {
            // offset: 2; size: 2; index to column or column offset + relative flags
            // bit: 7-0; mask 0x00FF; column index
            $colIndex = 0x00FF & self::getUInt2d($cellAddressStructure, 2);

            $column = Coordinate::stringFromColumnIndex($colIndex + 1);
            $column = '$' . $column;
        } else {
            // offset: 2; size: 2; index to column or column offset + relative flags
            // bit: 7-0; mask 0x00FF; column index
            $relativeColIndex = 0x00FF & self::getInt2d($cellAddressStructure, 2);
            $colIndex = $baseCol + $relativeColIndex;
            $colIndex = ($colIndex < 256) ? $colIndex : $colIndex - 256;
            $colIndex = ($colIndex >= 0) ? $colIndex : $colIndex + 256;
            $column = Coordinate::stringFromColumnIndex($colIndex + 1);
        }

        // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
        if (!(0x8000 & self::getUInt2d($cellAddressStructure, 2))) {
            $row = '$' . $row;
        } else {
            $rowIndex = ($rowIndex <= 32767) ? $rowIndex : $rowIndex - 65536;
            $row = $baseRow + $rowIndex;
        }

        return $column . $row;
    }
private function readBIFF8CellAddressB($cellAddressStructure, $baseCell = 'A1')
    {
        list($baseCol, $baseRow) = Coordinate::coordinateFromString($baseCell);
        $baseCol = Coordinate::columnIndexFromString($baseCol) - 1;

        // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767))
        $rowIndex = self::getUInt2d($cellAddressStructure, 0);
        $row = self::getUInt2d($cellAddressStructure, 0) + 1;

        // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
        if (!(0x4000 & self::getUInt2d($cellAddressStructure, 2))) {
            // offset: 2; size: 2; index to column or column offset + relative flags
            // bit: 7-0; mask 0x00FF; column index
            $colIndex = 0x00FF & self::getUInt2d($cellAddressStructure, 2);

            $column = Coordinate::stringFromColumnIndex($colIndex + 1);
            $column = '$' . $column;
        } else {
            // offset: 2; size: 2; index to column or column offset + relative flags
            // bit: 7-0; mask 0x00FF; column index
            $relativeColIndex = 0x00FF & self::getInt2d($cellAddressStructure, 2);
            $colIndex = $baseCol + $relativeColIndex;
            $colIndex = ($colIndex < 256) ? $colIndex : $colIndex - 256;
            $colIndex = ($colIndex >= 0) ? $colIndex : $colIndex + 256;
            $column = Coordinate::stringFromColumnIndex($colIndex + 1);
        }

        // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
        if (!(0x8000 & self::getUInt2d($cellAddressStructure, 2))) {
            $row = '$' . $row;
        } else {
            $rowIndex = ($rowIndex <= 32767) ? $rowIndex : $rowIndex - 65536;
            $row = $baseRow + $rowIndex;
        }

        return $column . $row;
    }
private function readBIFF8CellAddressB ( $ cellAddressStructure , $ baseCell = 'A1' ) { list ( $ baseCol , $ baseRow ) = Coordinate :: coordinateFromString ( $ baseCell ) ; $ baseCol = Coordinate :: columnIndexFromString ( $ baseCol ) - 1 ; // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767)) $ rowIndex = self :: getUInt2d ( $ cellAddressStructure , 0 ) ; $ row = self :: getUInt2d ( $ cellAddressStructure , 0 ) + 1 ; // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) if ( ! ( 0x4000 & self :: getUInt2d ( $ cellAddressStructure , 2 ) ) ) { // offset: 2; size: 2; index to column or column offset + relative flags // bit: 7-0; mask 0x00FF; column index $ colIndex = 0x00FF & self :: getUInt2d ( $ cellAddressStructure , 2 ) ; $ column = Coordinate :: stringFromColumnIndex ( $ colIndex + 1 ) ; $ column = '$' . $ column ; } else { // offset: 2; size: 2; index to column or column offset + relative flags // bit: 7-0; mask 0x00FF; column index $ relativeColIndex = 0x00FF & self :: getInt2d ( $ cellAddressStructure , 2 ) ; $ colIndex = $ baseCol + $ relativeColIndex ; $ colIndex = ( $ colIndex < 256 ) ? $ colIndex : $ colIndex - 256 ; $ colIndex = ( $ colIndex >= 0 ) ? $ colIndex : $ colIndex + 256 ; $ column = Coordinate :: stringFromColumnIndex ( $ colIndex + 1 ) ; } // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) if ( ! ( 0x8000 & self :: getUInt2d ( $ cellAddressStructure , 2 ) ) ) { $ row = '$' . $ row ; } else { $ rowIndex = ( $ rowIndex <= 32767 ) ? $ rowIndex : $ rowIndex - 65536 ; $ row = $ baseRow + $ rowIndex ; } return $ column . $ row ; }
Reads a cell address in BIFF8 for shared formulas. Uses positive and negative values for row and column
to indicate offsets from a base cell
section 3.3.4.

@param string $cellAddressStructure
@param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas

@return string
Reads a cell address in BIFF8 for shared formulas . Uses positive and negative values for row and column to indicate offsets from a base cell section 3 . 3 . 4 .