Vendor/phpspreadsheet/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls.php
private function readBIFF8CellRangeAddress($subData)
    {
        // todo: if cell range is just a single cell, should this funciton
        // not just return e.g. 'A1' and not 'A1:A1' ?

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

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

        // offset: 4; size: 2; index to first column or column offset + relative flags

        // bit: 7-0; mask 0x00FF; column index
        $fc = Coordinate::stringFromColumnIndex((0x00FF & self::getUInt2d($subData, 4)) + 1);

        // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
        if (!(0x4000 & self::getUInt2d($subData, 4))) {
            $fc = '$' . $fc;
        }

        // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
        if (!(0x8000 & self::getUInt2d($subData, 4))) {
            $fr = '$' . $fr;
        }

        // offset: 6; size: 2; index to last column or column offset + relative flags

        // bit: 7-0; mask 0x00FF; column index
        $lc = Coordinate::stringFromColumnIndex((0x00FF & self::getUInt2d($subData, 6)) + 1);

        // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
        if (!(0x4000 & self::getUInt2d($subData, 6))) {
            $lc = '$' . $lc;
        }

        // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
        if (!(0x8000 & self::getUInt2d($subData, 6))) {
            $lr = '$' . $lr;
        }

        return "$fc$fr:$lc$lr";
    }
private function readBIFF8CellRangeAddress($subData)
    {
        // todo: if cell range is just a single cell, should this funciton
        // not just return e.g. 'A1' and not 'A1:A1' ?

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

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

        // offset: 4; size: 2; index to first column or column offset + relative flags

        // bit: 7-0; mask 0x00FF; column index
        $fc = Coordinate::stringFromColumnIndex((0x00FF & self::getUInt2d($subData, 4)) + 1);

        // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
        if (!(0x4000 & self::getUInt2d($subData, 4))) {
            $fc = '$' . $fc;
        }

        // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
        if (!(0x8000 & self::getUInt2d($subData, 4))) {
            $fr = '$' . $fr;
        }

        // offset: 6; size: 2; index to last column or column offset + relative flags

        // bit: 7-0; mask 0x00FF; column index
        $lc = Coordinate::stringFromColumnIndex((0x00FF & self::getUInt2d($subData, 6)) + 1);

        // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
        if (!(0x4000 & self::getUInt2d($subData, 6))) {
            $lc = '$' . $lc;
        }

        // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
        if (!(0x8000 & self::getUInt2d($subData, 6))) {
            $lr = '$' . $lr;
        }

        return "$fc$fr:$lc$lr";
    }
private function readBIFF8CellRangeAddress ( $ subData ) { // todo: if cell range is just a single cell, should this funciton // not just return e.g. 'A1' and not 'A1:A1' ? // offset: 0; size: 2; index to first row (0... 65535) (or offset (-32768... 32767)) $ fr = self :: getUInt2d ( $ subData , 0 ) + 1 ; // offset: 2; size: 2; index to last row (0... 65535) (or offset (-32768... 32767)) $ lr = self :: getUInt2d ( $ subData , 2 ) + 1 ; // offset: 4; size: 2; index to first column or column offset + relative flags // bit: 7-0; mask 0x00FF; column index $ fc = Coordinate :: stringFromColumnIndex ( ( 0x00FF & self :: getUInt2d ( $ subData , 4 ) ) + 1 ) ; // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) if ( ! ( 0x4000 & self :: getUInt2d ( $ subData , 4 ) ) ) { $ fc = '$' . $ fc ; } // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) if ( ! ( 0x8000 & self :: getUInt2d ( $ subData , 4 ) ) ) { $ fr = '$' . $ fr ; } // offset: 6; size: 2; index to last column or column offset + relative flags // bit: 7-0; mask 0x00FF; column index $ lc = Coordinate :: stringFromColumnIndex ( ( 0x00FF & self :: getUInt2d ( $ subData , 6 ) ) + 1 ) ; // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) if ( ! ( 0x4000 & self :: getUInt2d ( $ subData , 6 ) ) ) { $ lc = '$' . $ lc ; } // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) if ( ! ( 0x8000 & self :: getUInt2d ( $ subData , 6 ) ) ) { $ lr = '$' . $ lr ; } return "$fc$fr:$lc$lr" ; }
Reads a cell range address in BIFF8 e.g. 'A2:B6' or '$A$2:$B$6'
there are flags indicating whether column/row index is relative
section 3.3.4.

@param string $subData

@return string
Reads a cell range address in BIFF8 e . g . A2 : B6 or $A$2 : $B$6 there are flags indicating whether column / row index is relative section 3 . 3 . 4 .