docs: def sheetpack(fn, sheet=0, header=True, startcell=None, stopcell=None,
                usecols=None):
      """Return a ChannelPack instance loaded with data from the spread
      sheet file fn, (xls, xlsx).
  
      fn: str
          The file to read from.
  
      sheet: int or str
          If int, it is the index for the sheet 0-based. Else the sheet
          name.
  
      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
          a 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").
  
      usecols: str or seqence of ints
          The columns to use, 0-based. 0 is the spread sheet column
          "A". Can be given as a string also - 'C:E, H' for columns C, D,
          E and H.
  
      Might not be a favorite, but the header row can be offset from the
      data range. The meaning of usecols is then applied on both the data
      range and the header row. However, usecols is always specified with
      regards to the data range.
      """
  
      cp = ChannelPack(pullxl.sheet_asdict)
      chnames = []
      cp.load(fn, sheet=sheet, header=header, startcell=startcell,
              stopcell=stopcell, usecols=usecols, chnames_out=chnames)
  
      cp.set_channel_names(chnames or None)
      return cp