Skip to content

Commit f0aa065

Browse files
y-pwesm
y-p
authored andcommitted
hemstring Excel functionality until sorted out
issue 2396
1 parent 8228253 commit f0aa065

File tree

2 files changed

+208
-140
lines changed

2 files changed

+208
-140
lines changed

pandas/core/format.py

+47-33
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)