@@ -34,15 +34,6 @@ def __init__(self, row, col, val, style=None, mergestart=None,
3434 self .mergeend = mergeend
3535
3636
37- header_style = {"font" : {"bold" : True },
38- "borders" : {"top" : "thin" ,
39- "right" : "thin" ,
40- "bottom" : "thin" ,
41- "left" : "thin" },
42- "alignment" : {"horizontal" : "center" ,
43- "vertical" : "top" }}
44-
45-
4637class CSSToExcelConverter (object ):
4738 """A callable for converting CSS declarations to ExcelWriter styles
4839
@@ -389,6 +380,16 @@ def __init__(self, df, na_rep='', float_format=None, cols=None,
389380 self .merge_cells = merge_cells
390381 self .inf_rep = inf_rep
391382
383+ @property
384+ def header_style (self ):
385+ return {"font" : {"bold" : True },
386+ "borders" : {"top" : "thin" ,
387+ "right" : "thin" ,
388+ "bottom" : "thin" ,
389+ "left" : "thin" },
390+ "alignment" : {"horizontal" : "center" ,
391+ "vertical" : "top" }}
392+
392393 def _format_value (self , val ):
393394 if is_scalar (val ) and missing .isna (val ):
394395 val = self .na_rep
@@ -427,24 +428,24 @@ def _format_header_mi(self):
427428 # Format multi-index as a merged cells.
428429 for lnum in range (len (level_lengths )):
429430 name = columns .names [lnum ]
430- yield ExcelCell (lnum , coloffset , name , header_style )
431+ yield ExcelCell (lnum , coloffset , name , self . header_style )
431432
432433 for lnum , (spans , levels , labels ) in enumerate (zip (
433434 level_lengths , columns .levels , columns .labels )):
434435 values = levels .take (labels )
435436 for i in spans :
436437 if spans [i ] > 1 :
437438 yield ExcelCell (lnum , coloffset + i + 1 , values [i ],
438- header_style , lnum ,
439+ self . header_style , lnum ,
439440 coloffset + i + spans [i ])
440441 else :
441442 yield ExcelCell (lnum , coloffset + i + 1 , values [i ],
442- header_style )
443+ self . header_style )
443444 else :
444445 # Format in legacy format with dots to indicate levels.
445446 for i , values in enumerate (zip (* level_strs )):
446447 v = "." .join (map (pprint_thing , values ))
447- yield ExcelCell (lnum , coloffset + i + 1 , v , header_style )
448+ yield ExcelCell (lnum , coloffset + i + 1 , v , self . header_style )
448449
449450 self .rowcounter = lnum
450451
@@ -469,7 +470,7 @@ def _format_header_regular(self):
469470
470471 for colindex , colname in enumerate (colnames ):
471472 yield ExcelCell (self .rowcounter , colindex + coloffset , colname ,
472- header_style )
473+ self . header_style )
473474
474475 def _format_header (self ):
475476 if isinstance (self .columns , ABCMultiIndex ):
@@ -482,7 +483,8 @@ def _format_header(self):
482483 row = [x if x is not None else ''
483484 for x in self .df .index .names ] + ['' ] * len (self .columns )
484485 if reduce (lambda x , y : x and y , map (lambda x : x != '' , row )):
485- gen2 = (ExcelCell (self .rowcounter , colindex , val , header_style )
486+ gen2 = (ExcelCell (self .rowcounter , colindex , val ,
487+ self .header_style )
486488 for colindex , val in enumerate (row ))
487489 self .rowcounter += 1
488490 return itertools .chain (gen , gen2 )
@@ -518,15 +520,16 @@ def _format_regular_rows(self):
518520
519521 if index_label and self .header is not False :
520522 yield ExcelCell (self .rowcounter - 1 , 0 , index_label ,
521- header_style )
523+ self . header_style )
522524
523525 # write index_values
524526 index_values = self .df .index
525527 if isinstance (self .df .index , ABCPeriodIndex ):
526528 index_values = self .df .index .to_timestamp ()
527529
528530 for idx , idxval in enumerate (index_values ):
529- yield ExcelCell (self .rowcounter + idx , 0 , idxval , header_style )
531+ yield ExcelCell (self .rowcounter + idx , 0 , idxval ,
532+ self .header_style )
530533
531534 coloffset = 1
532535 else :
@@ -562,7 +565,7 @@ def _format_hierarchical_rows(self):
562565
563566 for cidx , name in enumerate (index_labels ):
564567 yield ExcelCell (self .rowcounter - 1 , cidx , name ,
565- header_style )
568+ self . header_style )
566569
567570 if self .merge_cells :
568571 # Format hierarchical rows as merged cells.
@@ -581,20 +584,20 @@ def _format_hierarchical_rows(self):
581584 for i in spans :
582585 if spans [i ] > 1 :
583586 yield ExcelCell (self .rowcounter + i , gcolidx ,
584- values [i ], header_style ,
587+ values [i ], self . header_style ,
585588 self .rowcounter + i + spans [i ] - 1 ,
586589 gcolidx )
587590 else :
588591 yield ExcelCell (self .rowcounter + i , gcolidx ,
589- values [i ], header_style )
592+ values [i ], self . header_style )
590593 gcolidx += 1
591594
592595 else :
593596 # Format hierarchical rows with non-merged values.
594597 for indexcolvals in zip (* self .df .index ):
595598 for idx , indexcolval in enumerate (indexcolvals ):
596599 yield ExcelCell (self .rowcounter + idx , gcolidx ,
597- indexcolval , header_style )
600+ indexcolval , self . header_style )
598601 gcolidx += 1
599602
600603 for cell in self ._generate_body (gcolidx ):
0 commit comments