§
    tŠtj%‹  ã                  óŽ  — d Z ddlmZ ddlmZ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 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mZ dd
lmZ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)m*Z* ddl+m,Z, erddl-m.Z.m/Z/m0Z0m1Z1m2Z2 ddlm3Z3  G d„ d¦  «        Z4 G d„ de4¦  «        Z5 G d„ d¦  «        Z6 G d„ d¦  «        Z7dS )zC
Utilities for conversion to writer-agnostic Excel representation.
é    )Úannotations)ÚCallableÚHashableÚIterableÚMappingÚSequenceN)ÚTYPE_CHECKINGÚAnyÚcast)Úis_list_like)Úfind_stack_level)Úmissing)Úis_floatÚ	is_scalar)Ú	DataFrameÚIndexÚ
MultiIndexÚPeriodÚPeriodIndex)ÚCSS4_COLORS)ÚCSSResolverÚ
CSSWarning)Úget_level_lengths)ÚExcelWriterMergeCellsÚ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          úU/var/www/html/CA-Chatbot/venv/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__r2   © r3   r1   r"   r"   ?   sB   € € € € € ØI€JØ€Ið Ø!%Ø#ð!ð !ð !ð !ð !ð !ð !r3   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 r9   ©Úlower)Ú.0Úpropr&   s      r1   ú
<dictcomp>z)CssExcelCell.__init__.<locals>.<dictcomp>c   s3   € ð  ð  ð  Ù&/ d¨C�—
’
‘”˜cð ð  ð  r3   ©r$   r%   r&   r'   r9   )Ú	frozensetÚitemsÚsuperr2   )r0   r$   r%   r&   r'   r=   r?   r@   rA   ÚkwargsÚdeclaration_dictÚunique_declarationsÚ	__class__s               €r1   r2   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ÐJr3   )r$   r*   r%   r*   r'   r<   r=   r>   r?   r*   r@   r*   rA   rB   r,   r-   )r4   r5   r6   r2   Ú__classcell__)rQ   s   @r1   r;   r;   T   sG   ø€ € € € € ðKð Kð Kð Kð Kð Kð Kð Kð Kð Kr3   r;   c                  ól  — 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<   dIdJd„Z e¦   «         ZdKd„ZdKd„ZdLd„ZdMd!„ZdNd"„ZdOd$„ZdPd&„ZdQd*„ZdRd,„ZdSd.„ZdTd1„ZdUd2„ZdVd4„ZdWd6„ZdOd7„ZdOd8„ZdXd:„ZdOd;„Z dXd<„Z!dYd>„Z"dZdA„Z#d[dC„Z$d\dF„Z%d]dG„Z&d\dH„Z'dS )^Ú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)rU   ztext-topÚmiddleÚbaselinerW   ztext-bottomTF)ÚboldÚbolderÚ600Ú700Ú800Ú900ÚnormalÚlighterÚ100Ú200Ú300Ú400Ú500)r`   ÚitalicÚobliqueé   é   é   é   )Úserifz
sans-serifÚcursiveÚfantasyc                ó8   — i | ]}|                      ¦   «         |“ŒS r9   rE   )rG   r'   s     r1   rI   zCSSToExcelConverter.<dictcomp>¨   s2   € ð ð ð àð 	�Š‰Œ�uðð ð r3   )
Ú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 r/   )Úcompute_cssr{   Ú	functoolsÚcacheÚ_call_uncachedÚ_call_cached)r0   r{   s     r1   r2   zCSSToExcelConverter.__init__¾   sC   € ØÐ Ø!×-Ò-¨iÑ8Ô8ˆDŒNˆNà!ˆDŒNõ &œO¨DÔ,?Ñ@Ô@ˆÔÐÐr3   Ú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‚   )r0   rƒ   s     r1   Ú__call__zCSSToExcelConverter.__call__Ê   s   € ð& × Ò  Ñ.Ô.Ð.r3   c                ób   — |                       || j        ¦  «        }|                      |¦  «        S r/   )r~   r{   Úbuild_xlstyle)r0   rƒ   Ú
propertiess      r1   r�   z"CSSToExcelConverter._call_uncachedß   s/   € ð ×%Ò% l°D´NÑCÔCˆ
Ø×!Ò! *Ñ-Ô-Ð-r3   Ú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)ÚlistrL   Ú
isinstanceÚdict)r“   ÚkÚvÚremove_nones      €r1   r›   z6CSSToExcelConverter.build_xlstyle.<locals>.remove_noneð   sk   ø€ å˜QŸWšW™YœY™œð !ð !‘��1Ø�9Ø˜!˜˜Ý ¥4Ñ(Ô(ð !Ø�K ‘N”N�NØð !Ø˜a˜Døð!ð !r3   )r“   r”   r,   r-   )Úbuild_alignmentÚbuild_borderÚ
build_fillÚ
build_fontÚbuild_number_format)r0   r‹   Úoutr›   s      @r1   r‰   z!CSSToExcelConverter.build_xlstyleå   s•   ø€ à×-Ò-¨eÑ4Ô4Ø×'Ò'¨Ñ.Ô.Ø—O’O EÑ*Ô*Ø—O’O EÑ*Ô*Ø!×5Ò5°eÑ<Ô<ð
ð 
ˆð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	ˆ�CÑÔÐØˆ
r3   údict[str, bool | str | None]c                ó€   — |                      d¦  «        |                      |¦  «        |                      |¦  «        dœS )Nz
text-align)Ú
horizontalÚverticalÚ	wrap_text)ÚgetÚ_get_vertical_alignmentÚ_get_is_wrap_text©r0   r‹   s     r1   rœ   z#CSSToExcelConverter.build_alignmentý   sD   € ð  Ÿ)š) LÑ1Ô1Ø×4Ò4°UÑ;Ô;Ø×/Ò/°Ñ6Ô6ð
ð 
ð 	
r3   c                óh   — |                      d¦  «        }|r| j                              |¦  «        S d S )Nzvertical-align)r§   ÚVERTICAL_MAP)r0   r‹   Úvertical_aligns      r1   r¨   z+CSSToExcelConverter._get_vertical_alignment  s8   € ØŸšÐ#3Ñ4Ô4ˆØð 	9ØÔ$×(Ò(¨Ñ8Ô8Ð8Øˆtr3   úbool | Nonec                ó^   — |                      d¦  «        €d S t          |d         dv¦  «        S )Nzwhite-space)ÚnowrapÚprezpre-line)r§   Úboolrª   s     r1   r©   z%CSSToExcelConverter._get_is_wrap_text  s2   € Ø�9Š9�]Ñ#Ô#Ð+Ø�4Ý�E˜-Ô(Ð0MÐMÑNÔNÐNr3   ú 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)rG   Úsider‹   r0   s     €€r1   rI   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ðð ð

ð 

ð 

r3   )rU   ÚrightrW   Úleftr9   rª   s   ``r1   r�   z CSSToExcelConverter.build_border  s6   øø€ ð

ð 

ð 

ð 

ð 

ð ;ð

ñ 

ô 

ð 
	
r3   r'   Úwidthr¶   c                ó.  — |€|€|€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          ¦   «         ¬¦  «         dS )NÚnone)r¾   Úhidden)NÚgrooveÚridgeÚinsetÚoutsetÚsolidrw   ru   )rt   Úthinrv   rq   rz   zUnhandled border style format: ©Ú
stacklevel)Ú_get_width_nameÚBORDER_STYLE_MAPÚwarningsÚwarnr   r   )r0   r'   r¼   r¶   Ú
width_names        r1   r·   z!CSSToExcelConverter._border_style  s  € ð" ˆ=˜U˜]Øˆ}à�tð �vàÐ&Ð&Ð&Ø�6à×)Ò)¨%Ñ0Ô0ˆ
ØÐØ�6àÐIÐIÐIàÐà�HÒÐØ�8Ø�HÒÐØÐ-Ð-Ð-Ø�xØ%Ð%Ø�HÒÐØÐ-Ð-Ð-Ø�xØ!�>Ø�dÔ+Ð+Ð+àÔ(¨Ô/Ð/åŒMØ;°%Ð;Ð;ÝÝ+Ñ-Ô-ðñ ô ð ð
 �6r3   Ú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)r0   rÍ   r¼   s      r1   rÈ   z#CSSToExcelConverter._get_width_nameX  sD   € Ø×$Ò$ [Ñ1Ô1ˆØ�4Š<ˆ<Ø�4Ø�SŠ[ˆ[Ø�6Ø�SŠ[ˆ[Ø�8Øˆwr3   Úfloatc                ó4   — |€d}|                       |¦  «        S )NÚ2pt)Ú_pt_to_float)r0   r¼   s     r1   rÑ   z#CSSToExcelConverter._width_to_floatb  s    € Øˆ=ØˆEØ× Ò  Ñ'Ô'Ð'r3   Ú	pt_stringÚstrc                ót   — |                      d¦  «        sJ ‚t          |                     d¦  «        ¦  «        S )NÚpt)ÚendswithrÒ   Úrstrip)r0   rÖ   s     r1   rÕ   z CSSToExcelConverter._pt_to_floatg  s8   € Ø×!Ò! $Ñ'Ô'Ð'Ð'Ð'Ý�Y×%Ò% dÑ+Ô+Ñ,Ô,Ð,r3   c                óh   — |                      d¦  «        }|dvr|                      |¦  «        ddœS d S )Nzbackground-color)NÚtransparentr¾   rÄ   )ÚfgColorÚpatternType)r§   r¸   )r0   r‹   Ú
fill_colors      r1   rž   zCSSToExcelConverter.build_fillk  sF   € ð —Y’YÐ1Ñ2Ô2ˆ
ØÐ:Ð:Ð:Ø#×2Ò2°:Ñ>Ô>ÈwÐWÐWÐWð ;Ð:r3   r”   c                óŽ   — |                      d¦  «        }t          |t          ¦  «        r|                     dd¦  «        n|}d|iS )Nznumber-formatõ   Â§ú;Úformat_code)r§   r—   r×   Úreplace)r0   r‹   Úfcs      r1   r    z'CSSToExcelConverter.build_number_formatr  sE   € Ø�YŠY�Ñ'Ô'ˆÝ&0°µSÑ&9Ô&9ÐAˆR�ZŠZ˜˜cÑ"Ô"Ð"¸rˆØ˜rÐ"Ð"r3   ú$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ÚsizerZ   rg   ré   Ústriker¶   Úshadow)	Ú_get_font_namesÚ_get_decorationÚ_select_font_familyÚ_get_font_sizeÚ_get_is_boldÚ_get_is_italicr¸   r§   Ú_get_shadow)r0   r‹   Ú
font_namesÚ
decorations       r1   rŸ   zCSSToExcelConverter.build_fontw  sÙ   € ð ×)Ò)¨%Ñ0Ô0ˆ
Ø×)Ò)¨%Ñ0Ô0ˆ
à%/Ð9�J˜q”M�M°TØ×.Ò.¨zÑ:Ô:Ø×'Ò'¨Ñ.Ô.Ø×%Ò% eÑ,Ô,Ø×)Ò)¨%Ñ0Ô0Ø&1°ZÐ&?Ð&?˜(˜(ÀTØ%¨Ð3Ð<¸Ø×(Ò(¨¯ª°7Ñ);Ô);Ñ<Ô<à×&Ò& uÑ-Ô-ð
ð 
ð 	
r3   c                óh   — |                      d¦  «        }|r| j                              |¦  «        S d S )Nzfont-weight)r§   ÚBOLD_MAP)r0   r‹   Úweights      r1   rô   z CSSToExcelConverter._get_is_bold‰  s6   € Ø—’˜=Ñ)Ô)ˆØð 	-Ø”=×$Ò$ VÑ,Ô,Ð,Øˆtr3   c                óh   — |                      d¦  «        }|r| j                              |¦  «        S d S )Nz
font-style)r§   Ú
ITALIC_MAP)r0   r‹   Ú
font_styles      r1   rõ   z"CSSToExcelConverter._get_is_italic�  s6   € Ø—Y’Y˜|Ñ,Ô,ˆ
Øð 	3Ø”?×&Ò& zÑ2Ô2Ð2Øˆtr3   úSequence[str]c                ó\   — |                      d¦  «        }|�|                     ¦   «         S dS )Nztext-decorationr9   )r§   Úsplit)r0   r‹   rø   s      r1   rñ   z#CSSToExcelConverter._get_decoration•  s1   € Ø—Y’YÐ0Ñ1Ô1ˆ
ØÐ!Ø×#Ò#Ñ%Ô%Ð%à�2r3   c                ó^   — d|v r(t          t          j        d|d         ¦  «        ¦  «        S d S )Nztext-shadowz^[^#(]*[1-9])r²   ÚreÚsearchrª   s     r1   rö   zCSSToExcelConverter._get_shadowœ  s1   € Ø˜EÐ!Ð!Ý�œ	 .°%¸Ô2FÑGÔGÑHÔHÐHØˆtr3   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Ú ri   ú"éÿÿÿÿz\"ú'z\')r  Úfindallr§   rå   ÚstripÚappend)r0   r‹   Úfont_names_tmpr÷   rë   s        r1   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‘|”|�Øð (Ø×!Ò! $Ñ'Ô'Ð'øØÐr3   úfloat | Nonec                ó^   — |                      d¦  «        }|€|S |                      |¦  «        S )Nz	font-size)r§   rÕ   )r0   r‹   rí   s      r1   ró   z"CSSToExcelConverter._get_font_size»  s1   € Ø�yŠy˜Ñ%Ô%ˆØˆ<ØˆKØ× Ò  Ñ&Ô&Ð&r3   r÷   r+   c                óP   — d }|D ] }| j                              |¦  «        }|r nŒ!|S r/   )Ú
FAMILY_MAPr§   )r0   r÷   rì   rë   s       r1   rò   z'CSSToExcelConverter._select_font_familyÁ  sD   € ØˆØð 	ð 	ˆDØ”_×(Ò(¨Ñ.Ô.ˆFØð Ø�ðð ˆr3   r&   c                óô   — |€d S |                       |¦  «        r|                      |¦  «        S 	 | j        |         S # t          $ r. t	          j        d|›�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   ©r0   r&   s     r1   r¸   z"CSSToExcelConverter.color_to_excelÊ  s¥   € Øˆ;Ø�4à×Ò˜cÑ"Ô"ð 	3Ø×-Ò-¨cÑ2Ô2Ð2ð	ØÔ$ SÔ)Ð)øÝð 	ð 	ð 	ÝŒMØ2¨3Ð2Ð2ÝÝ+Ñ-Ô-ðñ ô ð ð ð ð	øøøð ˆts   °= ½5A5Á4A5Úcolor_stringr²   c                óF   — t          |                     d¦  «        ¦  «        S )Nú#)r²   Ú
startswith)r0   r  s     r1   r  z!CSSToExcelConverter._is_hex_colorÛ  s   € Ý�L×+Ò+¨CÑ0Ô0Ñ1Ô1Ð1r3   c                óè   — |                      d¦  «        }|                      |¦  «        r5|d         dz  |d         dz  z   |d         dz  z                        ¦   «         S |                     ¦   «         S )Nr  r   rj   ri   )ÚlstripÚ_is_shorthand_colorÚupper©r0   r  Úcodes      r1   r  z)CSSToExcelConverter._convert_hex_to_excelÞ  sm   € Ø×"Ò" 3Ñ'Ô'ˆØ×#Ò# LÑ1Ô1ð 	 Ø˜”G˜a‘K $ q¤'¨A¡+Ñ-°°Q´¸!±Ñ;×BÒBÑDÔDÐDà—:’:‘<”<Ðr3   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      r1   r  z'CSSToExcelConverter._is_shorthand_colorå  sV   € ð
 ×"Ò" 3Ñ'Ô'ˆÝˆt‰9Œ9˜Š>ˆ>Ø�4Ý�‰YŒY˜!Š^ˆ^Ø�5åÐ?°Ð?Ð?Ñ@Ô@Ð@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³   )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×   )(r4   r5   r6   Ú__doc__r   r  r¬   rú   rý   r  rÉ   Ú__annotations__r2   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  r9   r3   r1   rT   rT   m   s
  € € € € € € ðð ð" €Lð ØØØØØðð €Lð ØØØØØØØØØØØØðð €Hð" ØØðð €Jð ØØØð	ð €Jðð ð
ðñ ô Ðð( %Ð$Ð$Ñ$ðAð Að Að Að Að �+‘-”-€Kð/ð /ð /ð /ð*.ð .ð .ð .ðð ð ð ð0
ð 
ð 
ð 
ðð ð ð ðOð Oð Oð Oð

ð 
ð 
ð 
ð7ð 7ð 7ð 7ðrð ð ð ð(ð (ð (ð (ð
-ð -ð -ð -ðXð Xð Xð Xð#ð #ð #ð #ð

ð 
ð 
ð 
ð$ð ð ð ðð ð ð ðð ð ð ðð ð ð ð
ð ð ð ð4'ð 'ð 'ð 'ðð ð ð ðð ð ð ð"2ð 2ð 2ð 2ð ð  ð  ð  ðAð Að Að Að Að Ar3   rT   c                  ó¶   — e Zd ZdZdZdZ	 	 	 	 	 	 	 	 	 	 d;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d@d+„Z	 	 	 	 	 	 	 dAdBd:„ZdS )CÚExcelFormattera>  
    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 or 'columns', default False
        Format MultiIndex column headers and Hierarchical Rows as merged cells
        if True. Merge MultiIndex column headers only if 'columns'.
        .. versionchanged:: 3.0.0
            Added the 'columns' option.
    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.
    autofilter : bool, default False
        If True, add automatic filters to all columns.
    i   i @  r  NTFÚinfÚna_repr×   Úfloat_formatr|   ÚcolsúSequence[Hashable] | NoneÚheaderúSequence[Hashable] | boolÚindexr²   Úindex_labelúIndexLabel | NoneÚmerge_cellsr   Úinf_repÚstyle_converterrB   Ú
autofilterr,   r-   c                óV  — 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        | _        || _        || _        || _        || _        t          |t*          ¦  «        s|dk    rt-          d|›d�¦  «        ‚|| _        |	| _        || _        d S )Nr   z,passes columns are not ALL present dataframez.Not all names specified in 'columns' are found)Úcolumnsr:  z!Unexpected value for merge_cells=ú.)Ú
rowcounterr,  r—   r   ÚstylerÚ_computeÚdatarT   r7  Údfr%  r   Úintersectionr:  r  ÚsetÚreindexr-  r2  r3  r0  r²   r&  r5  r6  r8  )r0   r@  r,  r-  r.  r0  r2  r3  r5  r6  r7  r8  s               r1   r2   zExcelFormatter.__init__  s‡  € ð ˆŒØˆŒÝ˜"�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”ˆŒØ(ˆÔØˆŒ
Ø&ˆÔØˆŒå˜+¥tÑ,Ô,ð 	F°À	Ò1IÐ1IÝÐD°[ÐDÐDÐDÑEÔEÐEØ&ˆÔØˆŒØ$ˆŒˆˆr3   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   Úisnar,  r   Úisposinf_scalarr6  Úisneginf_scalarr-  rÒ   Úgetattrr&  r  s     r1   Ú_format_valuezExcelFormatter._format_valueN  sÇ   € Ý�S‰>Œ>ð 	5�gœl¨3Ñ/Ô/ð 	5Ø”+ˆCˆCÝ�c‰]Œ]ð 	5ÝÔ& sÑ+Ô+ð 5Ø”l��ÝÔ(¨Ñ-Ô-ð 5Ø(˜$œ,Ð(Ð(��ØÔ"Ð.Ý˜DÔ-°Ñ3Ñ4Ô4�Ý�3˜ $Ñ'Ô'Ð3Ýð@ñô ð ð
 ˆ
r3   úIterable[ExcelCell]c              #  ó>  K  — | j         j        dk    r| j        st          d¦  «        ‚| j        s	| j        sd S | j         }| j        dv }|                     |d¬¦  «        }t          |¦  «        }d}d}| j        r3t          | j
        j        t          ¦  «        r| j
        j        j        dz
  }t          |j        ¦  «        D ]\  }}t          |||d ¬¦  «        V — Œt          t          ||j        |j        d¬	¦  «        ¦  «        D ]�\  }\  }}	}
|	                     |
¦  «        }|                     ¦   «         D ]\\  }}d
\  }}|r|dk    r
|||z   |z   }}t)          |||z   dz   ||         d t+          | j        dd ¦  «        ||| j        ||¬¦
  «
        V — Œ]Œ�|| _        d S )Nri   z]Writing to Excel with MultiIndex columns and no index ('index'=False) is not yet implemented.>   Tr:  F©ÚsparsifyÚinclude_namesr   rJ   T©Ústrict©NNÚctx_columns©
r$   r%   r&   r'   r=   r?   r@   rA   r(   r)   )r:  Únlevelsr2  ÚNotImplementedErrorÚ_has_aliasesr0  r5  Ú_format_multir   r—   r@  r   Ú	enumerateÚnamesr"   ÚzipÚlevelsÚcodesÚtakerL   r;   rJ  r=  r7  r<  )r0   r:  Úmerge_columnsÚ
level_strsÚlevel_lengthsÚ	coloffsetÚlnumrë   Úspansr]  Úlevel_codesÚvaluesÚiÚspan_valr(   r)   s                   r1   Ú_format_header_miz ExcelFormatter._format_header_mi`  s%  è è € ØŒ<Ô !Ò#Ð#Ø”:ð Ý)ðDñô ð ð
 Ô!ð 	 T¤[ð 	ØˆFà”,ˆØÔ(Ð,=Ð=ˆØ×*Ò*°MÐQVÐ*ÑWÔWˆ
Ý)¨*Ñ5Ô5ˆØˆ	ØˆàŒ:ð 	2�* T¤W¤]µJÑ?Ô?ð 	2ØœœÔ-°Ñ1ˆIå# G¤MÑ2Ô2ð 	ð 	‰JˆD�$ÝØØØØð	ñ ô ð ð ð ð õ 3<Ý�˜wœ~¨w¬}ÀTÐJÑJÔJñ3
ô 3
ð 	ð 	Ñ.ˆDÑ.�5˜& +ð —[’[ Ñ-Ô-ˆFØ$Ÿ{š{™}œ}ð ð ‘��8Ø'1Ñ$�
˜HØ ð J X°¢\ \Ø+/°¸Q±ÀÑ1I �JÝ"ØØ! A™¨Ñ)Ø˜qœ	ØÝ& t¤{°MÀ4ÑHÔHØ ØØ"&Ô"6Ø)Ø%ðñ ô ð ð ð ð ð	ð  ˆŒˆˆr3   c              #  óŠ  K  — | j         s| j        �r/d}| 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 ]A\  }}t          | j        ||z   |d t          | j        dd ¦  «        d|| j        ¬¦  «        V — Œ@d S d S )Nr   ri   zWriting z cols but got z aliasesrT  ©r$   r%   r&   r'   r=   r?   r@   rA   )rX  r0  r2  r—   r@  r   r%  r[  r:  r   r   r&  rZ  r;   r<  rJ  r=  r7  )r0   rc  ÚcolnamesÚcolindexÚcolnames        r1   Ú_format_header_regularz%ExcelFormatter._format_header_regular“  st  è è € ØÔð 	 ¤ñ 	Øˆ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ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð'	ð 	ð$
ð 
r3   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 )Nr9   c                ó   — g | ]}|�|nd‘Œ	S )Nr  r9   ©rG   Úxs     r1   ú
<listcomp>z1ExcelFormatter._format_header.<locals>.<listcomp>½  s    € ÐKÐKÐK°!˜˜�1�1¨2ÐKÐKÐKr3   r  c                ó
   — | o|S r/   r9   )rt  Úys     r1   ú<lambda>z/ExcelFormatter._format_header.<locals>.<lambda>À  s
   € ¨Q¨W°1€ r3   c              3  ó"   K  — | ]
}|d k    V — ŒdS )r  Nr9   rs  s     r1   ú	<genexpr>z0ExcelFormatter._format_header.<locals>.<genexpr>À  s&   è è € Ð6LÐ6LÀ1°q¸B²wÐ6LÐ6LÐ6LÐ6LÐ6LÐ6Lr3   c              3  óL   •K  — | ]\  }}t          ‰j        ||d ¦  «        V — Œd S r/   )r"   r<  )rG   rn  r&   r0   s      €r1   rz  z0ExcelFormatter._format_header.<locals>.<genexpr>Á  sK   øè è € ð ð á%˜ #õ ˜dœo¨x¸¸dÑCÔCðð ð ð ð ð r3   ri   )r—   r:  r   rj  rp  r@  r2  r[  r%  r   ÚreducerZ  r<  Ú	itertoolsÚchain)r0   ÚgenÚgen2r$   s   `   r1   Ú_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Ñ)Ô)Ð)r3   c                ó�   — t          | j        j        t          ¦  «        r|                      ¦   «         S |                      ¦   «         S r/   )r—   r@  r2  r   Ú_format_hierarchical_rowsÚ_format_regular_rows©r0   s    r1   Ú_format_bodyzExcelFormatter._format_bodyÈ  s<   € Ý�d”g”m¥ZÑ0Ô0ð 	/Ø×1Ò1Ñ3Ô3Ð3à×,Ò,Ñ.Ô.Ð.r3   c              #  óv  K  — | j         s| j        r| xj        dz  c_        | j        �rs| 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|d ¦  «        V — | j        j        }t          | j        j        t"          ¦  «        r| j        j                             ¦   «         }t'          |¦  «        D ]?\  }}t)          | j        |z   d|d t+          | j        dd ¦  «        |d| j        ¬¦  «        V — Œ@d}nd}|                      |¦  «        E d {V —† d S )Nri   r   FÚ	ctx_indexrl  )rX  r0  r<  r2  r3  r—   r–   ÚtupleÚnpÚndarrayr   r×   r@  r[  r:  r   r"   r   Úto_timestamprZ  r;   rJ  r=  r7  Ú_generate_body)r0   r3  Úindex_valuesÚidxÚidxvalrc  s         r1   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Ñ$�”àð K˜tœ{°%Ð7Ð7Ý ¤°!Ñ 3°Q¸ÀTÑJÔJÐJÐJÐJð  œ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Ð1r3   c              #  óÚ  K  — | j         s| j        r| xj        dz  c_        d}| j        �r¥| j        j        j        }| j        r9t          | j        t          t          t          j        t          f¦  «        r| j        }t          | j        t          ¦  «        r| xj        dz  c_        t          j        |Ž r:| j        dur1t#          |¦  «        D ]!\  }}t%          | j        dz
  ||d ¦  «        V — Œ"| j        �rD| j        dk    �r8| j        j                             dd¬¦  «        }t+          |¦  «        }t-          || j        j        j        | j        j        j        d¬¦  «        D ]Õ\  }}}	|                     |	|j        |j        ¬¦  «        }
t          |
d         t8          ¦  «        r|
                     ¦   «         }
|                     ¦   «         D ]d\  }}d	\  }}|dk    r| j        |z   |z   dz
  }|}t?          | j        |z   ||
|         d tA          | j!        d
d ¦  «        ||| j"        ||¬¦
  «
        V — Œe|dz  }ŒÖn–t-          | j        j        ddiŽD ]}t#          |¦  «        D ]h\  }}t          |t8          ¦  «        r|                     ¦   «         }t?          | j        |z   ||d tA          | j!        d
d ¦  «        ||| j"        ¬¦  «        V — Œi|dz  }Œ€|  #                    |¦  «        E d {V —† d S )Nri   r   Fr:  TrN  rQ  )Ú
allow_fillÚ
fill_valuerS  rˆ  rU  rR  rl  )$rX  r0  r<  r2  r@  r[  r3  r—   r–   r‰  rŠ  r‹  r   r:  r   ÚcomÚany_not_nonerZ  r"   r5  rY  r   r\  r]  r^  r_  Ú_can_hold_naÚ	_na_valuer   rŒ  rL   r;   rJ  r=  r7  r�  )r0   ÚgcolidxÚindex_labelsÚcidxrë   ra  rb  re  r]  rf  rg  rh  ri  r(   r)   Úindexcolvalsr�  Úindexcolvals                     r1   rƒ  z(ExcelFormatter._format_hierarchical_rowsü  sŽ  è è € ØÔð 	! ¤ð 	!ØˆOŒO˜qÑ ˆOŒOàˆàŒ:ñ N	!Øœ7œ=Ô.ˆLàÔð 0¥JØÔ ¥4­µ´
½EÐ"Bñ%ô %ð 0ð  $Ô/�õ
 ˜$œ,­
Ñ3Ô3ð %Ø�” 1Ñ$�”õ Ô Ð.ð K°4´;ÀeÐ3KÐ3KÝ"+¨LÑ"9Ô"9ð Kð K‘J�D˜$Ý# D¤O°aÑ$7¸¸tÀTÑJÔJÐJÐJÐJÐJàÔñ ;! DÔ$4¸	Ò$AÑ$Aà!œWœ]×8Ò8Ø!°ð 9ñ ô �
õ !2°*Ñ =Ô =�å25Ø!Ø”G”MÔ(Ø”G”MÔ'Ø ð	3ñ 3ô 3ð  !ð  !Ñ.�E˜6 ;ð $Ÿ[š[Ø#Ø#)Ô#6Ø#)Ô#3ð )ñ ô �Fõ " &¨¤)­VÑ4Ô4ð 7Ø!'×!4Ò!4Ñ!6Ô!6˜à',§{¢{¡}¤}ð ð ™˜˜8Ø/9Ñ,˜
 HØ# aš<˜<Ø)-¬¸1Ñ)<¸xÑ)GÈ!Ñ)K˜JØ'.˜HÝ*Ø $¤°!Ñ 3Ø 'Ø & q¤	Ø"&Ý'.¨t¬{¸KÈÑ'NÔ'NØ$%Ø$+Ø*.Ô*>Ø'1Ø%-ðñ ô ð ð ð ð ð ˜q‘L�G�GðA !õH %(¨¬¬Ð$D¸tÐ$DÐ$Dð !ð !�LÝ,5°lÑ,CÔ,Cð ð Ñ(˜˜[å% kµ6Ñ:Ô:ð EØ*5×*BÒ*BÑ*DÔ*D˜Kå*Ø $¤°#Ñ 5Ø 'Ø +Ø"&Ý'.¨t¬{¸KÈÑ'NÔ'NØ$'Ø$+Ø*.Ô*>ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð ˜q‘L�G�Gà×&Ò& wÑ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r3   c                ó*   — t          | j        ¦  «        S )z1Whether the aliases for column names are present.)r   r0  r…  s    r1   rX  zExcelFormatter._has_aliasesT  s   € õ ˜DœKÑ(Ô(Ð(r3   rc  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Úctxrl  )Úranger%  r:  r@  ÚilocrZ  r;   r<  rJ  r=  r7  )r0   rc  ÚcolidxÚseriesrh  r&   s         r1   r�  zExcelFormatter._generate_bodyY  sÂ   è è € å�C ¤Ñ-Ô-Ñ.Ô.ð 	ð 	ˆFØ”W”\ ! ! ! V )Ô,ˆFÝ# FÑ+Ô+ð 
ð 
‘��3Ý"Øœ¨!Ñ+Ø Ñ*ØØÝ& t¤{°E¸4Ñ@Ô@ØØ"Ø"&Ô"6ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð
ð	ð 	r3   c              #  óÈ   K  — t          j        |                      ¦   «         |                      ¦   «         ¦  «        D ]%}|                      |j        ¦  «        |_        |V — Œ&d S r/   )r}  r~  r�  r†  rK  r&   )r0   Úcells     r1   Úget_formatted_cellsz"ExcelFormatter.get_formatted_cellsi  se   è è € Ý”O D×$7Ò$7Ñ$9Ô$9¸4×;LÒ;LÑ;NÔ;NÑOÔOð 	ð 	ˆDØ×)Ò)¨$¬(Ñ3Ô3ˆDŒHØˆJˆJˆJˆJð	ð 	r3   c                óª   — |dk     rt          d|› �¦  «        ‚d}|dk    s|s0t          |d¦  «        \  }}t          d|z   ¦  «        |z   }|dk    °.|¯0|S )a‹  
        Convert 0-based column index to Excel column name.

        Parameters
        ----------
        index : int
            The numeric column index to convert to an Excel column name.

        Returns
        -------
        column_name : str
            The column name corresponding to the index.

        Raises
        ------
        ValueError
            Index is negative
        r   zIndex cannot be negative: r  é   éA   )r&  ÚdivmodÚchr)r0   r2  Úcolumn_nameÚ	remainders       r1   Ú
_num2excelzExcelFormatter._num2exceln  sw   € ð& �1Š9ˆ9ÝÐA¸%ÐAÐAÑBÔBÐBØˆà�aŠiˆi˜{ˆiÝ% e¨RÑ0Ô0ÑˆE�9Ý˜b 9™nÑ-Ô-°Ñ;ˆKð �aŠiˆi˜{ˆið Ðr3   ÚSheet1r   Úwriterú)FilePath | WriteExcelBuffer | ExcelWriterÚ
sheet_nameÚstartrowÚstartcolÚfreeze_panesútuple[int, int] | NoneÚengineÚstorage_optionsúStorageOptions | NoneÚengine_kwargsr<   c	           
     óÀ  — ddl m}	 | j        j        \  }
}|
| j        k    s|| j        k    r%t          d|
› d|› d| j        › d| j        › �¦  «        ‚| j        rød}d}|dk    rd}n | j        r—d}t          | j        j        t          ¦  «        r*| j        rt          d¦  «        ‚| j        j        j        dz
  }t          | j        t          ¦  «        r1| j        rt          d¦  «        ‚| j        j        }| j        j        dz   }nd}|                      |¦  «        › ||z   › �}|                      ||z   |z   ¦  «        }|› ||
z   |z   › �}|› d	|› �}nd
}|€i }|                      ¦   «         }t          ||	¦  «        rd}n |	||||¬¦  «        }d}	 |                     ||||||¬¦  «         |r|                     ¦   «          d
S d
S # |r|                     ¦   «          w w xY w)aí  
        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 : dict, optional
            Extra options that make sense for a particular storage connection, e.g.
            host, port, username, password, etc. For HTTP(S) URLs the key-value pairs
            are forwarded to ``urllib.request.Request`` as header options. For other
            URLs (e.g. starting with "s3://", and "gcs://") the key-value pairs are
            forwarded to ``fsspec.open``. Please see ``fsspec`` and ``urllib`` for more
            details, and for more examples on storage options refer `here
            <https://pandas.pydata.org/docs/user_guide/io.html?
            highlight=storage_options#reading-writing-remote-files>`_.

        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: ri   zwExcel filters merged cells by showing only the first row. 'autofilter' and 'merge_cells' cannot be used simultaneously.r  ú:NF)r·  r¸  rº  T)r³  r´  rµ  Úautofilter_range)Úpandas.io.excelr    r@  ÚshapeÚmax_rowsÚmax_colsr&  r8  r2  r—   r   r5  rV  r:  r®  r¦  Ú_write_cellsÚclose)r0   r°  r²  r³  r´  rµ  r·  r¸  rº  r    Únum_rowsÚnum_colsÚstartrowsoffsetÚendrowsoffsetÚindexoffsetÚstartÚautofilter_end_columnÚendr½  Úformatted_cellsÚ	need_saves                        r1   ÚwritezExcelFormatter.writeŠ  s»  € ðR 	0Ð/Ð/Ð/Ð/Ð/à!œWœ]Ñˆ�(Ø�d”mÒ#Ð# x°$´-Ò'?Ð'?ÝðGÀð Gð GÈHð Gð GØ&*¤mðGð GØ7;´}ðGð Gñô ð ð
 Œ?ð &	$àˆOØˆMà˜1Š}ˆ}Ø��Ø”ð !Ø�Ý˜dœgœm­ZÑ8Ô8ð @ØÔ'ð @Ý(ð6ñô ð ð '+¤g¤mÔ&;¸aÑ&?˜å˜dœl­JÑ7Ô7ð 
AØÔ'ð 	AÝ(ð6ñô ð ð +/¬,Ô*>˜à(,¬Ô(<¸qÑ(@˜øð !�Ø—’ xÑ0Ô0ÐN°(¸_Ñ2LÐNÐNˆEØ$(§O¢O°H¸xÑ4GÈ+Ñ4UÑ$VÔ$VÐ!Ø*ÐQ¨H°xÑ,?À-Ñ,OÐQÐQˆCØ"'Ð/Ð/¨#Ð/Ð/ÐÐà#ÐàÐ ØˆMà×2Ò2Ñ4Ô4ˆÝ�f˜kÑ*Ô*ð 		ØˆIˆIà �[ØØØ /Ø+ð	ñ ô ˆFð ˆIð	Ø×ÒØØØ!Ø!Ø)Ø!1ð  ñ ô ð ð ð Ø—’‘”���ðð øˆyð Ø—’‘”��ðøøøs   ÆG ÇG)
r  NNTTNFr+  NF)r,  r×   r-  r|   r.  r/  r0  r1  r2  r²   r3  r4  r5  r   r6  r×   r7  rB   r8  r²   r,   r-   )r,   rL  )r,   r²   )rc  r*   r,   rL  )r2  r*   r,   r×   )r¯  r   r   NNNN)r°  r±  r²  r×   r³  r*   r´  r*   rµ  r¶  r·  r|   r¸  r¹  rº  r<   r,   r-   )r4   r5   r6   r'  rÀ  rÁ  r2   rK  rj  rp  r�  r†  r„  rƒ  ÚpropertyrX  r�  r¦  r®  rÎ  r9   r3   r1   r*  r*  ó  s†  € € € € € ð#ð #ðJ €HØ€Hð
 Ø#'Ø*.Ø,0ØØ)-Ø-2ØØ+/Ø ð0%ð 0%ð 0%ð 0%ð 0%ðdð ð ð$1ð 1ð 1ð 1ðfð ð ð ð>*ð *ð *ð *ð,/ð /ð /ð /ð,2ð ,2ð ,2ð ,2ð\V0ð V0ð V0ð V0ðp ð)ð )ð )ñ „Xð)ðð ð ð ð ð ð ð ð
ð ð ð ð> #ØØØ/3Ø!Ø15Ø%)ðuð uð uð uð uð uð ur3   r*  )8r'  Ú
__future__r   Úcollections.abcr   r   r   r   r   r   r}  r  Útypingr	   r
   r   rÊ   ÚnumpyrŠ  Úpandas._libs.libr   Úpandas.util._exceptionsr   Úpandas.core.dtypesr   Úpandas.core.dtypes.commonr   r   Úpandasr   r   r   r   r   Úpandas.core.commonÚcoreÚcommonr”  Úpandas.io.formats._color_datar   Úpandas.io.formats.cssr   r   Úpandas.io.formats.formatr   Úpandas._typingr   r   r   r   r   r    r"   r;   rT   r*  r9   r3   r1   ú<module>rà     s  ððð ð #Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	ðð ð ð ð ð ð ð ð ð ð
 €€€à Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð !Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð 7Ð 6Ð 6Ð 6Ð 6Ð 6àð 	#ðð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð"Ð"Ð"Ð"Ð"ð!ð !ð !ð !ð !ñ !ô !ð !ð*Kð Kð Kð Kð K�9ñ Kô Kð Kð2CAð CAð CAð CAð CAñ CAô CAð CAðLLð Lð Lð Lð Lñ Lô Lð Lð Lð Lr3   