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.
docstr: writer : string or ExcelWriter object
      File path or existing ExcelWriter
  sheet_name : string, default 'Sheet1'
      Name of sheet which will contain DataFrame
  startrow :
      upper left cell row to dump data frame
  startcol :
      upper left cell column to dump data frame
  freeze_panes : tuple of integer (length 2), default None
      Specifies the one-based bottommost row and rightmost column that
      is to be frozen
  engine : string, default None
      write engine to use if writer is a path - you can also set this
      via the options ``io.excel.xlsx.writer``, ``io.excel.xls.writer``,
      and ``io.excel.xlsm.writer``.
docstr_tok: ["writer",":","string","or","ExcelWriter","object","File","path","or","existing","ExcelWriter","sheet_name",":","string",",","default","'Sheet1'","Name","of","sheet","which","will","contain","DataFrame","startrow",":","upper","left","cell","row","to","dump","data","frame","startcol",":","upper","left","cell","column","to","dump","data","frame","freeze_panes",":","tuple","of","integer","(","length","2",")",",","default","None","Specifies","the","one-based","bottommost","row","and","rightmost","column","that","is","to","be","frozen","engine",":","string",",","default","None","write","engine","to","use","if","writer","is","a","path","-","you","can","also","set","this","via","the","options","``","io.excel.xlsx.writer","``",",","``","io.excel.xls.writer","``",",","and","``","io.excel.xlsm.writer","``","."]
code: def write(
      self,
      writer,
      sheet_name="Sheet1",
      startrow=0,
      startcol=0,
      freeze_panes=None,
      engine=None,
  ):
      """
      writer : string or ExcelWriter object
          File path or existing ExcelWriter
      sheet_name : string, default 'Sheet1'
          Name of sheet which will contain DataFrame
      startrow :
          upper left cell row to dump data frame
      startcol :
          upper left cell column to dump data frame
      freeze_panes : tuple of integer (length 2), default None
          Specifies the one-based bottommost row and rightmost column that
          is to be frozen
      engine : string, default None
          write engine to use if writer is a path - you can also set this
          via the options ``io.excel.xlsx.writer``, ``io.excel.xls.writer``,
          and ``io.excel.xlsm.writer``.
      """
      from pandas.io.excel import ExcelWriter
      from pandas.io.common import _stringify_path
  
      if isinstance(writer, ExcelWriter):
          need_save = False
      else:
          writer = ExcelWriter(_stringify_path(writer), engine=engine)
          need_save = True
  
      formatted_cells = self.get_formatted_cells()
      writer.write_cells(
          formatted_cells,
          sheet_name,
          startrow=startrow,
          startcol=startcol,
          freeze_panes=freeze_panes,
      )
      if need_save:
          writer.save()
  
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 12 for calling the ExcelFormatter obj's underlying member method code with example usage: obj.write(writer, sheet_name, startrow, startcol, freeze_panes, engine) without return types