§
    ªöÉgâ€  ã                  óª  — d Z ddlmZ ddlmZmZmZmZ ddlZddl	Z	ddl
Z
ddlmZmZmZmZ ddlZddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZm Z m!Z!m"Z" ddl#m$c m%Z& ddl'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 erddl2m3Z3m4Z4m5Z5m6Z6 ddlm7Z7  G d„ d¦  «        Z8 G d„ de8¦  «        Z9 G d„ d¦  «        Z: G d„ d¦  «        Z;dS )zC
Utilities for conversion to writer-agnostic Excel representation.
é    )Úannotations)ÚHashableÚIterableÚMappingÚSequenceN)ÚTYPE_CHECKINGÚAnyÚCallableÚcast)Úis_list_like)Údoc)Úfind_stack_level)Úmissing)Úis_floatÚ	is_scalar)Ú	DataFrameÚIndexÚ
MultiIndexÚPeriodIndex)Ú_shared_docs)ÚCSS4_COLORS)ÚCSSResolverÚ
CSSWarning)Úget_level_lengths)Úpprint_thing)ÚFilePathÚ
IndexLabelÚStorageOptionsÚWriteExcelBuffer©ÚExcelWriterc                  ó&   — e Zd ZdZeZ	 	 	 ddd„ZdS )Ú	ExcelCell©ÚrowÚcolÚvalÚstyleÚ
mergestartÚmergeendNr%   Úintr&   r)   ú
int | Noner*   ÚreturnÚNonec                óZ   — || _         || _        || _        || _        || _        || _        d S ©Nr$   )Úselfr%   r&   r'   r(   r)   r*   s          úc/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/pandas/io/formats/excel.pyÚ__init__zExcelCell.__init__C   s2   € ð ˆŒØˆŒØˆŒØˆŒ
Ø$ˆŒØ ˆŒˆˆó    )NNN)
r%   r+   r&   r+   r)   r,   r*   r,   r-   r.   )Ú__name__Ú
__module__Ú__qualname__Ú
__fields__Ú	__slots__r3   © r4   r2   r#   r#   ?   sB   € € € € € ØI€JØ€Ið Ø!%Ø#ð!ð !ð !ð !ð !ð !ð !r4   r#   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚCssExcelCellr%   r+   r&   r(   údict | NoneÚ
css_stylesú3dict[tuple[int, int], list[tuple[str, Any]]] | NoneÚcss_rowÚcss_colÚcss_converterúCallable | Noner-   r.   c	                óÌ   •— |rB|r@d„ |||f         D ¦   «         }
t          |
                     ¦   «         ¦  «        } ||¦  «        } t          ¦   «         j        d||||dœ|	¤Ž d S )Nc                ó>   — i | ]\  }}|                      ¦   «         |“ŒS r:   ©Úlower)Ú.0Úpropr'   s      r2   ú
<dictcomp>z)CssExcelCell.__init__.<locals>.<dictcomp>c   s3   € ð  ð  ð  Ù&/ d¨C�—
’
‘”˜cð ð  ð  r4   ©r%   r&   r'   r(   r:   )Ú	frozensetÚitemsÚsuperr3   )r1   r%   r&   r'   r(   r>   r@   rA   rB   ÚkwargsÚdeclaration_dictÚunique_declarationsÚ	__class__s               €r2   r3   zCssExcelCell.__init__U   s˜   ø€ ð ð 	7˜-ð 	7ð ð  Ø3=¸gÀwÐ>NÔ3Oð ñ  ô  Ðõ #,Ð,<×,BÒ,BÑ,DÔ,DÑ"EÔ"EÐØ!�MÐ"5Ñ6Ô6ˆEà�‰ŒÔÐJ˜S c¨s¸%ÐJÐJÀ6ÐJÐJÐJÐJÐJr4   )r%   r+   r&   r+   r(   r=   r>   r?   r@   r+   rA   r+   rB   rC   r-   r.   )r5   r6   r7   r3   Ú__classcell__)rR   s   @r2   r<   r<   T   sG   ø€ € € € € ðKð Kð Kð Kð Kð Kð Kð Kð Kð Kr4   r<   c                  ót  — e Zd ZU dZeZdddddddœZddddddddddddddœZdddd	œZd
ddddœZ	d„ dD ¦   «         Z
ded<   dKdLd„Z e¦   «         ZdMd„ZdMd„ZdNd„ZdOd!„ZdPd"„ZdQd$„ZdRd&„ZdSd*„ZdTd,„ZdUd.„ZdVd1„ZdWd2„ZdXd4„ZdYd6„ZdQd7„ZdQd8„ZdZd:„Zd[d<„Z dQd=„Z!dZd>„Z"d\d@„Z#d]dC„Z$d^dE„Z%d_dH„Z&d`dI„Z'd_dJ„Z(dS )aÚCSSToExcelConverteraK  
    A callable for converting CSS declarations to ExcelWriter styles

    Supports parts of CSS 2.2, with minimal CSS 3.0 support (e.g. text-shadow),
    focusing on font styling, backgrounds, borders and alignment.

    Operates by first computing CSS styles in a fairly generic
    way (see :meth:`compute_css`) then determining Excel style
    properties from CSS properties (see :meth:`build_xlstyle`).

    Parameters
    ----------
    inherited : str, optional
        CSS declarations understood to be the containing scope for the
        CSS processed by :meth:`__call__`.
    ÚtopÚcenterÚbottom)rV   ztext-topÚmiddleÚbaselinerX   ztext-bottomTF)ÚboldÚbolderÚ600Ú700Ú800Ú900ÚnormalÚlighterÚ100Ú200Ú300Ú400Ú500)ra   ÚitalicÚobliqueé   é   é   é   )Úserifz
sans-serifÚcursiveÚfantasyc                ó8   — i | ]}|                      ¦   «         |“ŒS r:   rF   )rH   r(   s     r2   rJ   zCSSToExcelConverter.<dictcomp>¨   s2   € ð ð ð àð 	�Š‰Œ�uðð ð r4   )
ÚdashedÚmediumDashDotÚ
dashDotDotÚhairÚdottedÚmediumDashDotDotÚdoubleÚdashDotÚslantDashDotÚmediumDashedzdict[str, str] | NoneÚ	inheritedNú
str | Noner-   r.   c                óŠ   — |�|                       |¦  «        | _        nd | _        t          j        | j        ¦  «        | _        d S r0   )Úcompute_cssr|   Ú	functoolsÚcacheÚ_call_uncachedÚ_call_cached)r1   r|   s     r2   r3   zCSSToExcelConverter.__init__¾   sC   € ØÐ Ø!×-Ò-¨iÑ8Ô8ˆDŒNˆNà!ˆDŒNõ &œO¨DÔ,?Ñ@Ô@ˆÔÐÐr4   Údeclarationsú str | frozenset[tuple[str, str]]údict[str, dict[str, str]]c                ó,   — |                       |¦  «        S )aå  
        Convert CSS declarations to ExcelWriter style.

        Parameters
        ----------
        declarations : str | frozenset[tuple[str, str]]
            CSS string or set of CSS declaration tuples.
            e.g. "font-weight: bold; background: blue" or
            {("font-weight", "bold"), ("background", "blue")}

        Returns
        -------
        xlstyle : dict
            A style as interpreted by ExcelWriter when found in
            ExcelCell.style.
        )rƒ   )r1   r„   s     r2   Ú__call__zCSSToExcelConverter.__call__Ê   s   € ð& × Ò  Ñ.Ô.Ð.r4   c                ób   — |                       || j        ¦  «        }|                      |¦  «        S r0   )r   r|   Úbuild_xlstyle)r1   r„   Ú
propertiess      r2   r‚   z"CSSToExcelConverter._call_uncachedß   s/   € ð ×%Ò% l°D´NÑCÔCˆ
Ø×!Ò! *Ñ-Ô-Ð-r4   ÚpropsúMapping[str, str]c                óø   ‡— |                       |¦  «        |                      |¦  «        |                      |¦  «        |                      |¦  «        |                      |¦  «        dœ}dˆfd„Š ‰|¦  «         |S )N)Ú	alignmentÚborderÚfillÚfontÚnumber_formatÚdúdict[str, str | None]r-   r.   c                ó¬   •— t          |                      ¦   «         ¦  «        D ]0\  }}|€| |= Œt          |t          ¦  «        r ‰|¦  «         |s| |= Œ1dS )z4Remove key where value is None, through nested dictsN)ÚlistrM   Ú
isinstanceÚdict)r”   ÚkÚvÚremove_nones      €r2   rœ   z6CSSToExcelConverter.build_xlstyle.<locals>.remove_noneð   sk   ø€ å˜QŸWšW™YœY™œð !ð !‘��1Ø�9Ø˜!˜˜Ý ¥4Ñ(Ô(ð !Ø�K ‘N”N�NØð !Ø˜a˜Døð!ð !r4   )r”   r•   r-   r.   )Úbuild_alignmentÚbuild_borderÚ
build_fillÚ
build_fontÚbuild_number_format)r1   rŒ   Úoutrœ   s      @r2   rŠ   z!CSSToExcelConverter.build_xlstyleå   s•   ø€ à×-Ò-¨eÑ4Ô4Ø×'Ò'¨Ñ.Ô.Ø—O’O EÑ*Ô*Ø—O’O EÑ*Ô*Ø!×5Ò5°eÑ<Ô<ð
ð 
ˆð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	ˆ�CÑÔÐØˆ
r4   údict[str, bool | str | None]c                ó€   — |                      d¦  «        |                      |¦  «        |                      |¦  «        dœS )Nz
text-align)Ú
horizontalÚverticalÚ	wrap_text)ÚgetÚ_get_vertical_alignmentÚ_get_is_wrap_text©r1   rŒ   s     r2   r�   z#CSSToExcelConverter.build_alignmentý   sD   € ð  Ÿ)š) LÑ1Ô1Ø×4Ò4°UÑ;Ô;Ø×/Ò/°Ñ6Ô6ð
ð 
ð 	
r4   c                óh   — |                      d¦  «        }|r| j                              |¦  «        S d S )Nzvertical-align)r¨   ÚVERTICAL_MAP)r1   rŒ   Úvertical_aligns      r2   r©   z+CSSToExcelConverter._get_vertical_alignment  s8   € ØŸšÐ#3Ñ4Ô4ˆØð 	9ØÔ$×(Ò(¨Ñ8Ô8Ð8Øˆtr4   úbool | Nonec                ó^   — |                      d¦  «        €d S t          |d         dv¦  «        S )Nzwhite-space)ÚnowrapÚprezpre-line)r¨   Úboolr«   s     r2   rª   z%CSSToExcelConverter._get_is_wrap_text  s2   € Ø�9Š9�]Ñ#Ô#Ð+Ø�4Ý�E˜-Ô(Ð0MÐMÑNÔNÐNr4   ú dict[str, dict[str, str | None]]c                ó$   ‡ ‡— ˆˆ fd„dD ¦   «         S )Nc                óJ  •— i | ]Ÿ}|‰                      ‰                     d |› d�¦  «        ‰                     d |› d�¦  «        ‰                     ‰                     d |› d�¦  «        ¦  «        ¦  «        ‰                     ‰                     d |› d�¦  «        ¦  «        dœ“Œ S )zborder-z-stylez-widthz-color)r(   Úcolor)Ú_border_styler¨   Úcolor_to_excel)rH   ÚsiderŒ   r1   s     €€r2   rJ   z4CSSToExcelConverter.build_border.<locals>.<dictcomp>  sÒ   ø€ ð 

ð 

ð 

ð ð Ø×+Ò+Ø—I’IÐ4¨Ð4Ð4Ð4Ñ5Ô5Ø—I’IÐ4¨Ð4Ð4Ð4Ñ5Ô5Ø×'Ò'¨¯	ª	Ð2H¸DÐ2HÐ2HÐ2HÑ(IÔ(IÑJÔJñô ð
 ×,Ò,¨U¯YªYÐ7MÀÐ7MÐ7MÐ7MÑ-NÔ-NÑOÔOðð ð

ð 

ð 

r4   ©rV   ÚrightrX   Úleftr:   r«   s   ``r2   rž   z CSSToExcelConverter.build_border  s6   øø€ ð

ð 

ð 

ð 

ð 

ð ;ð

ñ 

ô 

ð 
	
r4   r(   Úwidthr·   c                óP  — |€|€|€d S |€|€dS |dv rdS |                       |¦  «        }|€dS |dv r|S |dk    rdS |dk    r|dv rdS dS |dk    r|dv rdS d	S || j        v r| j        |         S t          j        d
t	          |¦  «        › �t
          t          ¦   «         ¬¦  «         dS )NÚnone)rÀ   Úhidden)NÚgrooveÚridgeÚinsetÚoutsetÚsolidrx   rv   )ru   Úthinrw   rr   r{   zUnhandled border style format: ©Ú
stacklevel)Ú_get_width_nameÚBORDER_STYLE_MAPÚwarningsÚwarnÚreprr   r   )r1   r(   r¾   r·   Ú
width_names        r2   r¸   z!CSSToExcelConverter._border_style  s  € ð ˆ=˜U˜]¨u¨}à�4àˆ=˜U˜]à�6àÐ&Ð&Ð&Ø�6à×)Ò)¨%Ñ0Ô0ˆ
ØÐØ�6àÐIÐIÐIàÐà�HÒÐØ�8Ø�HÒÐØÐ-Ð-Ð-Ø�xØ%Ð%Ø�HÒÐØÐ-Ð-Ð-Ø�xØ!�>Ø�dÔ+Ð+Ð+àÔ(¨Ô/Ð/åŒMØ?µ$°u±+´+Ð?Ð?ÝÝ+Ñ-Ô-ðñ ô ð ð
 �6r4   Úwidth_inputc                ó`   — |                       |¦  «        }|dk     rd S |dk     rdS |dk     rdS dS )Ngñhãˆµøä>gÍÌÌÌÌÌô?rÇ   gffffff@ÚmediumÚthick)Ú_width_to_float)r1   rÐ   r¾   s      r2   rÊ   z#CSSToExcelConverter._get_width_nameV  sD   € Ø×$Ò$ [Ñ1Ô1ˆØ�4Š<ˆ<Ø�4Ø�SŠ[ˆ[Ø�6Ø�SŠ[ˆ[Ø�8Øˆwr4   Úfloatc                ó4   — |€d}|                       |¦  «        S )NÚ2pt)Ú_pt_to_float)r1   r¾   s     r2   rÔ   z#CSSToExcelConverter._width_to_float`  s    € Øˆ=ØˆEØ× Ò  Ñ'Ô'Ð'r4   Ú	pt_stringÚstrc                ót   — |                      d¦  «        sJ ‚t          |                     d¦  «        ¦  «        S )NÚpt)ÚendswithrÕ   Úrstrip)r1   rÙ   s     r2   rØ   z CSSToExcelConverter._pt_to_floate  s8   € Ø×!Ò! $Ñ'Ô'Ð'Ð'Ð'Ý�Y×%Ò% dÑ+Ô+Ñ,Ô,Ð,r4   c                óh   — |                      d¦  «        }|dvr|                      |¦  «        ddœS d S )Nzbackground-color)NÚtransparentrÀ   rÆ   )ÚfgColorÚpatternType)r¨   r¹   )r1   rŒ   Ú
fill_colors      r2   rŸ   zCSSToExcelConverter.build_filli  sF   € ð —Y’YÐ1Ñ2Ô2ˆ
ØÐ:Ð:Ð:Ø#×2Ò2°:Ñ>Ô>ÈwÐWÐWÐWð ;Ð:r4   r•   c                óŽ   — |                      d¦  «        }t          |t          ¦  «        r|                     dd¦  «        n|}d|iS )Nznumber-formatõ   Â§ú;Úformat_code)r¨   r˜   rÚ   Úreplace)r1   rŒ   Úfcs      r2   r¡   z'CSSToExcelConverter.build_number_formatp  sE   € Ø�YŠY�Ñ'Ô'ˆÝ&0°µSÑ&9Ô&9ÐAˆR�ZŠZ˜˜cÑ"Ô"Ð"¸rˆØ˜rÐ"Ð"r4   ú$dict[str, bool | float | str | None]c                ó   — |                       |¦  «        }|                      |¦  «        }|r|d         nd |                      |¦  «        |                      |¦  «        |                      |¦  «        |                      |¦  «        d|v rdnd d|v pd |                      |                     d¦  «        ¦  «        |                      |¦  «        dœ	S )Nr   Ú	underlineÚsinglezline-throughr·   )	ÚnameÚfamilyÚsizer[   rh   rì   Ústriker·   Úshadow)	Ú_get_font_namesÚ_get_decorationÚ_select_font_familyÚ_get_font_sizeÚ_get_is_boldÚ_get_is_italicr¹   r¨   Ú_get_shadow)r1   rŒ   Ú
font_namesÚ
decorations       r2   r    zCSSToExcelConverter.build_fontu  sÙ   € ð ×)Ò)¨%Ñ0Ô0ˆ
Ø×)Ò)¨%Ñ0Ô0ˆ
à%/Ð9�J˜q”M�M°TØ×.Ò.¨zÑ:Ô:Ø×'Ò'¨Ñ.Ô.Ø×%Ò% eÑ,Ô,Ø×)Ò)¨%Ñ0Ô0Ø&1°ZÐ&?Ð&?˜(˜(ÀTØ%¨Ð3Ð<¸Ø×(Ò(¨¯ª°7Ñ);Ô);Ñ<Ô<à×&Ò& uÑ-Ô-ð
ð 
ð 	
r4   c                óh   — |                      d¦  «        }|r| j                              |¦  «        S d S )Nzfont-weight)r¨   ÚBOLD_MAP)r1   rŒ   Úweights      r2   r÷   z CSSToExcelConverter._get_is_bold‡  s6   € Ø—’˜=Ñ)Ô)ˆØð 	-Ø”=×$Ò$ VÑ,Ô,Ð,Øˆtr4   c                óh   — |                      d¦  «        }|r| j                              |¦  «        S d S )Nz
font-style)r¨   Ú
ITALIC_MAP)r1   rŒ   Ú
font_styles      r2   rø   z"CSSToExcelConverter._get_is_italic�  s6   € Ø—Y’Y˜|Ñ,Ô,ˆ
Øð 	3Ø”?×&Ò& zÑ2Ô2Ð2Øˆtr4   úSequence[str]c                ó\   — |                      d¦  «        }|�|                     ¦   «         S dS )Nztext-decorationr:   )r¨   Úsplit)r1   rŒ   rû   s      r2   rô   z#CSSToExcelConverter._get_decoration“  s1   € Ø—Y’YÐ0Ñ1Ô1ˆ
ØÐ!Ø×#Ò#Ñ%Ô%Ð%à�2r4   rû   c                ó   — d|v rdS d S )Nrì   rí   r:   )r1   rû   s     r2   Ú_get_underlinez"CSSToExcelConverter._get_underlineš  s   € Ø˜*Ð$Ð$Ø�8Øˆtr4   c                ó^   — d|v r(t          t          j        d|d         ¦  «        ¦  «        S d S )Nztext-shadowz^[^#(]*[1-9])r³   ÚreÚsearchr«   s     r2   rù   zCSSToExcelConverter._get_shadowŸ  s1   € Ø˜EÐ!Ð!Ý�œ	 .°%¸Ô2FÑGÔGÑHÔHÐHØˆtr4   c                óp  — t          j        d|                     dd¦  «        ¦  «        }g }|D ]‡}|d d…         dk    r|dd…                              dd¦  «        }nA|d d…         dk    r|dd…                              d	d¦  «        }n|                     ¦   «         }|r|                     |¦  «         Œˆ|S )
Nz›(?x)
            (
            "(?:[^"]|\\")+"
            |
            '(?:[^']|\\')+'
            |
            [^'",]+
            )(?=,|\s*$)
        zfont-familyÚ rj   ú"éÿÿÿÿz\"ú'z\')r  Úfindallr¨   rè   ÚstripÚappend)r1   rŒ   Úfont_names_tmprú   rî   s        r2   ró   z#CSSToExcelConverter._get_font_names¤  sÑ   € Ýœðð �IŠI�m RÑ(Ô(ñ
ô 
ˆð ˆ
Ø"ð 	(ð 	(ˆDØ�B�Q�BŒx˜3ŠˆØ˜A˜b˜D”z×)Ò)¨%°Ñ5Ô5��Ø�b�q�b”˜S’�Ø˜A˜b˜D”z×)Ò)¨%°Ñ5Ô5��à—z’z‘|”|�Øð (Ø×!Ò! $Ñ'Ô'Ð'øØÐr4   úfloat | Nonec                ó^   — |                      d¦  «        }|€|S |                      |¦  «        S )Nz	font-size)r¨   rØ   )r1   rŒ   rð   s      r2   rö   z"CSSToExcelConverter._get_font_size¾  s1   € Ø�yŠy˜Ñ%Ô%ˆØˆ<ØˆKØ× Ò  Ñ&Ô&Ð&r4   rú   r,   c                óP   — d }|D ] }| j                              |¦  «        }|r nŒ!|S r0   )Ú
FAMILY_MAPr¨   )r1   rú   rï   rî   s       r2   rõ   z'CSSToExcelConverter._select_font_familyÄ  sD   € ØˆØð 	ð 	ˆDØ”_×(Ò(¨Ñ.Ô.ˆFØð Ø�ðð ˆr4   r'   c                ó  — |€d S |                       |¦  «        r|                      |¦  «        S 	 | j        |         S # t          $ r; t	          j        dt          |¦  «        › �t          t          ¦   «         ¬¦  «         Y nw xY wd S )NzUnhandled color format: rÈ   )	Ú_is_hex_colorÚ_convert_hex_to_excelÚNAMED_COLORSÚKeyErrorrÌ   rÍ   rÎ   r   r   ©r1   r'   s     r2   r¹   z"CSSToExcelConverter.color_to_excelÍ  s«   € Øˆ;Ø�4à×Ò˜cÑ"Ô"ð 	3Ø×-Ò-¨cÑ2Ô2Ð2ð	ØÔ$ SÔ)Ð)øÝð 	ð 	ð 	ÝŒMØ6­4°©9¬9Ð6Ð6ÝÝ+Ñ-Ô-ðñ ô ð ð ð ð	øøøð ˆts   °= ½ABÂBÚcolor_stringr³   c                óF   — t          |                     d¦  «        ¦  «        S )Nú#)r³   Ú
startswith)r1   r  s     r2   r  z!CSSToExcelConverter._is_hex_colorÞ  s   € Ý�L×+Ò+¨CÑ0Ô0Ñ1Ô1Ð1r4   c                óè   — |                      d¦  «        }|                      |¦  «        r5|d         dz  |d         dz  z   |d         dz  z                        ¦   «         S |                     ¦   «         S )Nr  r   rk   rj   )ÚlstripÚ_is_shorthand_colorÚupper©r1   r  Úcodes      r2   r  z)CSSToExcelConverter._convert_hex_to_excelá  sm   € Ø×"Ò" 3Ñ'Ô'ˆØ×#Ò# LÑ1Ô1ð 	 Ø˜”G˜a‘K $ q¤'¨A¡+Ñ-°°Q´¸!±Ñ;×BÒBÑDÔDÐDà—:’:‘<”<Ðr4   c                ó¤   — |                      d¦  «        }t          |¦  «        dk    rdS t          |¦  «        dk    rdS t          d|› �¦  «        ‚)zcCheck if color code is shorthand.

        #FFF is a shorthand as opposed to full #FFFFFF.
        r  é   Té   FzUnexpected color )r"  ÚlenÚ
ValueErrorr%  s      r2   r#  z'CSSToExcelConverter._is_shorthand_colorè  sV   € ð
 ×"Ò" 3Ñ'Ô'ˆÝˆt‰9Œ9˜Š>ˆ>Ø�4Ý�‰YŒY˜!Š^ˆ^Ø�5åÐ?°Ð?Ð?Ñ@Ô@Ð@r4   r0   )r|   r}   r-   r.   )r„   r…   r-   r†   )rŒ   r�   r-   r†   )rŒ   r�   r-   r£   )rŒ   r�   r-   r}   )rŒ   r�   r-   r¯   )rŒ   r�   r-   r´   )r(   r}   r¾   r}   r·   r}   )rÐ   r}   r-   r}   )r¾   r}   r-   rÕ   )rÙ   rÚ   r-   rÕ   )rŒ   r�   )rŒ   r�   r-   r•   )rŒ   r�   r-   rê   )rŒ   r�   r-   r  )rû   r  r-   r}   )rŒ   r�   r-   r  )rú   r  r-   r,   )r'   r}   r-   r}   )r  rÚ   r-   r³   )r  rÚ   r-   rÚ   ))r5   r6   r7   Ú__doc__r   r  r­   rý   r   r  rË   Ú__annotations__r3   r   r   rˆ   r‚   rŠ   r�   r©   rª   rž   r¸   rÊ   rÔ   rØ   rŸ   r¡   r    r÷   rø   rô   r  rù   ró   rö   rõ   r¹   r  r  r#  r:   r4   r2   rU   rU   m   s  € € € € € € ðð ð" €Lð ØØØØØðð €Lð ØØØØØØØØØØØØðð €Hð" ØØðð €Jð ØØØð	ð €Jðð ð
ðñ ô Ðð( %Ð$Ð$Ñ$ðAð Að Að Að Að �+‘-”-€Kð/ð /ð /ð /ð*.ð .ð .ð .ðð ð ð ð0
ð 
ð 
ð 
ðð ð ð ðOð Oð Oð Oð

ð 
ð 
ð 
ð5ð 5ð 5ð 5ðnð ð ð ð(ð (ð (ð (ð
-ð -ð -ð -ðXð Xð Xð Xð#ð #ð #ð #ð

ð 
ð 
ð 
ð$ð ð ð ðð ð ð ðð ð ð ðð ð ð ð
ð ð ð ð
ð ð ð ð4'ð 'ð 'ð 'ðð ð ð ðð ð ð ð"2ð 2ð 2ð 2ð ð  ð  ð  ðAð Að Að Að Að Ar4   rU   c                  óô   — e Zd ZdZdZdZ	 	 	 	 	 	 	 	 	 d;d<d„Zed=d„¦   «         Zd„ Z	d>d „Z
d>d!„Zd>d"„Zd>d#„Zd>d$„Zd>d%„Zed?d&„¦   «         Zd@d)„Zd>d*„Z eed+         ¬,¦  «        	 	 	 	 	 	 	 dAdBd:„¦   «         ZdS )CÚExcelFormattera9  
    Class for formatting a DataFrame to a list of ExcelCells,

    Parameters
    ----------
    df : DataFrame or Styler
    na_rep: na representation
    float_format : str, default None
        Format string for floating point numbers
    cols : sequence, optional
        Columns to write
    header : bool or sequence of str, default True
        Write out column names. If a list of string is given it is
        assumed to be aliases for the column names
    index : bool, default True
        output row names (index)
    index_label : str or sequence, default None
        Column label for index column(s) if desired. If None is given, and
        `header` and `index` are True, then the index names are used. A
        sequence should be given if the DataFrame uses MultiIndex.
    merge_cells : bool, default False
        Format MultiIndex and Hierarchical Rows as merged cells.
    inf_rep : str, default `'inf'`
        representation for np.inf values (which aren't representable in Excel)
        A `'-'` sign will be added in front of -inf.
    style_converter : callable, optional
        This translates Styler styles (CSS) into ExcelWriter styles.
        Defaults to ``CSSToExcelConverter()``.
        It should have signature css_declarations string -> excel style.
        This is only called for body cells.
    i   i @  r  NTFÚinfÚna_reprÚ   Úfloat_formatr}   ÚcolsúSequence[Hashable] | NoneÚheaderúSequence[Hashable] | boolÚindexr³   Úindex_labelúIndexLabel | NoneÚmerge_cellsÚinf_repÚstyle_converterrC   r-   r.   c                óì  — d| _         || _        t          |t          ¦  «        s?|| _        | j                             ¦   «          |j        }|
€t          ¦   «         }
|
| _        nd | _        d | _        || _	        |�¿t          t          |¦  «                             |j        ¦  «        ¦  «        st          d¦  «        ‚t          t          |¦  «                             |j        ¦  «        ¦  «        t          t          |¦  «        ¦  «        k    rt          d¦  «        ‚|                     |¬¦  «        | _	        | j	        j        | _        || _        || _        || _        || _        || _        |	| _        d S )Nr   z,passes columns are not ALL present dataframez.Not all names specified in 'columns' are found)Úcolumns)Ú
rowcounterr1  r˜   r   ÚstylerÚ_computeÚdatarU   r<  Údfr*  r   Úintersectionr>  r  ÚsetÚreindexr2  r7  r8  r5  r:  r;  )r1   rC  r1  r2  r3  r5  r7  r8  r:  r;  r<  s              r2   r3   zExcelFormatter.__init__  sI  € ð ˆŒØˆŒÝ˜"�iÑ(Ô(ð 		(ØˆDŒKØŒK× Ò Ñ"Ô"Ð"Ø”ˆBØÐ&Ý"5Ñ"7Ô"7�Ø4CˆDÔ Ð àˆDŒKØ#'ˆDÔ ØˆŒØÐå•u˜T‘{”{×/Ò/°´
Ñ;Ô;Ñ<Ô<ð OÝÐMÑNÔNÐNå•5˜‘;”;×+Ò+¨B¬JÑ7Ô7Ñ8Ô8½CÅÀDÁ	Ä	¹N¼NÒJÐJåÐOÑPÔPÐPà—j’j¨�jÑ.Ô.ˆDŒGà”w”ˆŒØ(ˆÔØˆŒ
Ø&ˆÔØˆŒØ&ˆÔØˆŒˆˆr4   ú dict[str, dict[str, str | bool]]c                ó"   — ddidddddœdddœdœS )	Nr[   TrÇ   r»   rW   rV   )r¥   r¦   )r’   Úbordersr�   r:   ©r1   s    r2   Úheader_stylezExcelFormatter.header_styleG  s=   € ð ˜T�NàØØ Øð	ð ð )1¸eÐDÐDð	
ð 	
ð 		
r4   c                ól  — t          |¦  «        rt          j        |¦  «        r| j        }nht	          |¦  «        rYt          j        |¦  «        r| j        }n=t          j        |¦  «        rd| j        › �}n| j        �t          | j        |z  ¦  «        }t          |dd ¦  «        �t          d¦  «        ‚|S )Nú-Útzinfoz{Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.)r   r   Úisnar1  r   Úisposinf_scalarr;  Úisneginf_scalarr2  rÕ   Úgetattrr+  r  s     r2   Ú_format_valuezExcelFormatter._format_valueT  sÇ   € Ý�S‰>Œ>ð 	5�gœl¨3Ñ/Ô/ð 	5Ø”+ˆCˆCÝ�c‰]Œ]ð 	5ÝÔ& sÑ+Ô+ð 5Ø”l��ÝÔ(¨Ñ-Ô-ð 5Ø(˜$œ,Ð(Ð(��ØÔ"Ð.Ý˜DÔ-°Ñ3Ñ4Ô4�Ý�3˜ $Ñ'Ô'Ð3Ýð@ñô ð ð
 ˆ
r4   úIterable[ExcelCell]c              #  óp  K  — | j         j        dk    r| j        st          d¦  «        ‚| j        s	| j        sd S | j         }|                     | j        d¬¦  «        }t          |¦  «        }d}d}| j        rAt          | j
        j        t          ¦  «        r"t          | j
        j        d         ¦  «        dz
  }| j        rðt          |j        ¦  «        D ]\  }}t          |||| j        ¬¦  «        V — Œ t          t#          ||j        |j        ¦  «        ¦  «        D ]’\  }\  }}}	|                     |	¦  «        }
|                     ¦   «         D ]_\  }}d\  }}|dk    r
|||z   |z   }}t-          |||z   dz   |
|         | j        t/          | j        dd ¦  «        ||| j        ||¬	¦
  «
        V — Œ`Œ“n�t          t#          |Ž ¦  «        D ]j\  }}
d
                     t7          t8          |
¦  «        ¦  «        }t-          |||z   dz   || j        t/          | j        dd ¦  «        ||| j        ¬¦  «        V — Œk|| _        d S )Nrj   z]Writing to Excel with MultiIndex columns and no index ('index'=False) is not yet implemented.F©ÚsparsifyÚinclude_namesr   rK   ©NNÚctx_columns©
r%   r&   r'   r(   r>   r@   rA   rB   r)   r*   ú.©r%   r&   r'   r(   r>   r@   rA   rB   )r>  Únlevelsr7  ÚNotImplementedErrorÚ_has_aliasesr5  Ú_format_multir:  r   r˜   rC  r   r*  Ú	enumerateÚnamesr#   rK  ÚzipÚlevelsÚcodesÚtakerM   r<   rR  r@  r<  ÚjoinÚmapr   r?  )r1   r>  Ú
level_strsÚlevel_lengthsÚ	coloffsetÚlnumrî   Úspansre  Úlevel_codesÚvaluesÚiÚspan_valr)   r*   r›   s                   r2   Ú_format_header_miz ExcelFormatter._format_header_mif  sÎ  è è € ØŒ<Ô !Ò#Ð#Ø”:ð Ý)ðDñô ð ð
 Ô!ð 	 T¤[ð 	ØˆFà”,ˆØ×*Ò*ØÔ%°Uð +ñ 
ô 
ˆ
õ *¨*Ñ5Ô5ˆØˆ	ØˆàŒ:ð 	2�* T¤W¤]µJÑ?Ô?ð 	2Ý˜DœGœM¨!Ô,Ñ-Ô-°Ñ1ˆIàÔð +	å'¨¬Ñ6Ô6ð ð ‘
��dÝØØ!ØØÔ+ð	ñ ô ð ð ð ð õ 7@Ý�M 7¤>°7´=ÑAÔAñ7ô 7ð ð Ñ2�Ñ2�u˜f kð  Ÿš [Ñ1Ô1�Ø#(§;¢;¡=¤=ð ð ‘K�A�xØ+5Ñ(�J Ø !’|�|Ø/3°YÀ±]ÀXÑ5M H˜
Ý&Ø Ø%¨™M¨AÑ-Ø" 1œIØ"Ô/Ý#*¨4¬;¸ÀtÑ#LÔ#LØ $Ø !Ø&*Ô&:Ø#-Ø!)ðñ ô ð ð ð ð ð	ð	õ, '¥s¨JÐ'7Ñ8Ô8ð ð ‘	��6Ø—H’H�S¥¨vÑ6Ô6Ñ7Ô7�Ý"ØØ! A™¨Ñ)ØØÔ+Ý& t¤{°MÀ4ÑHÔHØ ØØ"&Ô"6ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð ˆŒˆˆr4   c              #  ó”  K  — | j         s| j        �r4d}| j        r?d}t          | j        j        t
          ¦  «        rt          | j        j        j        ¦  «        }| j        }| j         rŠt          t          | j        ¦  «        | _        t          | j        ¦  «        t          | j        ¦  «        k    r:t          dt          | j        ¦  «        › dt          | j        ¦  «        › d�¦  «        ‚| j        }t          |¦  «        D ]F\  }}t          | j        ||z   || j        t!          | j        dd ¦  «        d|| j        ¬¦  «        V — ŒEd S d S )Nr   rj   zWriting z cols but got z aliasesrZ  r]  )r`  r5  r7  r˜   rC  r   r*  rc  r>  r   r   r+  rb  r<   r?  rK  rR  r@  r<  )r1   rl  ÚcolnamesÚcolindexÚcolnames        r2   Ú_format_header_regularz%ExcelFormatter._format_header_regular«  sw  è è € ØÔð 	 ¤ñ 	ØˆIàŒzð 9Ø�	Ý˜dœgœm­ZÑ8Ô8ð 9Ý # D¤G¤MÔ$7Ñ 8Ô 8�Ià”|ˆHØÔ ð 'Ý"¥8¨T¬[Ñ9Ô9�”Ý�t”{Ñ#Ô#¥s¨4¬<Ñ'8Ô'8Ò8Ð8Ý$ð>¥3 t¤|Ñ#4Ô#4ð >ð >Ý#& t¤{Ñ#3Ô#3ð>ð >ð >ñô ð ð  œ;�å%.¨xÑ%8Ô%8ð 
ð 
Ñ!�˜'Ý"ØœØ  9Ñ,ØØÔ+Ý& t¤{°MÀ4ÑHÔHØØ$Ø"&Ô"6ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð'	ð 	ð$
ð 
r4   c                óØ  ‡ — t          ‰ j        t          ¦  «        r‰                      ¦   «         }n‰                      ¦   «         }d}‰ j        j        j        rd„ ‰ j        j        j        D ¦   «         dgt          ‰ j        ¦  «        z  z   }t          j
        d„ d„ |D ¦   «         ¦  «        r+ˆ fd„t          |¦  «        D ¦   «         }‰ xj        dz  c_        t          j        ||¦  «        S )Nr:   c                ó   — g | ]}|�|nd‘Œ	S )Nr  r:   ©rH   Úxs     r2   ú
<listcomp>z1ExcelFormatter._format_header.<locals>.<listcomp>Õ  s    € ÐKÐKÐK°!˜˜�1�1¨2ÐKÐKÐKr4   r  c                ó
   — | o|S r0   r:   )r|  Úys     r2   ú<lambda>z/ExcelFormatter._format_header.<locals>.<lambda>Ø  s
   € ¨Q¨W°1€ r4   c              3  ó"   K  — | ]
}|d k    V — ŒdS )r  Nr:   r{  s     r2   ú	<genexpr>z0ExcelFormatter._format_header.<locals>.<genexpr>Ø  s&   è è € Ð6LÐ6LÀ1°q¸B²wÐ6LÐ6LÐ6LÐ6LÐ6LÐ6Lr4   c              3  óV   •K  — | ]#\  }}t          ‰j        ||‰j        ¦  «        V — Œ$d S r0   )r#   r?  rK  )rH   rv  r'   r1   s      €r2   r‚  z0ExcelFormatter._format_header.<locals>.<genexpr>Ù  sN   øè è € ð ð á%˜ #õ ˜dœo¨x¸¸dÔ>OÑPÔPðð ð ð ð ð r4   rj   )r˜   r>  r   rs  rx  rC  r7  rc  r*  r€   Úreducerb  r?  Ú	itertoolsÚchain)r1   ÚgenÚgen2r%   s   `   r2   Ú_format_headerzExcelFormatter._format_headerÊ  s  ø€ õ �d”l¥JÑ/Ô/ð 	0Ø×(Ò(Ñ*Ô*ˆCˆCà×-Ò-Ñ/Ô/ˆCà$&ˆàŒ7Œ=Ôð 		%ØKÐK°t´w´}Ô7JÐKÑKÔKØðOå�D”LÑ!Ô!ñO"ñ "ˆCõ ÔÐ 4Ð 4Ð6LÐ6LÈÐ6LÑ6LÔ6LÑMÔMð %ðð ð ð å)2°3©¬ðñ ô �ð �” 1Ñ$�”ÝŒ˜s DÑ)Ô)Ð)r4   c                ó�   — t          | j        j        t          ¦  «        r|                      ¦   «         S |                      ¦   «         S r0   )r˜   rC  r7  r   Ú_format_hierarchical_rowsÚ_format_regular_rowsrJ  s    r2   Ú_format_bodyzExcelFormatter._format_bodyà  s<   € Ý�d”g”m¥ZÑ0Ô0ð 	/Ø×1Ò1Ñ3Ô3Ð3à×,Ò,Ñ.Ô.Ð.r4   c              #  óŠ  K  — | j         s| j        r| xj        dz  c_        | j        �r}| j        r@t          | j        t          t          t          j	        t          f¦  «        r| j        d         }n@| j        r"t          | j        t          ¦  «        r| j        }n| j        j        j        d         }t          | j        t          ¦  «        r| xj        dz  c_        |r*| j        dur!t!          | j        dz
  d|| j        ¦  «        V — | j        j        }t          | j        j        t$          ¦  «        r| j        j                             ¦   «         }t)          |¦  «        D ]D\  }}t+          | j        |z   d|| j        t-          | j        dd ¦  «        |d| j        ¬¦  «        V — ŒEd}nd}|                      |¦  «        E d {V —† d S )Nrj   r   FÚ	ctx_indexr]  )r`  r5  r?  r7  r8  r˜   r—   ÚtupleÚnpÚndarrayr   rÚ   rC  rc  r>  r   r#   rK  r   Úto_timestamprb  r<   rR  r@  r<  Ú_generate_body)r1   r8  Úindex_valuesÚidxÚidxvalrl  s         r2   rŒ  z#ExcelFormatter._format_regular_rowsæ  só  è è € ØÔð 	! ¤ð 	!ØˆOŒO˜qÑ ˆOŒOð Œ:ñ %	ð Ôð 5¥JØÔ ¥4­µ´
½EÐ"Bñ%ô %ð 5ð #Ô.¨qÔ1��àÔ!ð 5¥j°Ô1AÅ3Ñ&GÔ&Gð 5Ø"Ô.��à"œgœmÔ1°!Ô4�å˜$œ,­
Ñ3Ô3ð %Ø�” 1Ñ$�”àð X˜tœ{°%Ð7Ð7Ý ¤°!Ñ 3°Q¸ÀTÔEVÑWÔWÐWÐWÐWð  œ7œ=ˆLÝ˜$œ'œ-­Ñ5Ô5ð <Ø#œwœ}×9Ò9Ñ;Ô;�å(¨Ñ6Ô6ð 
ð 
‘��VÝ"Øœ¨#Ñ-ØØØÔ+Ý& t¤{°KÀÑFÔFØØØ"&Ô"6ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð ˆIˆIàˆIà×&Ò& yÑ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r4   c              #  ó4  K  — | j         s| j        r| xj        dz  c_        d}| j        �rR| j        j        j        }| j        r9t          | j        t          t          t          j        t          f¦  «        r| j        }t          | j        t          ¦  «        r| j        r| xj        dz  c_        t!          j        |Ž r?| j        dur6t%          |¦  «        D ]&\  }}t'          | j        dz
  ||| j        ¦  «        V — Œ'| j        �r| j        j                             dd¬¦  «        }t-          |¦  «        }t/          || j        j        j        | j        j        j        ¦  «        D ]«\  }}}	|                     |	|j        |j        ¬¦  «        }
|                     ¦   «         D ]i\  }}d\  }}|dk    r| j        |z   |z   dz
  }|}t=          | j        |z   ||
|         | j        t?          | j         dd ¦  «        ||| j!        ||¬	¦
  «
        V — Œj|dz  }Œ¬not/          | j        j        Ž D ][}t%          |¦  «        D ]D\  }}t=          | j        |z   ||| j        t?          | j         dd ¦  «        ||| j!        ¬
¦  «        V — ŒE|dz  }Œ\|  "                    |¦  «        E d {V —† d S )Nrj   r   FTrV  )Ú
allow_fillÚ
fill_valuerY  r�  r[  r]  )#r`  r5  r?  r7  rC  rc  r8  r˜   r—   r�  r‘  r’  r   r>  r   r:  ÚcomÚany_not_nonerb  r#   rK  ra  r   rd  re  rf  rg  Ú_can_hold_naÚ	_na_valuerM   r<   rR  r@  r<  r”  )r1   ÚgcolidxÚindex_labelsÚcidxrî   rj  rk  rn  re  ro  rp  rq  rr  r)   r*   Úindexcolvalsr–  Úindexcolvals                     r2   r‹  z(ExcelFormatter._format_hierarchical_rows  s5  è è € ØÔð 	! ¤ð 	!ØˆOŒO˜qÑ ˆOŒOàˆàŒ:ñ E	!Øœ7œ=Ô.ˆLàÔð 0¥JØÔ ¥4­µ´
½EÐ"Bñ%ô %ð 0ð  $Ô/�õ ˜$œ,­
Ñ3Ô3ð %¸Ô8Hð %Ø�” 1Ñ$�”õ Ô Ð.ð X°4´;ÀeÐ3KÐ3KÝ"+¨LÑ"9Ô"9ð Xð X‘J�D˜$Ý# D¤O°aÑ$7¸¸tÀTÔEVÑWÔWÐWÐWÐWÐWàÔñ 1!à!œWœ]×8Ò8Ø!°ð 9ñ ô �
õ !2°*Ñ =Ô =�å25Ø! 4¤7¤=Ô#7¸¼¼Ô9Lñ3ô 3ð !ð !Ñ.�E˜6 ;ð $Ÿ[š[Ø#Ø#)Ô#6Ø#)Ô#3ð )ñ ô �Fð (-§{¢{¡}¤}ð ð ™˜˜8Ø/9Ñ,˜
 HØ# aš<˜<Ø)-¬¸1Ñ)<¸xÑ)GÈ!Ñ)K˜JØ'.˜HÝ*Ø $¤°!Ñ 3Ø 'Ø & q¤	Ø"&Ô"3Ý'.¨t¬{¸KÈÑ'NÔ'NØ$%Ø$+Ø*.Ô*>Ø'1Ø%-ðñ ô ð ð ð ð ð ˜q‘L�G�Gð5!õ< %(¨¬¬Ð$7ð !ð !�LÝ,5°lÑ,CÔ,Cð 
ð 
Ñ(˜˜[Ý*Ø $¤°#Ñ 5Ø 'Ø +Ø"&Ô"3Ý'.¨t¬{¸KÈÑ'NÔ'NØ$'Ø$+Ø*.Ô*>ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð ˜q‘L�G�Gà×&Ò& wÑ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r4   c                ó*   — t          | j        ¦  «        S )z1Whether the aliases for column names are present.)r   r5  rJ  s    r2   r`  zExcelFormatter._has_aliasesc  s   € õ ˜DœKÑ(Ô(Ð(r4   rl  r+   c              #  ó"  K  — t          t          | j        ¦  «        ¦  «        D ]j}| j        j        d d …|f         }t          |¦  «        D ]B\  }}t          | j        |z   ||z   |d t          | j	        dd ¦  «        ||| j
        ¬¦  «        V — ŒCŒkd S )NÚctxr]  )Úranger*  r>  rC  Úilocrb  r<   r?  rR  r@  r<  )r1   rl  ÚcolidxÚseriesrq  r'   s         r2   r”  zExcelFormatter._generate_bodyh  sÂ   è è € å�C ¤Ñ-Ô-Ñ.Ô.ð 	ð 	ˆFØ”W”\ ! ! ! V )Ô,ˆFÝ# FÑ+Ô+ð 
ð 
‘��3Ý"Øœ¨!Ñ+Ø Ñ*ØØÝ& t¤{°E¸4Ñ@Ô@ØØ"Ø"&Ô"6ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð
ð	ð 	r4   c              #  óÈ   K  — t          j        |                      ¦   «         |                      ¦   «         ¦  «        D ]%}|                      |j        ¦  «        |_        |V — Œ&d S r0   )r…  r†  r‰  r�  rS  r'   )r1   Úcells     r2   Úget_formatted_cellsz"ExcelFormatter.get_formatted_cellsx  se   è è € Ý”O D×$7Ò$7Ñ$9Ô$9¸4×;LÒ;LÑ;NÔ;NÑOÔOð 	ð 	ˆDØ×)Ò)¨$¬(Ñ3Ô3ˆDŒHØˆJˆJˆJˆJð	ð 	r4   Ústorage_options)r®  ÚSheet1r   Úwriterú)FilePath | WriteExcelBuffer | ExcelWriterÚ
sheet_nameÚstartrowÚstartcolÚfreeze_panesútuple[int, int] | NoneÚengineúStorageOptions | NoneÚengine_kwargsr=   c	           
     ó¼  — ddl m}	 | j        j        \  }
}|
| j        k    s|| j        k    r%t          d|
› d|› d| j        › d| j        › �¦  «        ‚|€i }|                      ¦   «         }t          ||	¦  «        rd}n |	||||¬¦  «        }d	}	 | 	                    |||||¬
¦  «         |r| 
                    ¦   «          dS dS # |r| 
                    ¦   «          w w xY w)ab  
        writer : path-like, file-like, or ExcelWriter object
            File path or existing ExcelWriter
        sheet_name : str, default 'Sheet1'
            Name of sheet which will contain DataFrame
        startrow :
            upper left cell row to dump data frame
        startcol :
            upper left cell column to dump data frame
        freeze_panes : tuple of integer (length 2), default None
            Specifies the one-based bottommost row and rightmost column that
            is to be frozen
        engine : string, default None
            write engine to use if writer is a path - you can also set this
            via the options ``io.excel.xlsx.writer``,
            or ``io.excel.xlsm.writer``.

        {storage_options}

        engine_kwargs: dict, optional
            Arbitrary keyword arguments passed to excel engine.
        r   r    z-This sheet is too large! Your sheet size is: z, z Max sheet size is: NF)r·  r®  r¹  T)r³  r´  rµ  )Úpandas.io.excelr!   rC  ÚshapeÚmax_rowsÚmax_colsr+  r­  r˜   Ú_write_cellsÚclose)r1   r°  r²  r³  r´  rµ  r·  r®  r¹  r!   Únum_rowsÚnum_colsÚformatted_cellsÚ	need_saves                 r2   ÚwritezExcelFormatter.write}  si  € ðD 	0Ð/Ð/Ð/Ð/Ð/à!œWœ]Ñˆ�(Ø�d”mÒ#Ð# x°$´-Ò'?Ð'?ÝðGÀð Gð GÈHð Gð GØ&*¤mðGð GØ7;´}ðGð Gñô ð ð
 Ð ØˆMà×2Ò2Ñ4Ô4ˆÝ�f˜kÑ*Ô*ð 		ØˆIˆIà �[ØØØ /Ø+ð	ñ ô ˆFð ˆIð	Ø×ÒØØØ!Ø!Ø)ð  ñ ô ð ð ð Ø—’‘”���ðð øˆyð Ø—’‘”��ðøøøs   ÂC ÃC)	r  NNTTNFr0  N)r1  rÚ   r2  r}   r3  r4  r5  r6  r7  r³   r8  r9  r:  r³   r;  rÚ   r<  rC   r-   r.   )r-   rG  )r-   rT  )r-   r³   )rl  r+   r-   rT  )r¯  r   r   NNNN)r°  r±  r²  rÚ   r³  r+   r´  r+   rµ  r¶  r·  r}   r®  r¸  r¹  r=   r-   r.   )r5   r6   r7   r,  r½  r¾  r3   ÚpropertyrK  rS  rs  rx  r‰  r�  rŒ  r‹  r`  r”  r­  r   r   rÅ  r:   r4   r2   r/  r/  ö  s³  € € € € € ðð ð@ €HØ€Hð
 Ø#'Ø*.Ø,0ØØ)-Ø!ØØ+/ð+ð +ð +ð +ð +ðZ ð

ð 

ð 

ñ „Xð

ðð ð ð$Cð Cð Cð CðJð ð ð ð>*ð *ð *ð *ð,/ð /ð /ð /ð,2ð ,2ð ,2ð ,2ð\M0ð M0ð M0ð M0ð^ ð)ð )ð )ñ „Xð)ðð ð ð ð ð ð ð ð
 	€S˜Ð&7Ô8Ð9Ñ9Ô9ð #ØØØ/3Ø!Ø15Ø%)ðDð Dð Dð Dñ :Ô9ðDð Dð Dr4   r/  )<r,  Ú
__future__r   Úcollections.abcr   r   r   r   r€   r…  r  Útypingr   r	   r
   r   rÌ   Únumpyr‘  Úpandas._libs.libr   Úpandas.util._decoratorsr   Úpandas.util._exceptionsr   Úpandas.core.dtypesr   Úpandas.core.dtypes.commonr   r   Úpandasr   r   r   r   Úpandas.core.commonÚcoreÚcommonr›  Úpandas.core.shared_docsr   Úpandas.io.formats._color_datar   Úpandas.io.formats.cssr   r   Úpandas.io.formats.formatr   Úpandas.io.formats.printingr   Úpandas._typingr   r   r   r   r!   r#   r<   rU   r/  r:   r4   r2   ú<module>rÚ     s7  ððð ð #Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	ðð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð !Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3àð #ðð ð ð ð ð ð ð ð ð ð ð ð #Ð"Ð"Ð"Ð"Ð"ð!ð !ð !ð !ð !ñ !ô !ð !ð*Kð Kð Kð Kð K�9ñ Kô Kð Kð2FAð FAð FAð FAð FAñ FAô FAð FAðRLð Lð Lð Lð Lñ Lô Lð Lð Lð Lr4   