code: public static function ROW($cellAddress = null)
      {
          if ($cellAddress === null || trim($cellAddress) === '') {
              return 0;
          }
  
          if (is_array($cellAddress)) {
              foreach ($cellAddress as $columnKey => $rowValue) {
                  foreach ($rowValue as $rowKey => $cellValue) {
                      return (int) preg_replace('/\D/', '', $rowKey);
                  }
              }
          } else {
              if (strpos($cellAddress, '!') !== false) {
                  list($sheet, $cellAddress) = explode('!', $cellAddress);
              }
              if (strpos($cellAddress, ':') !== false) {
                  list($startAddress, $endAddress) = explode(':', $cellAddress);
                  $startAddress = preg_replace('/\D/', '', $startAddress);
                  $endAddress = preg_replace('/\D/', '', $endAddress);
                  $returnValue = [];
                  do {
                      $returnValue[][] = (int) $startAddress;
                  } while ($startAddress++ != $endAddress);
  
                  return $returnValue;
              }
              list($cellAddress) = explode(':', $cellAddress);
  
              return (int) preg_replace('/\D/', '', $cellAddress);
          }
      }
docs: ROW.
  
  Returns the row number of the given cell reference
  If the cell reference is a range of cells, ROW returns the row numbers of each row in the reference as a vertical array.
  If cell reference is omitted, and the function is being called through the calculation engine, then it is assumed to be the
  reference of the cell in which the ROW function appears; otherwise this function returns 0.
  
  Excel Function:
  =ROW([cellAddress])
  
  @param null|array|string $cellAddress A reference to a range of cells for which you want the row numbers
  
  @return int or array of integer