@@ -118,6 +118,8 @@ class CSSToExcelConverter:
118
118
Operates by first computing CSS styles in a fairly generic
119
119
way (see :meth: `compute_css`) then determining Excel style
120
120
properties from CSS properties (see :meth: `build_xlstyle`).
121
+ way (see :meth: `compute_css`) then determining Excel style
122
+ properties from CSS properties (see :meth: `build_xlstyle`).
121
123
122
124
Parameters
123
125
----------
@@ -628,10 +630,10 @@ def _format_header_mi(self) -> Iterable[ExcelCell]:
628
630
fixed_levels = []
629
631
for lvl in range (columns .nlevels ):
630
632
vals = columns .get_level_values (lvl )
631
- fixed_levels .append ([NBSP if pd .isna (v ) else str (v ) for v in vals ])
633
+ fixed_levels .append ([NBSP if missing .isna (v ) else str (v ) for v in vals ])
632
634
fixed_columns = MultiIndex .from_arrays (fixed_levels , names = columns .names )
633
635
else :
634
- fixed_columns = Index ([NBSP if pd .isna (v ) else str (v ) for v in columns ], name = columns .name )
636
+ fixed_columns = Index ([NBSP if missing .isna (v ) else str (v ) for v in columns ], name = columns .name )
635
637
636
638
level_strs = fixed_columns ._format_multi (sparsify = merge_columns , include_names = False )
637
639
level_lengths = get_level_lengths (level_strs )
@@ -642,7 +644,7 @@ def _format_header_mi(self) -> Iterable[ExcelCell]:
642
644
coloffset = self .df .index .nlevels - 1
643
645
644
646
for lnum , name in enumerate (columns .names ):
645
- val = NBSP if pd .isna (name ) else str (name )
647
+ val = NBSP if missing .isna (name ) else str (name )
646
648
yield ExcelCell (
647
649
row = lnum ,
648
650
col = coloffset ,
@@ -651,10 +653,10 @@ def _format_header_mi(self) -> Iterable[ExcelCell]:
651
653
)
652
654
653
655
for lnum , (spans , levels , level_codes ) in enumerate (
654
- zip (level_lengths , columns .levels , columns .codes , strict = True )
656
+ zip (level_lengths , fixed_columns .levels , fixed_columns .codes , strict = True )
655
657
):
656
658
# level.take(codes) on fixed_columns.levels yields string values
657
- values = level .take (codes ).to_numpy ()
659
+ values = levels .take (level_codes ).to_numpy ()
658
660
659
661
for i , span_val in spans .items ():
660
662
mergestart , mergeend = None , None
@@ -673,6 +675,7 @@ def _format_header_mi(self) -> Iterable[ExcelCell]:
673
675
mergeend = mergeend ,
674
676
)
675
677
678
+
676
679
self .rowcounter = lnum
677
680
678
681
def _format_header_regular (self ) -> Iterable [ExcelCell ]:
@@ -698,7 +701,7 @@ def _format_header_regular(self) -> Iterable[ExcelCell]:
698
701
# header output matches console display (same behavior as
699
702
# applied to MultiIndex headers in _format_header_mi).
700
703
NBSP = "\u00A0 "
701
- colnames = [NBSP if pd .isna (v ) else str (v ) for v in colnames ]
704
+ colnames = [NBSP if missing .isna (v ) else str (v ) for v in colnames ]
702
705
703
706
for colindex , colname in enumerate (colnames ):
704
707
yield CssExcelCell (
0 commit comments