@@ -813,25 +813,35 @@ def _format_value(self, val):
813813 return val
814814
815815 def _format_header_mi (self ):
816+ has_aliases = isinstance (self .header , (tuple , list , np .ndarray ))
817+ if not (has_aliases or self .header ):
818+ return
819+
816820 levels = self .columns .format (sparsify = True , adjoin = False ,
817821 names = False )
818- level_lenghts = _get_level_lengths (levels )
819- coloffset = 0
822+ # level_lenghts = _get_level_lengths(levels)
823+ coloffset = 1
820824 if isinstance (self .df .index , MultiIndex ):
821- coloffset = len (self .df .index [0 ]) - 1
822-
823- for lnum , (records , values ) in enumerate (zip (level_lenghts ,
824- levels )):
825- name = self .columns .names [lnum ]
826- yield ExcelCell (lnum , coloffset , name , header_style )
827- for i in records :
828- if records [i ] > 1 :
829- yield ExcelCell (lnum ,coloffset + i + 1 , values [i ],
830- header_style , lnum , coloffset + i + records [i ])
831- else :
832- yield ExcelCell (lnum , coloffset + i + 1 , values [i ], header_style )
833-
834- self .rowcounter = lnum
825+ coloffset = len (self .df .index [0 ])
826+
827+ # for lnum, (records, values) in enumerate(zip(level_lenghts,
828+ # levels)):
829+ # name = self.columns.names[lnum]
830+ # yield ExcelCell(lnum, coloffset, name, header_style)
831+ # for i in records:
832+ # if records[i] > 1:
833+ # yield ExcelCell(lnum,coloffset + i + 1, values[i],
834+ # header_style, lnum, coloffset + i + records[i])
835+ # else:
836+ # yield ExcelCell(lnum, coloffset + i + 1, values[i], header_style)
837+
838+ # self.rowcounter = lnum
839+ lnum = 0
840+ for i , values in enumerate (zip (* levels )):
841+ v = "." .join (map (com .pprint_thing ,values ))
842+ yield ExcelCell (lnum , coloffset + i , v , header_style )
843+
844+ self .rowcounter = lnum
835845
836846 def _format_header_regular (self ):
837847 has_aliases = isinstance (self .header , (tuple , list , np .ndarray ))
@@ -878,7 +888,9 @@ def _format_body(self):
878888 return self ._format_regular_rows ()
879889
880890 def _format_regular_rows (self ):
881- self .rowcounter += 1
891+ has_aliases = isinstance (self .header , (tuple , list , np .ndarray ))
892+ if has_aliases or self .header :
893+ self .rowcounter += 1
882894
883895 coloffset = 0
884896 #output index and index_label?
@@ -894,15 +906,15 @@ def _format_regular_rows(self):
894906 else :
895907 index_label = self .df .index .names [0 ]
896908
897- if index_label :
909+ if index_label and self . header != False :
898910 # add to same level as column names
899- if isinstance (self .df .columns , MultiIndex ):
900- yield ExcelCell (self .rowcounter , 0 ,
901- index_label , header_style )
902- self .rowcounter += 1
903- else :
904- yield ExcelCell (self .rowcounter - 1 , 0 ,
905- index_label , header_style )
911+ # if isinstance(self.df.columns, MultiIndex):
912+ # yield ExcelCell(self.rowcounter, 0,
913+ # index_label, header_style)
914+ # self.rowcounter += 1
915+ # else:
916+ yield ExcelCell (self .rowcounter - 1 , 0 ,
917+ index_label , header_style )
906918
907919 #write index_values
908920 index_values = self .df .index
@@ -919,7 +931,9 @@ def _format_regular_rows(self):
919931 yield ExcelCell (self .rowcounter + i , colidx + coloffset , val )
920932
921933 def _format_hierarchical_rows (self ):
922- self .rowcounter += 1
934+ has_aliases = isinstance (self .header , (tuple , list , np .ndarray ))
935+ if has_aliases or self .header :
936+ self .rowcounter += 1
923937
924938 gcolidx = 0
925939 #output index and index_label?
@@ -931,11 +945,11 @@ def _format_hierarchical_rows(self):
931945 index_labels = self .index_label
932946
933947 #if index labels are not empty go ahead and dump
934- if filter (lambda x : x is not None , index_labels ):
935- if isinstance (self .df .columns , MultiIndex ):
936- self .rowcounter += 1
937- else :
938- self .rowcounter -= 1
948+ if filter (lambda x : x is not None , index_labels ) and self . header != False :
949+ # if isinstance(self.df.columns, MultiIndex):
950+ # self.rowcounter += 1
951+ # else:
952+ self .rowcounter -= 1
939953 for cidx , name in enumerate (index_labels ):
940954 yield ExcelCell (self .rowcounter , cidx ,
941955 name , header_style )
@@ -953,8 +967,8 @@ def _format_hierarchical_rows(self):
953967 yield ExcelCell (self .rowcounter + i , gcolidx + colidx , val )
954968
955969 def get_formatted_cells (self ):
956- for cell in itertools .chain (self ._format_header (),
957- self . _format_body () ):
970+ for cell in itertools .chain (self ._format_header (),self . _format_body ()
971+ ):
958972 cell .val = self ._format_value (cell .val )
959973 yield cell
960974
0 commit comments