Skip to content

Commit 96680f9

Browse files
committed
Largely complete CSSToExcelConverter and Styler.to_excel()
1 parent f1cde08 commit 96680f9

File tree

3 files changed

+408
-44
lines changed

3 files changed

+408
-44
lines changed

pandas/core/frame.py

+40-40
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,43 @@
199199
200200
"""
201201

202+
203+
def _to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='',
204+
float_format=None, columns=None, header=True, index=True,
205+
index_label=None, startrow=0, startcol=0, engine=None,
206+
merge_cells=True, encoding=None, inf_rep='inf', verbose=True,
207+
freeze_panes=None):
208+
# This implementation is shared by Styler.to_excel
209+
from pandas.io.excel import ExcelWriter
210+
need_save = False
211+
if encoding is None:
212+
encoding = 'ascii'
213+
214+
if isinstance(excel_writer, compat.string_types):
215+
excel_writer = ExcelWriter(excel_writer, engine=engine)
216+
need_save = True
217+
218+
formatter = fmt.ExcelFormatter(self, na_rep=na_rep, cols=columns,
219+
header=header,
220+
float_format=float_format, index=index,
221+
index_label=index_label,
222+
merge_cells=merge_cells,
223+
inf_rep=inf_rep)
224+
225+
formatted_cells = formatter.get_formatted_cells()
226+
227+
if freeze_panes is not None:
228+
if len(freeze_panes) != 2 or any(not isinstance(item, int)
229+
for item in freeze_panes):
230+
raise ValueError("freeze_panes must be of form (row, column)"
231+
" where row and column are integers")
232+
233+
excel_writer.write_cells(formatted_cells, sheet_name,
234+
startrow=startrow, startcol=startcol,
235+
freeze_panes=freeze_panes)
236+
if need_save:
237+
excel_writer.save()
238+
202239
# -----------------------------------------------------------------------
203240
# DataFrame class
204241

@@ -1391,46 +1428,9 @@ def to_csv(self, path_or_buf=None, sep=",", na_rep='', float_format=None,
13911428
if path_or_buf is None:
13921429
return formatter.path_or_buf.getvalue()
13931430

1394-
@Appender(_shared_docs['to_excel'] % _shared_doc_kwargs)
1395-
def to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='',
1396-
float_format=None, columns=None, header=True, index=True,
1397-
index_label=None, startrow=0, startcol=0, engine=None,
1398-
merge_cells=True, encoding=None, inf_rep='inf', verbose=True,
1399-
freeze_panes=None):
1400-
from pandas.io.excel import ExcelWriter
1401-
need_save = False
1402-
if encoding is None:
1403-
encoding = 'ascii'
1404-
1405-
if isinstance(excel_writer, compat.string_types):
1406-
excel_writer = ExcelWriter(excel_writer, engine=engine)
1407-
need_save = True
1408-
1409-
formatter = fmt.ExcelFormatter(self, na_rep=na_rep, cols=columns,
1410-
header=header,
1411-
float_format=float_format, index=index,
1412-
index_label=index_label,
1413-
merge_cells=merge_cells,
1414-
inf_rep=inf_rep)
1415-
1416-
formatted_cells = formatter.get_formatted_cells()
1417-
freeze_panes = self._validate_freeze_panes(freeze_panes)
1418-
excel_writer.write_cells(formatted_cells, sheet_name,
1419-
startrow=startrow, startcol=startcol,
1420-
freeze_panes=freeze_panes)
1421-
if need_save:
1422-
excel_writer.save()
1423-
1424-
def _validate_freeze_panes(self, freeze_panes):
1425-
if freeze_panes is not None:
1426-
if (
1427-
len(freeze_panes) == 2 and
1428-
all(isinstance(item, int) for item in freeze_panes)
1429-
):
1430-
return freeze_panes
1431-
1432-
raise ValueError("freeze_panes must be of form (row, column)"
1433-
" where row and column are integers")
1431+
to_excel = Appender(_shared_docs['to_excel']
1432+
% _shared_doc_kwargs)(_to_excel)
1433+
14341434

14351435
def to_stata(self, fname, convert_dates=None, write_index=True,
14361436
encoding="latin-1", byteorder=None, time_stamp=None,

0 commit comments

Comments
 (0)