@@ -813,25 +813,35 @@ def _format_value(self, val):
813
813
return val
814
814
815
815
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
+
816
820
levels = self .columns .format (sparsify = True , adjoin = False ,
817
821
names = False )
818
- level_lenghts = _get_level_lengths (levels )
819
- coloffset = 0
822
+ # level_lenghts = _get_level_lengths(levels)
823
+ coloffset = 1
820
824
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
835
845
836
846
def _format_header_regular (self ):
837
847
has_aliases = isinstance (self .header , (tuple , list , np .ndarray ))
@@ -878,7 +888,9 @@ def _format_body(self):
878
888
return self ._format_regular_rows ()
879
889
880
890
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
882
894
883
895
coloffset = 0
884
896
#output index and index_label?
@@ -894,15 +906,15 @@ def _format_regular_rows(self):
894
906
else :
895
907
index_label = self .df .index .names [0 ]
896
908
897
- if index_label :
909
+ if index_label and self . header != False :
898
910
# 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 )
906
918
907
919
#write index_values
908
920
index_values = self .df .index
@@ -919,7 +931,9 @@ def _format_regular_rows(self):
919
931
yield ExcelCell (self .rowcounter + i , colidx + coloffset , val )
920
932
921
933
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
923
937
924
938
gcolidx = 0
925
939
#output index and index_label?
@@ -931,11 +945,11 @@ def _format_hierarchical_rows(self):
931
945
index_labels = self .index_label
932
946
933
947
#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
939
953
for cidx , name in enumerate (index_labels ):
940
954
yield ExcelCell (self .rowcounter , cidx ,
941
955
name , header_style )
@@ -953,8 +967,8 @@ def _format_hierarchical_rows(self):
953
967
yield ExcelCell (self .rowcounter + i , gcolidx + colidx , val )
954
968
955
969
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
+ ):
958
972
cell .val = self ._format_value (cell .val )
959
973
yield cell
960
974
0 commit comments