@@ -34,15 +34,6 @@ def __init__(self, row, col, val, style=None, mergestart=None,
34
34
self .mergeend = mergeend
35
35
36
36
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
-
46
37
class CSSToExcelConverter (object ):
47
38
"""A callable for converting CSS declarations to ExcelWriter styles
48
39
@@ -389,6 +380,16 @@ def __init__(self, df, na_rep='', float_format=None, cols=None,
389
380
self .merge_cells = merge_cells
390
381
self .inf_rep = inf_rep
391
382
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
+
392
393
def _format_value (self , val ):
393
394
if is_scalar (val ) and missing .isna (val ):
394
395
val = self .na_rep
@@ -427,24 +428,24 @@ def _format_header_mi(self):
427
428
# Format multi-index as a merged cells.
428
429
for lnum in range (len (level_lengths )):
429
430
name = columns .names [lnum ]
430
- yield ExcelCell (lnum , coloffset , name , header_style )
431
+ yield ExcelCell (lnum , coloffset , name , self . header_style )
431
432
432
433
for lnum , (spans , levels , labels ) in enumerate (zip (
433
434
level_lengths , columns .levels , columns .labels )):
434
435
values = levels .take (labels )
435
436
for i in spans :
436
437
if spans [i ] > 1 :
437
438
yield ExcelCell (lnum , coloffset + i + 1 , values [i ],
438
- header_style , lnum ,
439
+ self . header_style , lnum ,
439
440
coloffset + i + spans [i ])
440
441
else :
441
442
yield ExcelCell (lnum , coloffset + i + 1 , values [i ],
442
- header_style )
443
+ self . header_style )
443
444
else :
444
445
# Format in legacy format with dots to indicate levels.
445
446
for i , values in enumerate (zip (* level_strs )):
446
447
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 )
448
449
449
450
self .rowcounter = lnum
450
451
@@ -469,7 +470,7 @@ def _format_header_regular(self):
469
470
470
471
for colindex , colname in enumerate (colnames ):
471
472
yield ExcelCell (self .rowcounter , colindex + coloffset , colname ,
472
- header_style )
473
+ self . header_style )
473
474
474
475
def _format_header (self ):
475
476
if isinstance (self .columns , ABCMultiIndex ):
@@ -482,7 +483,8 @@ def _format_header(self):
482
483
row = [x if x is not None else ''
483
484
for x in self .df .index .names ] + ['' ] * len (self .columns )
484
485
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 )
486
488
for colindex , val in enumerate (row ))
487
489
self .rowcounter += 1
488
490
return itertools .chain (gen , gen2 )
@@ -518,15 +520,16 @@ def _format_regular_rows(self):
518
520
519
521
if index_label and self .header is not False :
520
522
yield ExcelCell (self .rowcounter - 1 , 0 , index_label ,
521
- header_style )
523
+ self . header_style )
522
524
523
525
# write index_values
524
526
index_values = self .df .index
525
527
if isinstance (self .df .index , ABCPeriodIndex ):
526
528
index_values = self .df .index .to_timestamp ()
527
529
528
530
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 )
530
533
531
534
coloffset = 1
532
535
else :
@@ -562,7 +565,7 @@ def _format_hierarchical_rows(self):
562
565
563
566
for cidx , name in enumerate (index_labels ):
564
567
yield ExcelCell (self .rowcounter - 1 , cidx , name ,
565
- header_style )
568
+ self . header_style )
566
569
567
570
if self .merge_cells :
568
571
# Format hierarchical rows as merged cells.
@@ -581,20 +584,20 @@ def _format_hierarchical_rows(self):
581
584
for i in spans :
582
585
if spans [i ] > 1 :
583
586
yield ExcelCell (self .rowcounter + i , gcolidx ,
584
- values [i ], header_style ,
587
+ values [i ], self . header_style ,
585
588
self .rowcounter + i + spans [i ] - 1 ,
586
589
gcolidx )
587
590
else :
588
591
yield ExcelCell (self .rowcounter + i , gcolidx ,
589
- values [i ], header_style )
592
+ values [i ], self . header_style )
590
593
gcolidx += 1
591
594
592
595
else :
593
596
# Format hierarchical rows with non-merged values.
594
597
for indexcolvals in zip (* self .df .index ):
595
598
for idx , indexcolval in enumerate (indexcolvals ):
596
599
yield ExcelCell (self .rowcounter + idx , gcolidx ,
597
- indexcolval , header_style )
600
+ indexcolval , self . header_style )
598
601
gcolidx += 1
599
602
600
603
for cell in self ._generate_body (gcolidx ):
0 commit comments