class_docstr: Class for formatting a DataFrame to a list of ExcelCells,
  
  Parameters
  ----------
  df : DataFrame or Styler
  na_rep: na representation
  float_format : string, default None
          Format string for floating point numbers
  cols : sequence, optional
      Columns to write
  header : boolean or list of string, default True
      Write out column names. If a list of string is given it is
      assumed to be aliases for the column names
  index : boolean, default True
      output row names (index)
  index_label : string or sequence, default None
          Column label for index column(s) if desired. If None is given, and
          `header` and `index` are True, then the index names are used. A
          sequence should be given if the DataFrame uses MultiIndex.
  merge_cells : boolean, default False
          Format MultiIndex and Hierarchical Rows as merged cells.
  inf_rep : string, default `'inf'`
      representation for np.inf values (which aren't representable in Excel)
      A `'-'` sign will be added in front of -inf.
  style_converter : callable, optional
      This translates Styler styles (CSS) into ExcelWriter styles.
      Defaults to ``CSSToExcelConverter()``.
      It should have signature css_declarations string -> excel style.
      This is only called for body cells.
code: def _format_regular_rows(self):
      has_aliases = isinstance(
          self.header, (tuple, list, np.ndarray, Index)
      )
      if has_aliases or self.header:
          self.rowcounter += 1
  
      # output index and index_label?
      if self.index:
          # check aliases
          # if list only take first as this is not a MultiIndex
          if self.index_label and isinstance(
              self.index_label, (list, tuple, np.ndarray, Index)
          ):
              index_label = self.index_label[0]
          # if string good to go
          elif self.index_label and isinstance(self.index_label, str):
              index_label = self.index_label
          else:
              index_label = self.df.index.names[0]
  
          if isinstance(self.columns, ABCMultiIndex):
              self.rowcounter += 1
  
          if index_label and self.header is not False:
              yield ExcelCell(
                  self.rowcounter - 1, 0, index_label, self.header_style
              )
  
          # write index_values
          index_values = self.df.index
          if isinstance(self.df.index, ABCPeriodIndex):
              index_values = self.df.index.to_timestamp()
  
          for idx, idxval in enumerate(index_values):
              yield ExcelCell(
                  self.rowcounter + idx, 0, idxval, self.header_style
              )
  
          coloffset = 1
      else:
          coloffset = 0
  
      for cell in self._generate_body(coloffset):
          yield cell
  
imports: import itertools
  import re
  import warnings
  import numpy
  from pandas.compat import reduce
  from pandas.core.dtypes import missing
  from pandas.core.dtypes.common import is_float, is_scalar
  from pandas.core.dtypes.generic import ABCMultiIndex, ABCPeriodIndex
  from pandas import Index
  import pandas.core.common
  from pandas.io.formats.css import CSSResolver, CSSWarning
  from pandas.io.formats.format import get_level_lengths
  from pandas.io.formats.printing import pprint_thing
label_desc: Use image node_id 8 for calling the ExcelFormatter obj's underlying member method code with example usage: obj._format_regular_rows() without return types