Skip to content

Commit d354267

Browse files
author
locojaydev
committed
adding float_format to ExcelFormatter
1 parent afde3f2 commit d354267

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

pandas/core/format.py

+13-3
Original file line numberDiff line numberDiff line change
@@ -720,23 +720,33 @@ class ExcelFormatter(object):
720720
----------
721721
df : dataframe
722722
na_rep: na representation
723-
index : boolean, default True
724-
output row names (index)
723+
float_format : string, default None
724+
Format string for floating point numbers
725725
cols : sequence, optional
726726
Columns to write
727+
index : boolean, default True
728+
output row names (index)
727729
"""
728730

729-
def __init__(self, df, na_rep='', cols=None):
731+
def __init__(self,
732+
df,
733+
na_rep='',
734+
float_format=None,
735+
cols=None
736+
):
730737
self.df = df
731738
self.rowcounter = 0
732739
self.na_rep = na_rep
733740
self.columns = cols
734741
if cols is None:
735742
self.columns = df.columns
743+
self.float_format = float_format
736744

737745
def _format_value(self, val):
738746
if lib.checknull(val):
739747
val = self.na_rep
748+
if self.float_format is not None and com.is_float(val):
749+
val = self.float_format % val
740750
return val
741751

742752
def _format_header_mi(self):

pandas/core/frame.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -1368,10 +1368,13 @@ def to_excel(self, excel_writer, sheet_name='sheet1', na_rep='',
13681368
from pandas.io.parsers import ExcelWriter
13691369
need_save = False
13701370
if isinstance(excel_writer, basestring):
1371-
excel_writer = ExcelWriter(excel_writer, na_rep=na_rep)
1371+
excel_writer = ExcelWriter(excel_writer)
13721372
need_save = True
13731373

1374-
formatter = fmt.ExcelFormatter(self, na_rep=na_rep, cols=cols)
1374+
formatter = fmt.ExcelFormatter(self,
1375+
na_rep=na_rep,
1376+
cols=cols,
1377+
float_format=float_format)
13751378
formatted_cells = formatter.get_formatted_cells()
13761379
excel_writer.write_cells(formatted_cells, sheet_name,
13771380
startrow=startrow, startcol=startcol)

pandas/io/parsers.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2048,7 +2048,8 @@ def _writecells_xlsx(self, cells, sheet_name, startrow, startcol):
20482048
elif isinstance(cell.val, datetime.date):
20492049
style.num_format_str = "YYYY-MM-DD"
20502050

2051-
#merging requires openpyxl latest (works on 1.5.7)
2051+
#merging requires openpyxl latest (works on 1.6.1)
2052+
#todo add version check
20522053
if cell.mergestart is not None and cell.mergeend is not None:
20532054
cletterstart = get_column_letter(startcol + cell.col + 1)
20542055
cletterend = get_column_letter(startcol + cell.mergeend + 1)

0 commit comments

Comments
 (0)