Skip to content

Commit 428803a

Browse files
committed
Excel tweaks to handle PeriodIndex and split test cases #2370 #2294 #2395
1 parent ea75b4b commit 428803a

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

pandas/core/format.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import itertools
2121

22+
from pandas.tseries.period import PeriodIndex
2223

2324
docstring_to_string = """
2425
Parameters
@@ -688,7 +689,7 @@ def grouper(x):
688689
# ExcelCell = namedtuple("ExcelCell",
689690
# 'row, col, val, style, mergestart, mergeend')
690691

691-
class ExcelCell:
692+
class ExcelCell(object):
692693
__fields__ = ('row', 'col', 'val', 'style', 'mergestart', 'mergeend')
693694
__slots__ = __fields__
694695

@@ -849,6 +850,9 @@ def _format_regular_rows(self):
849850

850851
#write index_values
851852
index_values = self.df.index
853+
if isinstance(self.df.index, PeriodIndex):
854+
index_values = self.df.index.to_timestamp()
855+
852856
coloffset = 1
853857
for idx, idxval in enumerate(index_values):
854858
yield ExcelCell(self.rowcounter + idx, 0, idxval, header_style)

pandas/tests/test_frame.py

+34-3
Original file line numberDiff line numberDiff line change
@@ -4188,7 +4188,7 @@ def test_to_excel_styleconverter(self):
41884188
self.assertEquals(openpyxl.style.Alignment.HORIZONTAL_CENTER,
41894189
xlsx_style.alignment.horizontal)
41904190

4191-
def test_to_excel_header_styling(self):
4191+
def test_to_excel_header_styling_xls(self):
41924192

41934193
import StringIO
41944194
s = StringIO.StringIO(
@@ -4210,9 +4210,8 @@ def test_to_excel_header_styling(self):
42104210
cols=["Date", "type"])
42114211

42124212
try:
4213+
import xlwt
42134214
import xlrd
4214-
import openpyxl
4215-
from openpyxl.cell import get_column_letter
42164215
except ImportError:
42174216
raise nose.SkipTest
42184217

@@ -4239,6 +4238,38 @@ def test_to_excel_header_styling(self):
42394238
self.assertEquals(2, cell_xf.alignment.hor_align)
42404239

42414240
os.remove(filename)
4241+
4242+
4243+
def test_to_excel_header_styling_xlsx(self):
4244+
4245+
import StringIO
4246+
s = StringIO.StringIO(
4247+
"""Date,ticker,type,value
4248+
2001-01-01,x,close,12.2
4249+
2001-01-01,x,open ,12.1
4250+
2001-01-01,y,close,12.2
4251+
2001-01-01,y,open ,12.1
4252+
2001-02-01,x,close,12.2
4253+
2001-02-01,x,open ,12.1
4254+
2001-02-01,y,close,12.2
4255+
2001-02-01,y,open ,12.1
4256+
2001-03-01,x,close,12.2
4257+
2001-03-01,x,open ,12.1
4258+
2001-03-01,y,close,12.2
4259+
2001-03-01,y,open ,12.1""")
4260+
df = read_csv(s, parse_dates=["Date"])
4261+
pdf = df.pivot_table(values="value", rows=["ticker"],
4262+
cols=["Date", "type"])
4263+
4264+
try:
4265+
import openpyxl
4266+
from openpyxl.cell import get_column_letter
4267+
except ImportError:
4268+
raise nose.SkipTest
4269+
4270+
if openpyxl.__version__ < '1.6.1':
4271+
raise nose.SkipTest
4272+
42424273
# test xlsx_styling
42434274
filename = '__tmp__.xlsx'
42444275
pdf.to_excel(filename, 'test1')

0 commit comments

Comments
 (0)