docs: def prepread(sheet, header=True, startcell=None, stopcell=None):
      """Return four StartStop objects, defining the outer bounds of
      header row and data range, respectively. If header is False, the
      first two items will be None.
  
      --> [headstart, headstop, datstart, datstop]
  
      sheet: xlrd.sheet.Sheet instance
          Ready for use.
  
      header: bool or str
          True if the defined data range includes a header with field
          names. Else False - the whole range is data. If a string, it is
          spread sheet style notation of the startcell for the header
          ("F9"). The "width" of this record is the same as for the data.
  
      startcell: str or None
          If given, a spread sheet style notation of the cell where reading
          start, ("F9").
  
      stopcell: str or None
          A spread sheet style notation of the cell where data end,
          ("F9").
  
     startcell and stopcell can both be None, either one specified or
     both specified.
  
     Note to self: consider making possible to specify headers in a column.
  
      """
      datstart, datstop = _get_startstop(sheet, startcell, stopcell)
      headstart, headstop = StartStop(0, 0), StartStop(0, 0)  # Holders
  
      def typicalprep():
          headstart.row, headstart.col = datstart.row, datstart.col
          headstop.row, headstop.col = datstart.row + 1, datstop.col
          # Tick the data start row by 1:
          datstart.row += 1
  
      def offsetheaderprep():
          headstart.row, headstart.col = headrow, headcol
          headstop.row = headrow + 1
          headstop.col = headcol + (datstop.col - datstart.col)  # stop > start
  
      if header is True:          # Simply the toprow of the table.
          typicalprep()
          return [headstart, headstop, datstart, datstop]
      elif header:                # Then it is a string if not False. ("F9")
          m = re.match(XLNOT_RX, header)
          headrow = int(m.group(2)) - 1
          headcol = letter2num(m.group(1), zbase=True)
          if headrow == datstart.row and headcol == datstart.col:
              typicalprep()
              return [headstart, headstop, datstart, datstop]
          elif headrow == datstart.row:
              typicalprep()
              offsetheaderprep()
              return [headstart, headstop, datstart, datstop]
          else:
              offsetheaderprep()
              return [headstart, headstop, datstart, datstop]
      else:                       # header is False
          return [None, None, datstart, datstop]