
    MiZ                       S SK r S SKrS SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJr  S SKJrJr  S SKJrJrJrJrJrJr  S S	KJr  S S
KJr  S SKJr  S SK J!r!  S SK"J#r#  S SK$J%r%J&r&  S SK'J(r(  SSK)J*r*  SSK+J,r,J-r-J.r.  SSK/J0r0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArA  SSK*JBrB  \R                  " S\R                  5      rES rFS rGS rH\" SS5      rI\" SS5      rJ\" S S!5      rK\" S"S#5      rL\" S$S%5      rM\" S&S'5      rN\" S(S!5      rO\" S)S*5      rP\" S+S,5      rQ " S- S.\*R                  5      rRg)/    N)defaultdict
namedtuple)Decimal)Fractionwraps)BytesIOStringIO)isinfisnan)AnyDictListLiteralOptionalUnion)warn)Chart)Color)CommentType)Image)UrlUrlTypes)
ButtonType   )	xmlwriter)DrawingDrawingInfoDrawingTypes)DuplicateTableNameOverlappingRange)Format)Shape)_datetime_to_excel_datetime_get_sparkline_style_preserve_whitespace_supported_datetimequote_sheetnamexl_cell_to_rowcolxl_col_to_namexl_pixel_widthxl_rangexl_rowcol_to_cellxl_rowcol_to_cell_fast)	XMLwritera  
    \bANCHORARRAY\(    |
    \bBYCOL\(          |
    \bBYROW\(          |
    \bCHOOSECOLS\(     |
    \bCHOOSEROWS\(     |
    \bDROP\(           |
    \bEXPAND\(         |
    \bFILTER\(         |
    \bHSTACK\(         |
    \bLAMBDA\(         |
    \bMAKEARRAY\(      |
    \bMAP\(            |
    \bRANDARRAY\(      |
    \bREDUCE\(         |
    \bSCAN\(           |
    \bSEQUENCE\(       |
    \bSINGLE\(         |
    \bSORT\(           |
    \bSORTBY\(         |
    \bSWITCH\(         |
    \bTAKE\(           |
    \bTEXTSPLIT\(      |
    \bTOCOL\(          |
    \bTOROW\(          |
    \bUNIQUE\(         |
    \bVSTACK\(         |
    \bWRAPCOLS\(       |
    \bWRAPROWS\(       |
    \bXLOOKUP\(c                 0   ^  [        T 5      U 4S j5       nU$ )zb
Decorator function to convert A1 notation in cell method calls
to the default row/col notation.

c                    >  U(       a  US   n[        U5        T" U /UQ70 UD6$ ! [         a    [        W5      nXASS  -   n N*f = fNr   r   )int
ValueErrorr)   )selfargskwargs	first_argnew_argsmethods        n/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/xlsxwriter/worksheet.pycell_wrapper'convert_cell_args.<locals>.cell_wrapperf   s[    	' G	I d,T,V,,  	'(3H12h&D	's   & AAr   r:   r<   s   ` r;   convert_cell_argsr?   _   s#     6]- -     c                 0   ^  [        T 5      U 4S j5       nU$ )zc
Decorator function to convert A1 notation in range method calls
to the default row/col notation.

c                 4  >  U(       a  [        US   5        T
" U /UQ70 UD6$ ! [         ai    SUS   ;   a1  US   R                  S5      u  p4[        U5      u  pV[        U5      u  pxO[        US   5      u  pVXVpXVXx/n	U	R	                  USS  5        U	n N~f = f)Nr   :r   r3   r4   splitr)   extend)r5   r6   r7   cell_1cell_2row_1col_1row_2col_2r9   r:   s             r;   r<   (convert_range_args.<locals>.cell_wrapper~   s    	DG d,T,V,,  	d1g~!%as!30808u0a9$ue3HOODH%D	s   $ A0BBr   r>   s   ` r;   convert_range_argsrN   w   s#     6]- -* r@   c                 0   ^  [        T 5      U 4S j5       nU$ )ze
Decorator function to convert A1 notation in columns method calls
to the default row/col notation.

c                 ,  >  U(       a  [        US   5        T
" U /UQ70 UD6$ ! [         ae    US   R                  S5       Vs/ s H  o3S-   PM	     Os  snf snu  pE[        U5      u  pg[        U5      u  phXx/n	U	R	                  USS  5        U	n Nzf = f)Nr   rC   1r   rD   )r5   r6   r7   colrG   rH   _rJ   rL   r9   r:   s             r;   column_wrapper+convert_column_args.<locals>.column_wrapper   s    	DG d,T,V,,  	377==3EF3ECCi3EFNF(0HA(0HA~HOODH%D	s   $  BA>BBr   )r:   rT   s   ` r;   convert_column_argsrV      s#     6]- -  r@   BlankformatErrorzerror, format, valueNumberznumber, formatStringzstring, formatBooleanzboolean, formatFormulazformula, format, valueDatetime
RichStringzstring, format, raw_stringArrayFormulaz$formula, format, value, range, atypec                   H  ^  \ rS rSrSrGS4U 4S jjrS\S\4S jr\S\S\S\	\
S	   \4   4S
 j5       rS\S\4S jr\ GS5S\S\S\S\\   S\
S   4
S jj5       r GS5S\S\S\S\\   S\
S   4
S jjr\ GS5S\S\S\	\\\4   S\\   S\
S	   4
S jj5       r GS5S\S\S\	\\\4   S\\   S\
S	   4
S jjr\ GS5S\S\S\S\\   4S jj5       r GS5S\S\S\\   S\
S	   4S jjr\  GS6S\S\S\S\\   S\
S   4
S jj5       r  GS6S\S\S\S\\   S\
S   4
S jjr\  GS6S\S\S\S\S\S\\   S\
S	   4S jj5       r\  GS6S\S\S\S\S\S\\   S\
S	   4S  jj5       rGS7S! jr\S" 5       r    GS8S\
S	   4S# jjr!\ GS5S\S\S$\"RD                  S\\   S\
S	   4
S% jj5       r#GS5S\S\S\4S& jjr$\ GS5S\S\S'\%S\\   4S( jj5       r&GS5S\S\S\4S) jjr'\   GS9S\S\S*\S\\   S\\   S+\\   4S, jj5       r( GS9S\S\S\4S- jjr)\S\S\S.\	\\4   S\
S/   4S0 j5       r*S\S\S\4S1 jr+GS4S2 jr,\ GS5S\S\S\\   S\	\
S   \4   4S3 jj5       r-\ GS5S\S\S\\   S\	\
S   \4   4S4 jj5       r.\ GS5S\S\S5\	\\/\04   S6\\1\\4      S\
S	   4
S7 jj5       r2\ GS5S\S\S5\	\\/\04   S6\\1\\4      S\
S	   4
S8 jj5       r3\ GS5S\S\S9\S6\\1\\4      S\
S	   4
S: jj5       r4\ GS5S\S\S;\5S6\\1\\4      S\
S   4
S< jj5       r6\ GS5S\S\S=\S6\\1\\4      S\
S   4
S> jj5       r7GS4S? jr8 GS7S5\	\\/\04   S@\%S\
S   4SA jjr9GS4SB jr:SC r;GS4SD jr<GS4SE jr=GS4SF jr>GS4SG jr?GS4SH jr@\A   GS9S\S\SI\\   S\\   S6\\1\\4      S\
S	   4SJ jj5       rB\A   GS9S\S\SI\\   S\\   S6\\1\\4      S\
S	   4SK jj5       rCGS:SL\SS4SM jjrD   GS9S\SN\\   S\\   S6\\1\\4      S\
S	   4
SO jjrE   GS9S\SN\\   S\\   S6\\1\\4      S\
S	   4
SP jjrF GS;SN\\   SQ\%SS4SR jjrG\ GS5S\S\S\S\SS\S\\   S\4ST jj5       rH\S\S\S\S\SS4
SU j5       rIS\SV\SS4SW jrJS\SX\K\   SS4SY jrL\ GS5S\S\S\S\S6\\1\\4      S\
S   4SZ jj5       rM\ GS5S\S\S\S\S6\\1\\4      S\
S   4S[ jj5       rN\ GS5S\S\S\S\S6\\1\\4      S\
S\   4S] jj5       rO\ GS5S\S\S6\\1\\4      S\
S   4S^ jj5       rP\S\S\S\S\SS4
S_ j5       rQ\GS<S\S\SS4S` jj5       rR    GS=Sa\%Sb\%Sc\%Sd\%SS4
Se jjrS\   GS>S\S\Sf\\   Sg\\   Sh\SS4Si jj5       rT\  GS?Sj\Sk\Sf\\   Sg\\   SS4
Sl jj5       rUGS@Sm\SS4Sn jjrVGS4So jrWGS4Sp jrXSq\	\\Y4   SS4Sr jrZ GSASs\S6\\1\\4      SS4St jjr[  GS?Su\Sv\\   Ss\\   S\4Sw jjr\\ GS5S\S\S6\\1\\4      S\
S	   4Sx jj5       r]\ GS5S\S\S'\%S\\   4Sy jj5       r^GS4Sz jr_GS4S{ jr`GSBS|\
S}   SS4S~ jjraGS4S jrbS\	\
S   \4   SS4S jrcGS4S jrdGS4S jre    GSCS\S\S\S\SS4
S jjrf GSDS\S6\\1\\4      SS4S jjrg GSDS\S6\\1\\4      SS4S jjrhGS5S\S\\   SS4S jjri\AGS5S\S\\   SS4S jj5       rjGSBS\
S}   SS4S jjrkGS4S jrlGS4S jrm\S\S\S\S\S\
S	   4
S j5       rnGS4S jroSI\SN\SS4S jrpS\SS4S jrqS\SS4S jrrGS4S jrsS\K\   SS4S jrtS\K\   SS4S jruGS5S\\   SS4S jjrvGS5S6\\1\\4      S\
S	   4S jjrwGS4S jrxGS4S jry GSES\S\S\4S jjrzS r{S r|S r}S r~S rS rS\4S jrGS5S6\\1\\4      4S jjrS\0S\S\SS4S jrGS4S jrGS4S jrGS4S jrGS4S jrS rS rGSFS\4S jjrGSFS\4S jjrS rS rS=\4S jrS\4S jrS rGS4S jrGS4S jrS rGS4S jrS rS rS rGS5S jrGS5S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS5S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGSFGS4S jjrGS4S jrGS;S\SS4S jjrGS5S\SS4S jjrS\S\SS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrS\S\S\S*\SS4
S jrS\S\S*\SS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4S jrGS4GS  jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS	 jrGS4GS
 jrGS4GS jrGS4GS jrGS4GS jrGS5GS4GS jjrGS4GS jrGS4GS jrGS4GS jrGS4GS jrS\S\SS4GS jrS\S\SS4GS jrGS rGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS jrGS4GS  jrGS4GS! jrGS4GS" jrGS4GS# jrGS4GS$ jrGS4GS% jrGS4GS& jrGS4GS' jrGS4GS( jrGS4GS) jrGS4GS* jrGS4GS+ jrGS4GS, jGr GS4GS- jGrGS4GS. jGrGS4GS/ jGrGS4GS0 jGrGS4GS1 jGrGS4GS2 jGrGS3GrU =Gr$ (G  	Worksheet   z5
A class for writing the Excel XLSX Worksheet file.

returnNc                 <
  > [         TU ]  5         SU l        SU l        SU l        SU l        SU l        SU l        SU l        / U l	        SU l
        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        0 U l        / U l        SU l        SU l        SU l        SU l        / U l        S	U l        SU l        SU l        SU l        S
U l        SU l         SU l!        SU l"        SU l#        SU l$        SU l%        SU l&        SU l'        SU l(        SU l)        SU l*        SU l+        / U l,        / U l-        / U l.        SU l/        SU l0        SU l1        SU l2        SU l3        SU l4        SU l5        SU l6        SU l7        SU l8        SU l9        SU l:        SU l;        SU l<        SU l=        SU l>        SU l?        / U l@        / U lA        0 U lB        / U lC        SU lD        0 U lE        [        [        5      U lH        SU lI        S
U lJ        SU lK        SU lL        S
U lM        SU lN        SU lO        SU lP        SU lQ        S
U lR        S
U lS        S
U lT        SU lU        SU lV        SU lW        SU lX        SU lY        SU lZ        SU l[        SU l\        0 U l]        / U l^        [        [        5      U l_        / U l`        0 U la        0 U lb        0 U lc        SU ld        SU le        SU lf        [        [        5      U lg        / U lh        SU li        SU lj        SU lk        / U ll        SU lm        SU ln        SU lo        SS/U lp        SU lq        0 U lr        0 U ls        0 U lt        0 U lu        SU lv        SU lw        S
U lx        SU ly        SU lz        / U l{        / U l|        / U l}        / U l~        / U l        / U l        / U l        / U l        / U l        / U l        / U l        / U l        / U l        / U l        0 U l        SU l        0 U l        SU l        0 U l        SU l        SU l        SU l        SU l        / U l        0 U l        / U l        SU l        S
U l        SU l        SU l        SU l        [        [        5      U l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU lk        SU l        SU l        SU l        SU l        SU l        0 U l        SU l        SU l        SU l        SU l        SU l        g)z
Constructor.

Nr   Fi  i   i @        r   Tffffff?      ?333333?d         \( @@   D      	   i  )super__init__nameindex	str_tablepaletteconstant_memorytmpdiris_chartsheet
ext_sheets
fileclosedexcel_versionexcel2003_style
xls_rowmax
xls_colmax
xls_strmax
dim_rowmin
dim_rowmax
dim_colmin
dim_colmaxcol_info
selectionshiddenactive	tab_colortop_left_cellpanesactive_paneselectedpage_setup_changed
paper_sizeorientationprint_options_changedhcentervcenterprint_gridlinesscreen_gridlinesprint_headersrow_col_headersheader_footer_changedheaderfooterheader_footer_alignsheader_footer_scalesheader_imagesfooter_imagesheader_images_listmargin_leftmargin_right
margin_topmargin_bottommargin_headermargin_footerrepeat_row_rangerepeat_col_rangeprint_area_range
page_orderblack_whitedraft_qualityprint_comments
page_startfit_page	fit_width
fit_heighthbreaksvbreaksprotect_optionsprotected_rangesnum_protected_rangesset_colsr   dictset_rowszoomzoom_scale_normalprint_scaleis_right_to_left
show_zerosleading_zerosoutline_row_leveloutline_col_leveloutline_styleoutline_belowoutline_right
outline_onoutline_changedoriginal_row_heightdefault_row_heightdefault_row_pixelsdefault_col_widthdefault_col_pixelsdefault_date_pixelsdefault_row_zeroednameswrite_matchtablemergemerged_cellstable_cells	row_spanshas_vmlhas_header_vmlhas_commentscommentscomments_listcomments_authorcomments_visiblevml_shape_idbuttons_listvml_header_idautofilter_areaautofilter_reffilter_range	filter_onfilter_colsfilter_typefilter_cells	row_sizescol_size_changedrow_size_changedlast_shape_id	rel_counthlink_count
hlink_refsexternal_hyper_linksexternal_drawing_linksexternal_comment_linksexternal_vml_linksexternal_table_linksexternal_background_linksdrawing_linksvml_drawing_linkschartsimagestables
sparklinesshapes
shape_hashdrawingdrawing_relsdrawing_rels_idvml_drawing_relsvml_drawing_rels_idbackground_imagerstringprevious_rowvalidationscond_formatsdata_bars_2010use_data_bars_2010dxf_priority	page_viewvba_codename	date_1904
hyperlinksstrings_to_numbersstrings_to_urlsnan_inf_to_errorsstrings_to_formulasdefault_date_formatdefault_url_formatdefault_checkbox_formatworkbook_add_formatremove_timezonemax_url_lengthrow_data_filenamerow_data_fhworksheet_metavml_data_idrow_data_fh_closedvertical_dpihorizontal_dpiwrite_handlersignored_errorshas_dynamic_arraysuse_future_functionsignore_write_stringembedded_images)r5   	__class__s    r;   ru   Worksheet.__init__   st    		
 "!$!
"'%*"$ $"$%*"$(!$(!"$!   " " "! "$%!#D)	!" %!"!"$#% "$"$!%"$#% "#
 &

#!#D)! % !"F % %$&!&(#&(#"$$&!)+&!#  "#$  $ "' %d+"'#!&#' #' "&'+$#' $"!%" !%"' ""'$)!#( #r@   rowrR   c                    US:X  a  U R                   " X#/UQ76 $ U R                  (       a)  UR                  S5      (       a  U R                  " X#/UQ76 $ UR                  S5      (       a)  UR	                  S5      (       a  U R                  " X#/UQ76 $ SU;   a  U R
                  (       a  [        R                  " SU5      (       dT  [        R                  " SU5      (       d8  [        R                  " SU5      (       d  [        R                  " S	U5      (       a  U R                  " X#/UQ76 $ U R                  (       ag   [        U5      nU R                  (       d   [        U5      (       d'  [        U5      (       d  U R                  " X#U/US
S  Q76 $ U R                   " X#/UQ76 $ U R                   " X#/UQ76 $ ! [         a     N2f = f)Nrg   =z{=}rC   z(ftp|http)s?://zmailto:z(in|ex)ternal:zfile://r   )_write_blankr  
startswith_write_formulaendswithr  rematch
_write_urlr  floatr  r   r   _write_numberr4   _write_string)r5   tokenr'  rR   r6   fs         r;   _write_token_as_string Worksheet._write_token_as_string  s   B;$$S555##(8(8(=(=&&s7$77D!!ennS&9&9&&s7$77 5L$$*E2288Iu--88,e4488Iu-- ??33d33""%L))%((588--cEDHEE
 %%c666 !!#2T22  s   ?AF8 8
GG)r   c                 (    U R                   " X/UQ76 $ )av  
Write data to a worksheet cell by calling the appropriate write_*()
method based on the type of data being passed.

Args:
    row:   The cell row (zero indexed).
    col:   The cell column (zero indexed).
    *args: Args to pass to sub functions.

Returns:
     0:    Success.
    -1:    Row or column is out of worksheet bounds.
    other: Return value of called method.

_writer5   r'  rR   r6   s       r;   writeWorksheet.write  s    " {{3+d++r@   c                     U(       d  [        S5      eUS   nUR                  nXPR                  ;   a  U R                  U   nU" XU/UQ76 nUc  OU$ Uc  U R                  " X/UQ76 $ U[        L a  U R
                  " X/UQ76 $ U[        [        [        [        4;   a  U R                  " X/UQ76 $ U[        L a  U R                  " XAU/UQ76 $ U[        R                  [        R                  [        R                  [        R                   4;   a  U R"                  " X/UQ76 $ [%        U[        [        [        [        45      (       a  U R                  " X/UQ76 $ [%        U[        5      (       a  U R                  " XAU/UQ76 $ [%        U[        5      (       a  U R
                  " X/UQ76 $ ['        U5      (       a  U R"                  " X/UQ76 $ [%        U[(        5      (       a  U R*                  " X/UQ76 $  [        U5      nU R                  " XU/USS  Q76 $ ! [,         a     O%[          a    [        S[/        U5       S35      ef = f [        U5        U R0                  " X/UQ76 $ ! [,         a    [        S[/        U5       S35      ef = f)Nz,write() takes at least 4 arguments (3 given)r   r   zUnsupported type z in write())	TypeErrorr%  r  r+  bool_write_booleanr2  r3   r   r   r3  strr7  datetimedatetime	timedelta_write_datetime
isinstancer'   r   r1  r4   typer4  )	r5   r'  rR   r6   r5  
token_typewrite_handlerfunction_returnr6  s	            r;   r<  Worksheet._write  s    JKK Q __
 ,,, //
;M+DsBTBO
 &&& =$$S555 &&s7$77%gx88%%c666..u3FFFMMMM	
 
 ''8488
 eeS'8<==%%c666 eS!!..u3FFF eT""&&s7$77 u%%''8488 eS!!??33d33	JeA%%c=DH== 	 	J/U}KHII	J	JJ%%c666 	J/U}KHII	Js   8!H 
I&"II* *#Jstringcell_format)r   r9  c                 &    U R                  XX45      $ )aC  
Write a string to a worksheet cell.

Args:
    row:    The cell row (zero indexed).
    col:    The cell column (zero indexed).
    string: Cell data. Str.
    format: An optional cell Format object.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: String truncated to 32k characters.

)r4  )r5   r'  rR   rP  rQ  s        r;   write_stringWorksheet.write_string@  s    & !!#F@@r@   c                    SnU R                  X5      (       a  g[        U5      U R                  :  a  US U R                   nSnU R                  (       d  U R                  R                  U5      nOUnU R                  (       a   XR                  :  a  U R                  U5        [        Xd5      U R                  U   U'   U$ Nr   r9  rR  )
_check_dimensionslenr   rz   rx   _get_shared_string_indexr  _write_single_rowCellStringTupler   )r5   r'  rR   rP  rQ  	str_errorstring_indexs          r;   r4  Worksheet._write_stringV  s     	 !!#++ v;(-doo.FI ##>>BB6JL!L C*;*;$;""3'  /|I

3r@   numberc                 &    U R                  XX45      $ )a4  
Write a number to a worksheet cell.

Args:
    row:         The cell row (zero indexed).
    col:         The cell column (zero indexed).
    number:      Cell data. Int or float.
    cell_format: An optional cell Format object.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

)r3  r5   r'  rR   r`  rQ  s        r;   write_numberWorksheet.write_numbers  s    , !!#F@@r@   c                 j   [        U5      (       d  [        U5      (       a  U R                  (       av  [        U5      (       a  U R                  XSUS5      $ U[        R
                  :X  a  U R                  XSUS5      $ U[        R
                  * :X  a  U R                  XSUS5      $ O[        S5      eUR                  [        L a  [        U5      nU R                  X5      (       a  gU R                  (       a   XR                  :  a  U R                  U5        [        X45      U R                  U   U'   g)N#NUM!z1/0#DIV/0!z-1/0zUNAN/INF not supported in write_number() without 'nan_inf_to_errors' Workbook() optionr9  r   )r   r   r  r-  mathinfrA  r%  r   r2  rX  rz   r  r[  CellNumberTupler   rb  s        r;   r3  Worksheet._write_number  s    ==E&MM%%==..s+wWWTXX%..sYWWdhhY&..siXX '  D 
 x'6]F !!#++ C*;*;$;""3'  /vC

3r@   blankc                 &    U R                  XX45      $ )a  
Write a blank cell with formatting to a worksheet cell. The blank
token is ignored and the format only is written to the cell.

Args:
    row:         The cell row (zero indexed).
    col:         The cell column (zero indexed).
    blank:       Any value. It is ignored.
    cell_format: An optional cell Format object.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

)r+  )r5   r'  rR   rl  rQ  s        r;   write_blankWorksheet.write_blank  s    &   5>>r@   c                     Uc  gU R                  X5      (       a  gU R                  (       a   XR                  :  a  U R                  U5        [	        U5      U R
                  U   U'   g)Nr   r9  )rX  rz   r  r[  CellBlankTupler   )r5   r'  rR   rS   rQ  s        r;   r+  Worksheet._write_blank  sc      !!#++ C*;*;$;""3'  .k:

3r@   r   formulac                 (    U R                  XX4U5      $ )a  
Write a formula to a worksheet cell.

Args:
    row:         The cell row (zero indexed).
    col:         The cell column (zero indexed).
    formula:     Cell formula.
    cell_format: An optional cell Format object.
    value:       An optional value for the formula. Default is 0.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: Formula can't be None or empty.

)r-  r5   r'  rR   rs  rQ  values         r;   write_formulaWorksheet.write_formula  s    4 ""3W5IIr@   c           	         U R                  X5      (       a  gUb  US:X  a  [        S5        g[        R                  U5      (       a  U R	                  XXX4U5      $ UR                  S5      (       a*  UR                  S5      (       a  U R                  XXX4U5      $ U R                  U5      nU R                  (       a   XR                  :  a  U R                  U5        [        X4U5      U R                  U   U'   g)Nr9  rg   zFormula can't be None or empty{r*  r   )rX  r   re_dynamic_functionsearchwrite_dynamic_array_formular,  r.  _write_array_formula_prepare_formularz   r  r[  CellFormulaTupler   ru  s         r;   r-  Worksheet._write_formula  s     !!#++?gm12 %%g..33#G% 
 c""w'7'7'<'<,,#G% 
 ''0 C*;*;$;""3'  0eL

3r@   	first_row	first_collast_rowlast_colc           
          [         R                  U5      (       a  U R                  XX4XVU5      $ U R                  UUUUUUUS5      $ )a  
Write a formula to a worksheet cell/range.

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.
    formula:      Cell formula.
    cell_format:  An optional cell Format object.
    value:        An optional value for the formula. Default is 0.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

static)r{  r|  r}  r~  )r5   r  r  r  r  rs  rQ  rv  s           r;   write_array_formulaWorksheet.write_array_formula!  s_    : %%g..33h'PU  ((	
 		
r@   c           
      P    U R                  UUUUUUUS5      nUS:X  a  SU l        U$ )a  
Write a dynamic array formula to a worksheet cell/range.

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.
    formula:      Cell formula.
    cell_format:  An optional cell Format object.
    value:        An optional value for the formula. Default is 0.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

dynamicr   T)r~  r!  )	r5   r  r  r  r  rs  rQ  rv  errors	            r;   r}  %Worksheet.write_dynamic_array_formulaN  sB    8 ))	
 A:&*D#r@   c                 v   UR                  S5      (       a  USS  nUR                  S5      (       a  USS  nUR                  S5      (       a  US S nSU;   a  U$ [        R                  " SSU5      n[        R                  " S	S
U5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SS U5      n[        R                  " S!S"U5      n[        R                  " S#S$U5      n[        R                  " S%S&U5      n[        R                  " S'S(U5      n[        R                  " S)S*U5      n[        R                  " S+S,U5      n[        R                  " S-S.U5      n[        R                  " S/S0U5      n[        R                  " S1S2U5      n[        R                  " S3S4U5      n[        R                  " S5S6U5      n[        R                  " S7S8U5      n[        R                  " S9S:U5      n[        R                  " S;S<U5      n[        R                  " S=S>U5      n[        R                  " S?S@U5      nU R                  (       d	  U(       d  U$ [        R                  " SASBU5      n[        R                  " SCSDU5      n[        R                  " SESFU5      n[        R                  " SGSHU5      n[        R                  " SISJU5      n[        R                  " SKSLU5      n[        R                  " SMSNU5      n[        R                  " SOSPU5      n[        R                  " SQSRU5      n[        R                  " SSSTU5      n[        R                  " SUSVU5      n[        R                  " SWSXU5      n[        R                  " SYSZU5      n[        R                  " S[S\U5      n[        R                  " S]S^U5      n[        R                  " S_S`U5      n[        R                  " SaSbU5      n[        R                  " ScSdU5      n[        R                  " SeSfU5      n[        R                  " SgShU5      n[        R                  " SiSjU5      n[        R                  " SkSlU5      n[        R                  " SmSnU5      n[        R                  " SoSpU5      n[        R                  " SqSrU5      n[        R                  " SsStU5      n[        R                  " SuSvU5      n[        R                  " SwSxU5      n[        R                  " SySzU5      n[        R                  " S{S|U5      n[        R                  " S}S~U5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SGS U5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GS	GS
U5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGSU5      n[        R                  " GSGS U5      n[        R                  " GS!GS"U5      n[        R                  " GS#GS$U5      n[        R                  " GS%GS&U5      n[        R                  " GS'GS(U5      n[        R                  " GS)GS*U5      n[        R                  " GS+GS,U5      n[        R                  " GS-GS.U5      n[        R                  " GS/GS0U5      n[        R                  " GS1GS2U5      n[        R                  " GS3GS4U5      n[        R                  " GS5GS6U5      n[        R                  " GS7GS8U5      n[        R                  " GS9GS:U5      n[        R                  " GS;GS<U5      nU$ (=  Nrz  r   r)  r*  r9  z_xlfn.z\bANCHORARRAY\(z_xlfn.ANCHORARRAY(z	\bBYCOL\(z_xlfn.BYCOL(z	\bBYROW\(z_xlfn.BYROW(z\bCHOOSECOLS\(z_xlfn.CHOOSECOLS(z\bCHOOSEROWS\(z_xlfn.CHOOSEROWS(z\bDROP\(z_xlfn.DROP(z
\bEXPAND\(z_xlfn.EXPAND(z
\bFILTER\(z_xlfn._xlws.FILTER(z
\bHSTACK\(z_xlfn.HSTACK(z
\bLAMBDA\(z_xlfn.LAMBDA(z\bMAKEARRAY\(z_xlfn.MAKEARRAY(z\bMAP\(z
_xlfn.MAP(z\bRANDARRAY\(z_xlfn.RANDARRAY(z
\bREDUCE\(z_xlfn.REDUCE(z\bSCAN\(z_xlfn.SCAN(z	\SINGLE\(z_xlfn.SINGLE(z\bSEQUENCE\(z_xlfn.SEQUENCE(z\bSORT\(z_xlfn._xlws.SORT(z
\bSORTBY\(z_xlfn.SORTBY(z
\bSWITCH\(z_xlfn.SWITCH(z\bTAKE\(z_xlfn.TAKE(z\bTEXTSPLIT\(z_xlfn.TEXTSPLIT(z	\bTOCOL\(z_xlfn.TOCOL(z	\bTOROW\(z_xlfn.TOROW(z
\bUNIQUE\(z_xlfn.UNIQUE(z
\bVSTACK\(z_xlfn.VSTACK(z\bWRAPCOLS\(z_xlfn.WRAPCOLS(z\bWRAPROWS\(z_xlfn.WRAPROWS(z\bXLOOKUP\(z_xlfn.XLOOKUP(z	\bACOTH\(z_xlfn.ACOTH(z\bACOT\(z_xlfn.ACOT(z\bAGGREGATE\(z_xlfn.AGGREGATE(z
\bARABIC\(z_xlfn.ARABIC(z\bARRAYTOTEXT\(z_xlfn.ARRAYTOTEXT(z\bBASE\(z_xlfn.BASE(z\bBETA.DIST\(z_xlfn.BETA.DIST(z\bBETA.INV\(z_xlfn.BETA.INV(z\bBINOM.DIST.RANGE\(z_xlfn.BINOM.DIST.RANGE(z\bBINOM.DIST\(z_xlfn.BINOM.DIST(z\bBINOM.INV\(z_xlfn.BINOM.INV(z
\bBITAND\(z_xlfn.BITAND(z\bBITLSHIFT\(z_xlfn.BITLSHIFT(z	\bBITOR\(z_xlfn.BITOR(z\bBITRSHIFT\(z_xlfn.BITRSHIFT(z
\bBITXOR\(z_xlfn.BITXOR(z\bCEILING.MATH\(z_xlfn.CEILING.MATH(z\bCEILING.PRECISE\(z_xlfn.CEILING.PRECISE(z\bCHISQ.DIST.RT\(z_xlfn.CHISQ.DIST.RT(z\bCHISQ.DIST\(z_xlfn.CHISQ.DIST(z\bCHISQ.INV.RT\(z_xlfn.CHISQ.INV.RT(z\bCHISQ.INV\(z_xlfn.CHISQ.INV(z\bCHISQ.TEST\(z_xlfn.CHISQ.TEST(z\bCOMBINA\(z_xlfn.COMBINA(z
\bCONCAT\(z_xlfn.CONCAT(z\bCONFIDENCE.NORM\(z_xlfn.CONFIDENCE.NORM(z\bCONFIDENCE.T\(z_xlfn.CONFIDENCE.T(z\bCOTH\(z_xlfn.COTH(z\bCOT\(z
_xlfn.COT(z\bCOVARIANCE.P\(z_xlfn.COVARIANCE.P(z\bCOVARIANCE.S\(z_xlfn.COVARIANCE.S(z\bCSCH\(z_xlfn.CSCH(z\bCSC\(z
_xlfn.CSC(z\bDAYS\(z_xlfn.DAYS(z\bDECIMAL\(z_xlfn.DECIMAL(z\bERF.PRECISE\(z_xlfn.ERF.PRECISE(z\bERFC.PRECISE\(z_xlfn.ERFC.PRECISE(z\bEXPON.DIST\(z_xlfn.EXPON.DIST(z\bF.DIST.RT\(z_xlfn.F.DIST.RT(z
\bF.DIST\(z_xlfn.F.DIST(z\bF.INV.RT\(z_xlfn.F.INV.RT(z	\bF.INV\(z_xlfn.F.INV(z
\bF.TEST\(z_xlfn.F.TEST(z\bFILTERXML\(z_xlfn.FILTERXML(z\bFLOOR.MATH\(z_xlfn.FLOOR.MATH(z\bFLOOR.PRECISE\(z_xlfn.FLOOR.PRECISE(z\bFORECAST.ETS.CONFINT\(z_xlfn.FORECAST.ETS.CONFINT(z\bFORECAST.ETS.SEASONALITY\(z_xlfn.FORECAST.ETS.SEASONALITY(z\bFORECAST.ETS.STAT\(z_xlfn.FORECAST.ETS.STAT(z\bFORECAST.ETS\(z_xlfn.FORECAST.ETS(z\bFORECAST.LINEAR\(z_xlfn.FORECAST.LINEAR(z\bFORMULATEXT\(z_xlfn.FORMULATEXT(z\bGAMMA.DIST\(z_xlfn.GAMMA.DIST(z\bGAMMA.INV\(z_xlfn.GAMMA.INV(z\bGAMMALN.PRECISE\(z_xlfn.GAMMALN.PRECISE(z	\bGAMMA\(z_xlfn.GAMMA(z	\bGAUSS\(z_xlfn.GAUSS(z\bHYPGEOM.DIST\(z_xlfn.HYPGEOM.DIST(z\bIFNA\(z_xlfn.IFNA(z\bIFS\(z
_xlfn.IFS(z	\bIMAGE\(z_xlfn.IMAGE(z
\bIMCOSH\(z_xlfn.IMCOSH(z	\bIMCOT\(z_xlfn.IMCOT(z
\bIMCSCH\(z_xlfn.IMCSCH(z	\bIMCSC\(z_xlfn.IMCSC(z
\bIMSECH\(z_xlfn.IMSECH(z	\bIMSEC\(z_xlfn.IMSEC(z
\bIMSINH\(z_xlfn.IMSINH(z	\bIMTAN\(z_xlfn.IMTAN(z\bISFORMULA\(z_xlfn.ISFORMULA(z\bISOMITTED\(z_xlfn.ISOMITTED(z\bISOWEEKNUM\(z_xlfn.ISOWEEKNUM(z\bLET\(z
_xlfn.LET(z\bLOGNORM.DIST\(z_xlfn.LOGNORM.DIST(z\bLOGNORM.INV\(z_xlfn.LOGNORM.INV(z
\bMAXIFS\(z_xlfn.MAXIFS(z
\bMINIFS\(z_xlfn.MINIFS(z\bMODE.MULT\(z_xlfn.MODE.MULT(z\bMODE.SNGL\(z_xlfn.MODE.SNGL(z	\bMUNIT\(z_xlfn.MUNIT(z\bNEGBINOM.DIST\(z_xlfn.NEGBINOM.DIST(z\bNORM.DIST\(z_xlfn.NORM.DIST(z\bNORM.INV\(z_xlfn.NORM.INV(z\bNORM.S.DIST\(z_xlfn.NORM.S.DIST(z\bNORM.S.INV\(z_xlfn.NORM.S.INV(z\bNUMBERVALUE\(z_xlfn.NUMBERVALUE(z\bPDURATION\(z_xlfn.PDURATION(z\bPERCENTILE.EXC\(z_xlfn.PERCENTILE.EXC(z\bPERCENTILE.INC\(z_xlfn.PERCENTILE.INC(z\bPERCENTRANK.EXC\(z_xlfn.PERCENTRANK.EXC(z\bPERCENTRANK.INC\(z_xlfn.PERCENTRANK.INC(z\bPERMUTATIONA\(z_xlfn.PERMUTATIONA(z\bPHI\(z
_xlfn.PHI(z\bPOISSON.DIST\(z_xlfn.POISSON.DIST(z\bQUARTILE.EXC\(z_xlfn.QUARTILE.EXC(z\bQUARTILE.INC\(z_xlfn.QUARTILE.INC(z\bQUERYSTRING\(z_xlfn.QUERYSTRING(z\bRANK.AVG\(z_xlfn.RANK.AVG(z\bRANK.EQ\(z_xlfn.RANK.EQ(z\bRRI\(z
_xlfn.RRI(z\bSECH\(z_xlfn.SECH(z\bSEC\(z
_xlfn.SEC(z
\bSHEETS\(z_xlfn.SHEETS(z	\bSHEET\(z_xlfn.SHEET(z
\bSKEW.P\(z_xlfn.SKEW.P(z\bSTDEV.P\(z_xlfn.STDEV.P(z\bSTDEV.S\(z_xlfn.STDEV.S(z\bT.DIST.2T\(z_xlfn.T.DIST.2T(z\bT.DIST.RT\(z_xlfn.T.DIST.RT(z
\bT.DIST\(z_xlfn.T.DIST(z\bT.INV.2T\(z_xlfn.T.INV.2T(z	\bT.INV\(z_xlfn.T.INV(z
\bT.TEST\(z_xlfn.T.TEST(z\bTEXTAFTER\(z_xlfn.TEXTAFTER(z\bTEXTBEFORE\(z_xlfn.TEXTBEFORE(z\bTEXTJOIN\(z_xlfn.TEXTJOIN(z\bUNICHAR\(z_xlfn.UNICHAR(z\bUNICODE\(z_xlfn.UNICODE(z\bVALUETOTEXT\(z_xlfn.VALUETOTEXT(z	\bVAR.P\(z_xlfn.VAR.P(z	\bVAR.S\(z_xlfn.VAR.S(z\bWEBSERVICE\(z_xlfn.WEBSERVICE(z\bWEIBULL.DIST\(z_xlfn.WEIBULL.DIST(z
\bXMATCH\(z_xlfn.XMATCH(z\bXOR\(z
_xlfn.XOR(z
\bZ.TEST\(z_xlfn.Z.TEST()r,  r.  r/  subr"  )r5   rs  expand_future_functionss      r;   r  Worksheet._prepare_formula|  s   c""abkGc""abkGC  crlG wN &&+-A7K&&~w?&&~w?&&*,?I&&*,?I&&mW=&&A&&(=wG&&A&&A&&)+=wG&&\7;&&)+=wG&&A&&mW=&&@&&*;WE&&&97C&&A&&A&&mW=&&)+=wG&&~w?&&~w?&&A&&A&&*;WE&&*;WE&&)97C((1HN&&~w?&&mW=&&)+=wG&&A&&+-A7K&&mW=&&)+=wG&&*;WE&&02KWU&&*,?I&&)+=wG&&A&&)+=wG&&~w?&&)+=wG&&A&&,.CWM&&/1I7S&&-/EwO&&*,?I&&,.CWM&&)+=wG&&*,?I&&)97C&&A&&/1I7S&&,.CWM&&mW=&&\7;&&,.CWM&&,.CWM&&mW=&&\7;&&mW=&&)97C&&+-A7K&&,.CWM&&*,?I&&)+=wG&&A&&*;WE&&~w?&&A&&)+=wG&&*,?I&&-/EwO&&')F
 &&+-NPW
 &&13MwW&&,.CWM&&/1I7S&&+-A7K&&*,?I&&)+=wG&&/1I7S&&~w?&&~w?&&,.CWM&&mW=&&\7;&&~w?&&A&&~w?&&A&&~w?&&A&&~w?&&A&&~w?&&)+=wG&&)+=wG&&*,?I&&\7;&&,.CWM&&+-A7K&&A&&A&&)+=wG&&)+=wG&&~w?&&-/EwO&&)+=wG&&*;WE&&+-A7K&&*,?I&&+-A7K&&)+=wG&&.0GQ&&.0GQ&&/1I7S&&/1I7S&&,.CWM&&\7;&&,.CWM&&,.CWM&&,.CWM&&+-A7K&&*;WE&&)97C&&\7;&&mW=&&\7;&&A&&~w?&&A&&)97C&&)97C&&)+=wG&&)+=wG&&A&&*;WE&&~w?&&A&&)+=wG&&*,?I&&*;WE&&)97C&&)97C&&+-A7K&&~w?&&~w?&&*,?I&&,.CWM&&A&&\7;&&Ar@   c                     SU ;  a  U $ / nSnU  HT  nUS:X  a  U(       + nU(       a  UR                  U5        M*  US:X  a  UR                  S5        MC  UR                  U5        MV     SR                  U5      $ )N@F"z[#This Row],rg   )appendjoin)rs  escaped_formulain_string_literalchars       r;   _prepare_table_formula Worksheet._prepare_table_formula3  s    gN!D s{(9$9! !&&t, s{&&~6&&t, " yy))r@   c	                 N   X:  a  X1p1X$:  a  XBpBU R                  X5      (       a  gU R                  X45      (       a  gX:X  a  X$:X  a  [        X5      n	O[        X5      S-   [        X45      -   n	U R                  U5      nU R                  (       a   XR                  :  a  U R                  U5        [        XVXyU5      U R                  U   U'   U R                  (       dI  [        XS-   5       H7  n
[        X$S-   5       H"  nX:w  d  X:w  d  M  U R                  XSU5        M$     M9     g)Nr9  rC   r   r   )
rX  r-   r  rz   r  r[  CellArrayFormulaTupler   ranger3  )r5   r  r  r  r  rs  rQ  rv  atype
cell_ranger'  rR   s               r;   r~  Worksheet._write_array_formulaQ  s*    "*x"*x !!)77!!(55  Y%:*9@J ")7#H78  ''0 I0A0A$A""9- ,A%U,


9i(
 ##Y15 qL9C'3+;**3QD : 6
 r@   rF  c                 &    U R                  XX45      $ )a>  
Write a date or time to a worksheet cell.

Args:
    row:         The cell row (zero indexed).
    col:         The cell column (zero indexed).
    date:        Date and/or time as a datetime object.
    cell_format: A cell Format object.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

)rI  )r5   r'  rR   rF  rQ  s        r;   write_datetimeWorksheet.write_datetime  s    , ##Cd@@r@   c                 
   U R                  X5      (       a  gU R                  (       a   XR                  :  a  U R                  U5        U R	                  U5      nUc  U R
                  n[        XT5      U R                  U   U'   g)Nr9  r   )rX  rz   r  r[  _convert_date_timer  CellDatetimeTupler   )r5   r'  rR   rF  rQ  r`  s         r;   rI  Worksheet._write_datetime  s{    !!#++ C*;*;$;""3' ((. 22K  1E

3r@   booleanc                 &    U R                  XX45      $ )a8  
Write a boolean value to a worksheet cell.

Args:
    row:         The cell row (zero indexed).
    col:         The cell column (zero indexed).
    boolean:     Cell data. bool type.
    cell_format: An optional cell Format object.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

)rC  r5   r'  rR   r  rQ  s        r;   write_booleanWorksheet.write_boolean  s    $ ""3WBBr@   c                     U R                  X5      (       a  gU R                  (       a   XR                  :  a  U R                  U5        U(       a  SnOSn[	        XT5      U R
                  U   U'   g)Nr9  r   r   )rX  rz   r  r[  CellBooleanTupler   )r5   r'  rR   r  rQ  rv  s         r;   rC  Worksheet._write_boolean  sc    !!#++ C*;*;$;""3'EE  0C

3r@   urltipc                 (    U R                  XX4XV5      $ )a  
Write a hyperlink to a worksheet cell.

Args:
    row:    The cell row (zero indexed).
    col:    The cell column (zero indexed).
    url:    Hyperlink url.
    format: An optional cell Format object.
    string: An optional display string for the hyperlink.
    tip:    An optional tooltip.
Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: String longer than 32767 characters.
    -3: URL longer than Excel limit of 255 characters.
    -4: Exceeds Excel limit of 65,530 urls per worksheet.
)r1  )r5   r'  rR   r  rQ  rP  r  s          r;   	write_urlWorksheet.write_url  s    6 s6GGr@   c                    U R                  X5      (       a  g[        U[        5      (       dy  U R                  nSU;   a  UR	                  SS5      u  pOUnSn	[        U5      U:  d  [        U	5      U:  a  [        SU SU S35        g[        U5      nUb  XSl        Ub  Xcl        U =R                  S-  sl	        U R                  S	:  a  [        SUR                   S
35        gUc  U R                  nU R                  (       dN  U R                  (       a   XR                  :  a  U R                  U5        U R!                  XUR"                  U5        X0R$                  U   U'   g)Nr9  #r   rg   zIgnoring URL 'z!' with link or location/anchor > z4 characters since it exceeds Excel's limit for URLs.i  z>' since it exceeds Excel's limit of 65,530 URLs per worksheet.r   )rX  rJ  r   r  rE   rY  r   _text_tipr   _original_urlr  r#  rz   r  r[  r4  textr  )
r5   r'  rR   r  rQ  rP  r  max_urlurl_str
anchor_strs
             r;   r1  Worksheet._write_url  si    !!#++ #s## ))Gcz&)iiQ&7#
7|g%Z7)B$SE)J7) TJ K c(C!"	 	Ae# !2!2 3 4- .  11K''##.?.?(?&&s+ s;? %(S!r@   r6   )r   r9  rR  r  r  c                 (    U R                   " X/UQ76 $ )a  
Write a "rich" string with multiple formats to a worksheet cell.

Args:
    row:          The cell row (zero indexed).
    col:          The cell column (zero indexed).
    string_parts: String and format pairs.
    cell_format:  Optional Format object.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: String truncated to 32k characters.
    -3: 2 consecutive formats used.
    -4: Empty string used.
    -5: Insufficient parameters.

)_write_rich_stringr=  s       r;   write_rich_stringWorksheet.write_rich_string@  s    . &&s7$77r@   c                    [        U5      nS nSnSnU R                  X5      (       a  g[        US   [        5      (       a  UR	                  5       n[        5       n[        5       U l        U R                  R                  U5        [        5       n	/ n
SnSn[        U5      S::  a  [        S5        gU H  n[        U[        5      (       dT  US:w  a#  U
R                  U	5        U
R                  U5        OU
R                  U5        US:X  a  [        S5          g	X}-  nS
nO,US:X  a  US:  a  [        S5          gU
R                  U5        SnUS-  nM     [        U
S   [        5      (       d  U R                  R                  S5        U
 H  n[        U[        5      (       a.  U R                  R                  S5        U R                  U5        MF  / n[        U5      (       a  UR                  S5        U R                  R                  SX5        U R                  R!                  S5        M     U R                  R"                  R%                  5       n[        U5      U R&                  :  a  [        S5        gU R(                  (       d  U R*                  R-                  U5      nOUnU R(                  (       a   XR.                  :  a  U R1                  U5        [3        XeU5      U R4                  U   U'   g)Nr   rg   r9  rX      zfYou must specify more than 2 format/fragments for rich strings. Ignoring input in write_rich_string().r  zYExcel doesn't allow empty strings in rich strings. Ignoring input in write_rich_string().r  rP  zaExcel doesn't allow 2 consecutive formats in rich strings. Ignoring input in write_rich_string().r  r   r)z	xml:spacepreservetzfString length must be less than or equal to Excel's limit of 32,767 characters in write_rich_string().rR  )listrX  rJ  r"   popr
   r/   r  _set_filehandlerY  r   r  _xml_start_tag_write_fontr&   _xml_data_element_xml_end_tagfhgetvaluer   rz   rx   rZ  r  r[  CellRichStringTupler   )r5   r'  rR   r6   tokensrQ  r^  
raw_stringr  default	fragmentspreviousposr5  
attributesrP  s                   r;   r  Worksheet._write_rich_stringZ  s   d
 !!#++ fRj&)) **,K Z {$$R( (
 	v;!B EeV,,x'$$W-$$U+ $$U+B;A  #
# x'C!GJ    '#1HCE J )A,//LL'', E%((++C0  '  
'..%%&?@..sEF))#.   ))+ z?T__,?  ##>>BB6JL!L C*;*;$;""3'  3z 


3 r@   c                      X R                   U'   g)z
Add a callback function to the write() method to handle user defined
types.

Args:
    user_type:      The user type() to match on.
    user_function:  The user defined function to write the type data.
Returns:
    Nothing.

N)r  )r5   	user_typeuser_functions      r;   add_write_handlerWorksheet.add_write_handler  s     *7I&r@   c                 Z    U H%  nU R                  XXT5      nU(       a  Us  $ US-  nM'     g)a6  
Write a row of data starting from (row, col).

Args:
    row:    The cell row (zero indexed).
    col:    The cell column (zero indexed).
    data:   A list of tokens to be written with write().
    format: An optional cell Format object.
Returns:
    0:  Success.
    other: Return value of write() method.

r   r   r;  r5   r'  rR   datarQ  r5  r  s          r;   	write_rowWorksheet.write_row  4    " EKK%=E1HC	  r@   c                 Z    U H%  nU R                  XXT5      nU(       a  Us  $ US-  nM'     g)a9  
Write a column of data starting from (row, col).

Args:
    row:    The cell row (zero indexed).
    col:    The cell column (zero indexed).
    data:   A list of tokens to be written with write().
    format: An optional cell Format object.
Returns:
    0:  Success.
    other: Return value of write() method.

r   r   r;  r  s          r;   write_columnWorksheet.write_column  r  r@   sourceoptionsc                     U R                  XSS5      (       a  [        SU SU S35        gU R                  X45      nXl        X%l        UR                  U5        U R                  R                  U5        g)a`  
Insert an image with its top-left corner in a worksheet cell.

Args:
    row:      The cell row (zero indexed).
    col:      The cell column (zero indexed).
    source:   Filename, BytesIO, or Image object.
    options:  Position, scale, url and data stream of the image.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

TzCannot insert image at (, ).r9  r   )rX  r   _image_from_source_row_col_set_user_optionsr   r  )r5   r'  rR   r  r  images         r;   insert_imageWorksheet.insert_image  ss    . !!#D$77+C53%r:; ''8

(5!r@   c                    U R                  X5      (       a  [        SU SU S35        gUc  0 nU R                  X45      nUR                  U5        UR	                  SS5      nUR
                  (       a:  Uc  U R                  nSU l        U R                  XUR
                  U5        SU l        U R                  R                  U5      n[        S	Xg5      U R                  U   U'   g
)a5  
Embed an image in a worksheet cell.

Args:
    row:      The cell row (zero indexed).
    col:      The cell column (zero indexed).
    source:   Filename, BytesIO, or Image object.
    options:  Url and data stream of the image.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

zCannot embed image at (r  r  r9  NrQ  TF#VALUE!r   )rX  r   r  r  getr  r  r#  r  r$  get_image_indexCellErrorTupler   )r5   r'  rR   r  r  r  rQ  image_indexs           r;   embed_imageWorksheet.embed_image:  s    . !!#++*3%r#b9:?G ''8(kk-699""55'+D$NN3UYY<',D$**::5A  .iR

3r@   r  c                    U R                  XSS5      (       a  [        SU SU S35        gUc  SnUc  0 nUR                  SS	5      nUR                  S
S	5      nUR                  SS5      nUR                  SS5      nUR                  SS5      n	UR                  SS5      n
UR                  SS5      nU R                  R	                  UUUUUUUU	UU
U/5        g	)a6  
Insert an textbox with its top-left corner in a worksheet cell.

Args:
    row:      The cell row (zero indexed).
    col:      The cell column (zero indexed).
    text:     The text for the textbox.
    options:  Textbox options.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

TzCannot insert textbox at (r  r  r9  Nrg   x_offsetr   y_offsetx_scaler   y_scaleobject_positiondescription
decorativeF)rX  r   r  r   r  )r5   r'  rR   r  r  r  r  r  r  anchorr  r  s               r;   insert_textboxWorksheet.insert_textboxm  s    & !!#D$77-cU"SE<=<D?G;;z1-;;z1-++i+++i+.2kk-6[[u5
	
 r@   chartc                 r   U R                  XSS5      (       a  [        SU SU S35        gUc  0 nUR                  (       d,  UR                  (       a'  UR                  R                  (       a  [        S5        gSUl        UR                  (       a  SUR                  l        UR	                  S	S
5      nUR	                  SS
5      nUR	                  SS5      nUR	                  SS5      nUR	                  SS5      n	UR	                  SS5      n
UR	                  SS5      nUR
                  S:w  a  UR
                  nUR                  S:w  a  UR                  nUR                  (       a  UR                  nUR                  (       a  UR                  nU R                  R                  UUUUUUUU	U
U/
5        g
)a4  
Insert an chart with its top-left corner in a worksheet cell.

Args:
    row:     The cell row (zero indexed).
    col:     The cell column (zero indexed).
    chart:   Chart object.
    options: Position and scale of the chart.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

TzCannot insert chart at (r  r  r9  Nz7Chart cannot be inserted in a worksheet more than once.rR  r  r   r  r  r   r  r  r  r  F)rX  r   already_insertedcombinedr  r  r  r  r  r   r  )r5   r'  rR   r  r  r  r  r  r  r  r  r  s               r;   insert_chartWorksheet.insert_chart  sy   & !!#D$77+C53%r:;?G !!U^^8W8WJK!%>>.2ENN+;;z1-;;z1-++i+++i+.2kk-6[[u5
 ==AmmG==AmmG>>~~H>>~~H	
 r@   commentc                     U R                  X5      (       a  g[        U5      U R                  :  a  gSU l        SU l        [        XX45      nX0R                  U   U'   g)aF  
Write a comment to a worksheet cell.

Args:
    row:     The cell row (zero indexed).
    col:     The cell column (zero indexed).
    comment: Cell comment. Str.
    options: Comment formatting options.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: String longer than 32k characters.

r9  rR  Tr   )rX  rY  r   r   r   r   r   )r5   r'  rR   r  r  s        r;   write_commentWorksheet.write_comment  s^    ( !!#++ w<$//)  c9")c3r@   c                     SU l         g)zV
Make any comments in the worksheet visible.

Args:
    None.

Returns:
    Nothing.

TN)r   r5   s    r;   show_commentsWorksheet.show_comments       !%r@   is_byte_streamc                 V    U R                  U5      nX0l        U(       a  [        S5        g)z
Set a background image for a worksheet.

Args:
    source:         Filename, BytesIO, or Image object.
    is_byte_stream: Deprecated. Use a BytesIO object instead.

Returns:
    0:  Success.

zThe `is_byte_stream` parameter in `set_background()` is deprecated. This argument can be omitted if you are using a BytesIO object.r   )r  r  r   )r5   r  r  r  s       r;   set_backgroundWorksheet.set_background  s0     ''/ %R
 r@   c                     Xl         g)zv
Set the default author of the cell comments.

Args:
    author: Comment author name. String.

Returns:
    Nothing.

N)r   )r5   authors     r;   set_comments_authorWorksheet.set_comments_author8  s
      &r@   c                     U R                   $ )zG
Retrieve the worksheet name.

Args:
    None.

Returns:
    Nothing.

)rv   r  s    r;   get_nameWorksheet.get_nameE  s     yyr@   c                 V    SU l         SU l        U R                  U R                  l        g)z
Set this worksheet as the active worksheet, i.e. the worksheet that is
displayed when the workbook is opened. Also set it as selected.

Note: An active worksheet cannot be hidden.

Args:
    None.

Returns:
    Nothing.

r   r   N)r   r   rw   r  activesheetr  s    r;   activateWorksheet.activateS  s$     *.**'r@   c                      SU l         SU l        g)z
Set current worksheet as a selected worksheet, i.e. the worksheet
has its tab highlighted.

Note: A selected worksheet cannot be hidden.

Args:
    None.

Returns:
    Nothing.

r   r   N)r   r   r  s    r;   selectWorksheet.selecte  s     r@   c                      SU l         SU l        g)zF
Hide the current worksheet.

Args:
    None.

Returns:
    Nothing.

r   r   Nr   r   r  s    r;   hideWorksheet.hidev        r@   c                      SU l         SU l        g)zh
Hide the current worksheet. This can only be unhidden by VBA.

Args:
    None.

Returns:
    Nothing.

r  r   Nr-  r  s    r;   very_hiddenWorksheet.very_hidden  r0  r@   c                 H    SU l         U R                  U R                  l        g)a  
Set current worksheet as the first visible sheet. This is necessary
when there are a large number of worksheets and the activated
worksheet is not visible on the screen.

Note: A selected worksheet cannot be hidden.

Args:
    None.

Returns:
    Nothing.

r   N)r   rw   r  
firstsheetr  s    r;   set_first_sheetWorksheet.set_first_sheet  s     )-&r@   widthc                    Uc  0 nX:  a  X!p!SnUR                  SS5      nUR                  SS5      nUR                  SS5      n	U(       d  U(       a
  U(       a  Sn
OSn
U R                  SX&U
5      (       a  gU R                  SXU
5      (       a  g[        U	S5      n	[        U	S5      n	[        U R                  U	5      U l        [        XS	-   5       H  nX4XyUS/U R                  U'   M     SU l        g)
a  
Set the width, and other properties of a single column or a
range of columns.

Args:
    first_col:   First column (zero-indexed).
    last_col:    Last column (zero-indexed). Can be same as first_col.
    width:       Column width. (optional).
    cell_format: Column cell_format. (optional).
    options:     Dict of options such as hidden and level.

Returns:
    0:  Success.
    -1: Column number is out of worksheet bounds.

Tr   F	collapsedlevelr   r9     r   )r  rX  maxminr   r  r   r   )r5   r  r  r8  rQ  r  
ignore_rowr   r:  r;  
ignore_colrR   s               r;   
set_columnWorksheet.set_column  s    2 ?G %- 
 Xu-KKU3	GQ' 5VJJ !!!X:FF!!!YJGG E1E1!$T%;%;U!C qL1C"'fYPU!VDMM# 2 !%r@   c                 P    Ub  U R                  U5      nU R                  XX4U5      $ )a  
Set the width, and other properties of a single column or a
range of columns, where column width is in pixels.

Args:
    first_col:   First column (zero-indexed).
    last_col:    Last column (zero-indexed). Can be same as first_col.
    width:       Column width in pixels. (optional).
    cell_format: Column cell_format. (optional).
    options:     Dict of options such as hidden and level.

Returns:
    0:  Success.
    -1: Column number is out of worksheet bounds.

)_pixels_to_widthrA  )r5   r  r  r8  rQ  r  s         r;   set_column_pixelsWorksheet.set_column_pixels  s-    2 ))%0EyEPPr@   	max_widthc                    U R                   (       a  [        S5        gU R                  c  g0 n[        U R	                  U5      S5      n[        U R                  R                  U R                  R                  R                  S9n[        U R                  U R                  S-   5       GHe  nU R                  R                  U5      (       d  M&  [        U R                  U R                  S-   5       GH  nXPR                  U   ;   d  M  U R                  U   U   nUR                  R                   nSnUS;   af  US:X  a  UR"                  n	X9   n
OUR$                  n
S	U
;  a  ['        U
5      nGOOU
R)                  S	5       H  n
['        U
5      n[+        X5      nM     GOUS
:X  a"  S[-        [/        UR0                  5      5      -  nOUS:X  a  U R2                  nOUS:X  a  UR4                  (       a  SnOSnOUS;   a  [7        UR8                  [:        [<        45      (       a2  UR8                  S:  a!  S[-        [/        UR8                  5      5      -  nOj[7        UR8                  [.        5      (       a  ['        UR8                  5      nO5[7        UR8                  [>        5      (       a  UR8                  (       a  SnOSnU R@                  R                  XE45      (       a  US:  a  US-  nUR                  US5      nX:  d  GM  XU'   GM     GMh     URC                  5        H  u  p]U R	                  US-   5      n[        X5      nU RD                  R                  U5      (       a  U RD                  R                  U5      nUS   nUS   nUb4  U(       d-  UU:  a%  XRD                  U   S'   SU RD                  U   S'   M  M  XRD                  U   S'   SU RD                  U   S'   M  USSSSS/U RD                  U'   M     g)z
Simulate autofit based on the data, and datatypes in each column.

Args:
    max_width (optional): max column width to autofit, in pixels.

Returns:
    Nothing.

z1Autofit is not supported in constant_memory mode.Ng     o@)keyr   r   r[   r_   r[   
rZ   r<  r^   r\      $   r]   r`         TF)#rz   r   r   r>  rD  sortedrx   string_table__getitem__r  r   r   r  r   r   r%  __name__rP  r  r+   rE   r=  rY  rD  r`  r   r  rJ  rv  r2  r3   rB  r   itemsr   )r5   rG  col_width_maxstringsrow_numcol_numcell	cell_typelength	string_idrP  
seg_length	width_maxpixel_widthr8  r   
user_widthr   s                     r;   autofitWorksheet.autofit	  s    DE ??"  --i8%@	 NN''T^^-H-H-T-T
 T__doo.ABG::>>'** $//A2EFjj11::g.w7D $ 7 7IF $<< %0(,I%,%7F%)__Fv-%3F%;F +1,,t*<-;F-C
),V)@ += #h. "#ST[[)9%:!:"j0 "&!9!9"i/  <<%'F%'F"&AA
 &djj5#,??#zzA~)*STZZ-A)A'

C88%3DJJ%?F'

D99#zz)+)+ ((,,g-?@@VaZ" !. 1 1'1 =I)17g.e G	 Cr %2$7$7$9 G ))+/:E )E }}  ))  ==,,W5%a[
!!)&z)49g.q148g.q1 * 16MM'*1-04DMM'*1-*/ua)Mg&3 %:r@   heightc                    Uc  0 nU R                   b  U R                   nOSnU R                  X5      (       a  gUc  U R                  nUR                  SS5      nUR                  SS5      nUR                  SS5      nUS:X  a  SnU R                  n[	        US5      n[        US5      n[	        U R                  U5      U l        X#XhU/U R                  U'   S	U l        X&/U R                  U'   g)
aJ  
Set the width, and other properties of a row.

Args:
    row:         Row number (zero-indexed).
    height:      Row height. (optional).
    cell_format: Row cell_format. (optional).
    options:     Dict of options such as hidden, level and collapsed.

Returns:
    0:  Success.
    -1: Row number is out of worksheet bounds.

r   r9  r   Fr:  r;  r   r<  T)
r   rX  r   r  r=  r>  r   r   r   r   )	r5   r'  rd  rQ  r  min_colr   r:  r;  s	            r;   set_rowWorksheet.set_row  s    * ?G ??&ooGG !!#//>,,F Xu-KKU3	GQ' Q;F,,F E1E1!$T%;%;U!C %6)Lc !%  &.sr@   c                 N    Ub  U R                  U5      nU R                  XX45      $ )a`  
Set the width (in pixels), and other properties of a row.

Args:
    row:         Row number (zero-indexed).
    height:      Row height in pixels. (optional).
    cell_format: Row cell_format. (optional).
    options:     Dict of options such as hidden, level and collapsed.

Returns:
    0:  Success.
    -1: Row number is out of worksheet bounds.

)_pixels_to_heightrg  )r5   r'  rd  rQ  r  s        r;   set_row_pixelsWorksheet.set_row_pixels  s+    * ++F3F||C>>r@   hide_unused_rowsc                 x    Uc  U R                   nXR                  :w  a  SU l        Xl         U(       a  SU l        gg)z
Set the default row properties.

Args:
    height:           Default height. Optional, defaults to 15.
    hide_unused_rows: Hide unused rows. Optional, defaults to False.

Returns:
    Nothing.

NTr   )r   r   r   r   )r5   rd  rm  s      r;   set_default_rowWorksheet.set_default_row  s>     >,,F---$(D!&,#&'D# r@   r  c           	      ^   X:X  a  X$:X  a  [        S5        gX:  a  X1p1X$:  a  XBpBU R                  X5      (       a  gU R                  X45      (       a  g[        XX45      n[        XS-   5       H  n[        X$S-   5       H  n	U R                  R                  X45      (       a.  U R                  R                  X45      n
[        SU SU
 S35      eU R                  R                  X45      (       a.  U R                  R                  X45      n
[        SU SU
 S35      eXpR                  X4'   M     M     U R                  R                  XX4/5        U R                  XXV5        [        XS-   5       H7  n[        X$S-   5       H"  n	X:X  a  X:X  a  M  U R                  XSU5        M$     M9     g	)
a  
Merge a range of cells.

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.
    data:         Cell data.
    cell_format:  Cell Format object.

Returns:
     0:    Success.
    -1:    Row or column is out of worksheet bounds.
    other: Return value of write().

zCan't merge single cellr9  r   zMerge range '!' overlaps previous merge range ''.!' overlaps previous table range 'rg   r   )r   rX  r,   r  r   r  r!   r   r   r  r<  r+  )r5   r  r  r  r  r  rQ  r  r'  rR   previous_ranges              r;   merge_rangeWorksheet.merge_range	  s   >  Y%:*+ %-%- !!)77!!(55 iHG
qL1CY15$$((#44%)%6%6%:%:C:%FN*'
| 4""0!15 
 ##''
33%)%5%5%9%93*%EN*'
| 4""0!15 
 1;!!3*- 6 2& 	

9DE 	I$< qL1CY15#(8!!#B< 6 2 r@   c                    X1:  a  X1p1XB:  a  XBpBU R                  XX45      n[        XX45      nXPl        X`l        X$/U l        [        X$S-   5       Hl  nU R                  R                  X45      (       a6  U R                  R                  X45      u  pUS:X  a  [        SU SU	 S35      eSU4U R                  X4'   Mn     g)a;  
Set the autofilter area in the worksheet.

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.

Returns:
     Nothing.

r   r   zWorksheet autofilter range 'z,' overlaps previous Table autofilter range 'rs  	worksheetN)	_convert_name_arear,   r   r   r   r  r   r  r!   )
r5   r  r  r  r  arearefrR   r   r   s
             r;   
autofilterWorksheet.autofilterd	  s    $ %-%- &&yXPyX@#!&1 qL1C  $$i%566,0,=,=,A,A9BR,S)')*6se <33?.D 
 4?2DDy./ 2r@   criteriac           	         U R                   (       d  [        S5        g [        U5        U R                  u  pVX:  d  X:  a  [        SU SU SU S	35        gU R                  U5      n[        U5      S
;  a  [        SU S35        U R                  X'5      n[        U5      S:X  a  US   S:X  a  U R                  XS   /5        Oa[        U5      S:X  a5  US   S:X  a,  US   S:X  a#  US   S:X  a  U R                  XS   US   /5        OXpR                  U'   SU R                  U'   SU l        g! [         a6    Un[	        US-   5      u  pAXR
                  :  a  [        SU S35         g GNDf = f)z
Set the column filter criteria.

Args:
    col:       Filter column (zero-indexed).
    criteria:  Filter criteria.

Returns:
     Nothing.

-Must call autofilter() before filter_column()NrQ   Invalid column ''Column '%' outside autofilter() column range (r  ))rh   r<  z(Incorrect number of tokens in criteria 'r  r   r   rP  rh      )r   r   r3   r4   r)   r   r   _extract_filter_tokensrY  _parse_filter_expressionfilter_column_listr   r   r   )r5   rR   r  
col_letterrS   	col_firstcol_lastr  s           r;   filter_columnWorksheet.filter_column	  s    ##@A		H !% 1 1 ?cn3%  #Bxj3 ,,X6v;f$;H:QGH..x@ v;!q	Q##C)5[A&)q.VAY!^q	UV##C)VAY)?@ %+S!$%DS!O  	J(s3HQoo%'
|156 &	s   D/ /:E/.E/filtersc           	      ~   U R                   (       d  [        S5        g [        U5        U R                  u  pVX:  d  X:  a  [        SU SU SU S	35        gX R                  U'   S
U R                  U'   S
U l	        g! [         a5    Un[	        US-   5      u  pAXR
                  :  a  [        SU S35         g Nf = f)z
Set the column filter criteria in Excel 2007 list style.

Args:
    col:      Filter column (zero-indexed).
    filters:  List of filter criteria to match.

Returns:
     Nothing.

r  NrQ   r  r  r  r  ,r  r   )
r   r   r3   r4   r)   r   r   r   r   r   )r5   rR   r  r  rS   r  r  s          r;   r  Worksheet.filter_column_list	  s     ##@A		H !% 1 1 ?cn3%  ;az,  ' !+  	J(s3HQoo%'
|156 &	s   A= =:B<;B<c                 |   U R                  XSS5      (       a  gU R                  X4SS5      (       a  gUc  0 nOUR                  5       n1 SknUR                  5        H  nXv;  d  M
  [        SU S35          g   SU;   a  US   US	'   S
U;   a  US
   US	'   SU;  a  [        S5        gSSSSSSSSSSSSS.nUS   U;  a  [        SUS    S35        gXS      US'   US   S:X  a%  UR	                  S5      c  UR	                  S5      c  gUS   S:X  d  US   S:X  d	  US   S:X  a
  SUS'   SUS'   SU;  a  [        S5        g0 SS_SS_S S!_S"S!_S#S!_S$S%_S&S%_S'S%_S(S)_S*S)_S+S,_S-S,_S.S/_S0S/_S1S2_S3S2_n	US   U	;  a  [        S4US    S535        gXS      US'   US   S:X  d	  US   S:X  a  SU;  a  [        S65        gOSUS'   S7S8S9S:.n
S;U;  a  S7US;'   O&US;   U
;  a  [        S4US;    S<35        gXS;      US;'   US   S=;   ap  US	   (       af  [        US	   5      (       aS  U R                  US	   5      nUS> US	'   US   (       a.  [        US   5      (       a  U R                  US   5      nUS> US'   UR	                  S5      (       a%  [        US   5      S?:  a  [        S@US    SA35        gUR	                  SB5      (       a%  [        USB   5      S?:  a  [        SCUSB    SA35        gUR	                  S5      (       a%  [        US   5      SD:  a  [        SEUS    SF35        gUR	                  SG5      (       a%  [        USG   5      SD:  a  [        SHUSG    SF35        gUS   S:X  aI  [        US	   [        5      (       a1  U R                  " US	   6 n[        U5      SD:  a  [        SIU SJ35        gSKU;  a  S8USK'   SLU;  a  S8USL'   SMU;  a  S8USM'   SNU;  a  S8USN'   XX4//USO'   SPU;   a  USO   R                  USP   5        SQU;   a  USQ   R                  SRSS5      USQ'   U R                  R                  U5        g7)Ta  
Add a data validation to a worksheet.

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.
    options:      Data validation options.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: Incorrect parameter or option.
Tr9  N>   rv  r  maximumminimumr  dropdownvalidate
error_type
show_error
show_inputerror_titleinput_titlemulti_rangeother_cellsignore_blankerror_messageinput_messageUnknown parameter 'z' in data_validation()rR  r  rv  r  r  z5Parameter 'validate' is required in data_validation()nonewholedecimalr  rF  rG  
textLengthcustom)anyz	any valuezwhole numberr  integerr  r  rF  rG  ztext lengthr\  r  zUnknown validation type 'z/' for parameter 'validate' in data_validation()r  r  betweenr  r  z5Parameter 'criteria' is required in data_validation()not between
notBetweenequal toequalr)  ==not equal tonotEqual!=<>greater thangreaterThan>	less thanlessThan<greater than or equal togreaterThanOrEqual>=less than or equal tolessThanOrEqual<=zUnknown criteria type 'z/' for parameter 'criteria' in data_validation()zcParameter 'maximum' is required in data_validation() when using 'between' or 'not between' criteriar   r   r  )stopwarninginformationr  z' for parameter 'error_type'.rF  rG  .16g    zLength of input title 'z' exceeds Excel's limit of 32r  zLength of error title '   zLength of input message 'z' exceeds Excel's limit of 255r  zLength of error message 'zLength of list items 'z;' exceeds Excel's limit of 255, use a formula range insteadr  r  r  r  cellsr  r  $rg   )rX  copykeysr   r  r'   r  rY  rJ  r  	_csv_joinrF   replacer  r  )r5   r  r  r  r  r  valid_parameters	param_keyvalid_typescriteria_typeserror_types	date_timers  s                r;   data_validationWorksheet.data_validation	  s:   2 !!)dCC!!(dDAA?G llnG
* !I0*9+5KLM ( w&x0GG&y1GG W$HI # '"
  :k1+GJ,?+@ A2 3 )**=>

 J6)M*2O,4
 J6)z"f,z"h."+GJ!%GI W$HI
y
<
 
 	

 '
 J
 *
 *
 M
 
 
 
 '(<
 &
 $%6
  #!
( :n4)'**=)> ?2 3 ,Z-@A
 :)+wz/Bl/R'E  ( "&GI 
 w&$%GL!\"+5)',*?)@ A. / $/0E$FGL! J#33 #GG$455//0@AI"+D!1GGy!&9'):L&M&M 33GI4FG	(1$'7	" ;;}%%#gm.D*E*J)'-*@)A B. /  ;;}%%#gm.D*E*J)'-*@)A B. /  ;;''C0H,IC,O+GO,D+E F/ 0  ;;''C0H,IC,O+GO,D+E F/ 0  :&(Z8H$-O-Onngg&67G7|c!,WI 67 8  (&'GN#W$"#GJw&$%GL!w&$%GL! '8FG G#G##GM$:; G#%,]%;%C%CC%LGM" 	(r@   c                    U R                  XSS5      (       a  gU R                  X4SS5      (       a  gUc  0 nOUR                  5       n1 SknUR                  5        H  nXv;  d  M
  [        SU S35          g   SU;  a  [        S	5        g0 S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S"_S#S#_S$S%_S&S'S(.EnUS   U;  a  [        S)US    S*35        gUS   S:X  a  SUS+'   XS      US'   0 S,S,_S-S._S/S0_S1S0_S2S0_S3S4_S5S4_S6S4_S7S8_S9S8_S:S;_S<S;_S=S>_S?S>_S@SA_SBSA_SCSD_SESFSGSHSISJSKSLSMSNSOSPSMSPSQ.En	SRU;   a  USR   U	;   a
  XSR      USR'   SSU;   a7  [	        USS   [
        5      (       a  [        USS   5      R                  5       USS'   US   ST;   a  SUS'   SSU;   a:  [        USS   5      (       d  [        SU5        gU R                  USS   5      n
U
SV USS'   SWU;   a:  [        USW   5      (       d  [        SX5        gU R                  USW   5      n
U
SV USW'   SYU;   a:  [        USY   5      (       d  [        SZ5        gU R                  USY   5      n
U
SV USY'   0 S[S\_S]S^_S_S`_SaSb_ScSd_SeSf_SgSh_SiSj_SkSl_SmSn_SoSp_SqSr_SsSt_SuSv_SwSx_SySz_S{S|_nUS   S':X  a  UR                  S}5      (       d  [        S~5        gUS}   U;  a  [        SUS}    S35        gXS}      US}'   SUS'   US}   R                  S5      (       a  SUS'   OUS}   R                  S5      (       a  SUS'   U R                  UR                  S5      UR                  S5      5      US'   X:  a  X1p1X$:  a  XBpB[        XX45      n[        X5      nSU;   a  US   nUR                  SS5      nSU;   a   US   (       a  US   R!                  5       US'   U R"                  US'   U =R"                  S-  sl        U R$                  (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       d  UR                  S5      (       dn  UR                  S5      (       dX  UR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  SUS'   US   S:X  a  USS   n['        U5      nUSR   nUSR   SD:X  a  SDUS'   SU SU S3US'   OfUSR   SE:X  a  SUS'   SU SU S3US'   OKUSR   SF:X  a  SFUS'   SU SU SU S3US'   O-USR   SG:X  a  SGUS'   SU SU SU S3US'   O[        SU S35        US   S:X  a  USR   SH:X  a
  SU S3US'   OUSR   SI:X  a
  SU S3US'   OUSR   S:X  a
  SU S3US'   OUSR   SJ:X  a  SU SU S3US'   OUSR   SK:X  a  SU SU S3US'   OUSR   SL:X  a  SU SU S3US'   OsUSR   SM:X  a  SU SU S3US'   O]USR   SN:X  a  SU SU SU S3US'   ODUSR   SO:X  a  SU SU S3US'   O.USR   SP:X  a  SU SU SU SU S3	US'   O[        SUSR    S35        US   S:X  a	  SU S3US'   US   S:X  a	  SU S3US'   US   S:X  a	  SU S3US'   US   S!:X  a	  SU S3US'   US   S":X  a  SUS'   SUS'   SUS'   SUS'   UR)                  SS5        UR)                  SS5        UR)                  SS5        UR)                  SS5        UR)                  S[+        S5      5        UR)                  S[+        S5      5        [*        R,                  " US   5      US'   [*        R,                  " US   5      US'   US   S#:X  Ga  SUS'   SUS'   UR)                  SS5        UR)                  SS5        UR)                  SS5        UR)                  SS5        UR)                  SS5        UR)                  S[+        S5      5        UR)                  S[+        S5      5        UR)                  S[+        S5      5        [*        R,                  " US   5      US'   [*        R,                  " US   5      US'   [*        R,                  " US   5      US'   SU;  a  SUS'   US   S%:X  Ga  SUS'   UR                  S5      (       d  SUS'   SUS'   OUS   US'   UR                  S5      (       d  SUS'   SUS'   OUS   US'   UR)                  SS5        UR)                  SS5        UR)                  S[+        S5      5        UR)                  SUS   5        UR)                  SS5        UR)                  SS5        UR)                  SS5        UR)                  SS5        UR)                  S[+        S5      5        UR)                  S[+        S5      5        UR)                  SS5        UR)                  SS5        UR)                  SS5        UR)                  S[+        S5      5        [*        R,                  " US   5      US'   [*        R,                  " US   5      US'   [*        R,                  " US   5      US'   [*        R,                  " US   5      US'   [*        R,                  " US   5      US'   UR                  S5      (       a9  SU l        US   S:X  a  US   S:X  a  SUS'   US   S:X  a  US   S:X  a  SUS'   XS'    US   R1                  S15      US'    US   R1                  S15      US'    US   R1                  S15      US'   XR6                  ;   a  U R6                  U   R9                  U5        gU/U R6                  U'   g! [2        [4        4 a     Nf = f! [2        [4        4 a     Nf = f! [2        [4        4 a     N}f = f)a  
Add a conditional format to a worksheet.

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.
    options:      Conditional format options.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: Incorrect parameter or option.
Tr9  N>$   rK  iconsrv  rX   r  r  bar_onlyr  max_typemid_typemin_type	bar_color	bar_solid	max_color	max_value	mid_color	mid_value	min_color	min_value
icon_style
icons_only
max_length
min_lengthr  stop_if_truebar_directionbar_no_borderdata_bar_2010reverse_iconsbar_axis_colorbar_border_colorbar_axis_positionbar_negative_colorbar_negative_color_samebar_negative_border_colorbar_negative_border_color_samer  z' in conditional_format()rR  rK  z4Parameter 'type' is required in conditional_format()rZ  cellIsrF  rG  averageaboveAverage	duplicateduplicateValuesuniqueuniqueValuestoptop10bottomr  time_period
timePeriodblankscontainsBlanks	no_blanksnotContainsBlankserrorscontainsErrors	no_errorsnotContainsErrors2_color_scale3_color_scaledata_bardataBar
expressioniconSet)rs  icon_setzUnknown value 'z.' for parameter 'type' in conditional_format()	directionr  r  r  r  r  r)  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  
containingcontainsTextnotContains
beginsWithendsWith	yesterdaytoday	last7DayslastWeekthisWeeknextWeek	lastMonth	thisMonth	nextMonth)znot containingzbegins withz	ends withr  r  zlast 7 daysz	last weekz	this weekz	next weekz
last monthz
this monthz
next monthzcontinue weekzcontinue monthr  rv  r  z5Conditional format 'value' must be a datetime object.r  r  z7Conditional format 'minimum' must be a datetime object.r  z7Conditional format 'maximum' must be a datetime object.3_arrows3Arrows3_flags3Flags3_traffic_lights_rimmed3TrafficLights23_symbols_circled3Symbols4_arrows4Arrows4_red_to_black4RedToBlack4_traffic_lights4TrafficLights5_arrows_gray5ArrowsGray
5_quarters	5Quarters3_arrows_gray3ArrowsGray3_traffic_lights3TrafficLights3_signs3Signs	3_symbols	3Symbols24_arrows_gray4ArrowsGray	4_ratings4Rating5_arrows5Arrows	5_ratings5Ratingr  z_The 'icon_style' parameter must be specified when 'type' == 'icon_set' in conditional_format().r  zUnknown icon_style 'z' in conditional_format().rh   total_icons4r  5rP  r  r  r  rg   rX   priorityr   r  r  r  r  r  r  r  r  r  r  r  is_data_bar_2010zNOT(ISERROR(SEARCH("z",z)))rs  notContainsTextzISERROR(SEARCH("z))zLEFT(r  z)="r  zRIGHT(zInvalid text criteria 'zFLOOR(z,1)=TODAY()-1z,1)=TODAY()tomorrowz,1)=TODAY()+1zAND(TODAY()-FLOOR(z,1)<=6,FLOOR(z,1)<=TODAY())zAND(TODAY()-ROUNDDOWN(z*,0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(z,0)<(WEEKDAY(TODAY())+7))z",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(z ,0)-TODAY()<=7-WEEKDAY(TODAY()))zAND(ROUNDDOWN(z+,0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(z",0)-TODAY()<(15-WEEKDAY(TODAY())))z
AND(MONTH(z)=MONTH(TODAY())-1,OR(YEAR(z)=YEAR(TODAY()),AND(MONTH(z)=1,YEAR(A1)=YEAR(TODAY())-1)))z)=MONTH(TODAY()),YEAR(z)=YEAR(TODAY()))z)=MONTH(TODAY())+1,OR(YEAR(z
)=12,YEAR(z)=YEAR(TODAY())+1)))zInvalid time_period criteria 'z	LEN(TRIM(z))=0z))>0zISERROR(r  zNOT(ISERROR(
colorScaler  r  r  r>  r  r=  r  r   r  r  z#FF7128r  z#FFEF9C
percentilez#F8696Bz#FFEB84z#63BE7Br  2   autoMinx14_min_typeautoMaxx14_max_typer  z#638EC6r  Fz#FF0000#000000  r  )rX  r  r  r   rJ  rB  rD  upperr'   r  r  r,  _set_icon_propsr,   r-   r  _get_dxf_indexr	  r  rY  
setdefaultr   _from_valuer   lstripKeyErrorAttributeErrorr  r  )r5   r  r  r  r  r  valid_parameterr  
valid_typecriteria_typer  valid_iconsr  
start_cellrv  r\  r  s                    r;   conditional_formatWorksheet.conditional_format   s+   2 !!)dCC!!(dDAA?G llnG%
P !I/*9+5NOP (  GH
H
F
 F
 ~	

 *
 n
 7
 g
 F
 <
 &
 ,
 &
 ,
 _
  _!
" 	#
$ $!'

. 6?*,!'&/!2 3* + 6?h&#+GK $V_5!
y!
<!
 !
 	!

 '!
 J!
 *!
 *!
 M!
 !
 !
 !
 '(<!
 &!
 $%6!
  #!!
" .#!
$ ,'#$&###%%%')A!
H  WZ%8M%I"/
0C"DGJ g*WW-=t"D"D"77#34::<GG 6?..&GFO'!*77+;<<PQ 33GG4DE	&/%5 G#*79+=>>RS 33GI4FG	(1$'7	"G#*79+=>>RS 33GI4FG	(1$'7	"
	
x
 &'8
  	

 	
 m
  0
 ]
 +
 ]
  0
 x
 
 ]
 
  	!
" #
* 6?i';;|,,D  |$K7*7<+@*A B/ 0 $/0E$FGL! &'GM"|$//44)*&&11#66)*&#33M*GKK,@ GG
 "*x"*x iHG
&y<
 G# /J#++C4J w78#4 ' 1 @ @ BGH #//
Q
 ##{{?++{{;''{{-..{{/00{{455{{677{{;<<{{?++{{.//{{+,,{{?++*.G&' 6?f$G$EZFz*Hz"n4"0';E7"ZLPS%T	"$5"3'7wbB%O	"$4".',ZL&UG1%M	"$
2",'-j\6(#eWA%N	".xj8QRS 6?l*z"k1'-j\%G	"$/'-j\%E	"$
2'-j\%G	" $3( 5'L7 	" $
2,ZL 9))34MO 	"
 $
2,ZL 9!!+,LN 	"
 $
2$ZL 1!!+,NP 	"
 $3  -)l +**45TV 	" $3  -&<'79 	" $3  -)l +**4 6&<';= 	" 4WZ5H4I J. / 6?..#,ZL!=GI6?11#,ZL!=GI6?..#+J<q!9GI6?11#/
|2!>GI 6?o-*GFO !%GH #'GJ#'GK z51z51{A.{A.{E),<={E),<=#(#4#4W[5I#JGK #(#4#4W[5I#JGK  6?o-*GFO !%GHz51z<8z51{A.{A.{E),<={E),<={E),<=#(#4#4W[5I#JGK #(#4#4W[5I#JGK #(#4#4W[5I#JGK  ')')$ 6?i' $GH;;z**&+
#*3'*1**=';;z**&+
#*3'*1**='{A.{A.{E),<=17;3GHz516{E233U95EF:E)<LM8%@?G2B7/y1AB#(#4#4W[5I#JGK */*;*;GDV<W*XG&'(-(9(9'BR:S(TG$%,1,=,=,--G() 493D3D344G/0
 ;;)**!%Dz"e+0D0I'+$z"e+0D0I'+$)G	#*;#7#>#>s#CGK 	#*;#7#>#>s#CGK 	#*;#7#>#>s#CGK 
 ***j)009  .5IDj)# .) 		 .) 		 .) 		s6   "n( :n> o (n;:n;>ooo'&o')r   r9  rR  r  c                    0 n0 nUc  0 nOUR                  5       nU R                  (       a  [        S5        gU R                  XSS5      (       a  gU R                  X4SS5      (       a  gX:  a  X1p1X$:  a  XBpB[	        XX45      n[        XS-   5       H  n	[        X$S-   5       H  n
U R                  R                  X45      (       a.  U R                  R                  X45      n[        SU SU S	35      eU R                  R                  X45      (       a.  U R                  R                  X45      n[        SU S
U S	35      eXR                  X4'   M     M     1 SknUR                  5        H  nX;  d  M
  [        SU S35          g   UR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   X1-
  nUS   (       a  US-  nUS:  a  [        S5        gUR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   SU;   a  US   nXS'   S U;   a  [        S!U S"35        g[        R                  " S#U[        R                  5      (       a  [        R                  " S$U5      (       a  [        S%U S&35        g[        R                  " S'U5      (       a  [        S(U S&35        g[        R                  " S)U5      (       d  [        R                  " S*U5      (       a  [        S+U S,35        gS-U;   a,  US-   US-'   US-   c  S.US-'   US-   R                  S S.5      US-'   OS/US-'   UnUnUR                  S5      (       a  US-  nUR                  S5      (       a  US-  n[	        XX45      US0'   [	        XUU5      US1'   US   (       d  SUS'   US   (       a  US1   US'   Sn/ US2'   0 n[        X$S-   5       GH\  nUS3[        U5      -   S.S.S.SS.SSS4.	nS2U;   Ga  U[!        US2   5      ::  a  US2   US-
     nOSnU(       Ga  UR                  S5S5      nUR                  S65      (       a  US6   US'   US   nUR#                  5       nUU;   a  [        S7U S&35          gSUU'   UR                  S85      US9'   S:U;   a^  US:   (       aT  US:   nUR%                  S;5      (       a  UR'                  S;5      nU R)                  U5      nU R+                  US5      nUUS:'   UR                  S<5      (       a  US<   nUS=:X  a  S>nUS?:X  a  S@n[-        / SAQ5      nUU;   a  U R/                  UUS   5      nOU R+                  US5      nUUSB'   SCnUUS<'   UR                  SDS5      nU R1                  UUUUU5        OCUR                  SE5      (       a-  USE   nUUSE'   U R3                  UUUUR                  S55      5        Ub  UR5                  5       US5'   UUUS-
  '   US2   R7                  U5        US   (       a  U R3                  UUUS   US9   5        US-  nGM_     SFU;   a  USF   nSn[        UUS-   5       H}  n	Sn [        X$S-   5       Ha  n
U[!        U5      :  aJ  U [!        UU   5      :  a8  UU   U    n!U U;   a  U R9                  XU!UU    5        OU R9                  XU!S5        U S-  n Mc     US-  nM     [;        [        X$S-   5      5       Hc  u  nnUS2   U   n"U"(       d  M  U"S:   (       d  M#  UR                  U5      n#U"S:   n[        UUS-   5       H  n	U R1                  U	UUU#5        M     Me     U R<                  R7                  U5        US   (       a  [        X$S-   5       Hm  n
U R>                  R                  X45      (       a7  U R>                  R                  X45      u  n$n%U$SG:X  a  [        SHU SIU% S	35      eSJU4U R>                  X4'   Mo     g)Ka  
Add an Excel table to a worksheet.

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.
    options:      Table format options. (Optional)

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: Incorrect parameter or option.
    -3: Not supported in constant_memory mode.
Nz5add_table() isn't supported in 'constant_memory' moder  Tr9  r   zTable range 'rt  rs  rr  >   r  rv   stylecolumns	total_rowr}  
header_rowbanded_rowslast_columnfirst_columnbanded_columnsr  ' in add_table()rR  rd  rc  r}  r   z1Must have at least one data row in in add_table()rf  Fshow_first_colre  show_last_colshow_row_stripesrg  show_col_stripesheader_row_countrb  totals_row_shownrv    zName 'z&' in add_table() cannot contain spacesz^[\w\\][\w\\.]*$z^\dz*Invalid Excel characters in add_table(): 'r  z^[a-zA-Z][a-zA-Z]?[a-dA-D]?\d+$z-Name looks like a cell name in add_table(): 'z^[rcRC]$z^[rcRC]\d+[rcRC]\d+$zInvalid name 'z#' like a RC cell ref in add_table()r`  rg   TableStyleMedium9r  a_rangera  Column)	idrv   total_stringtotal_functioncustom_totaltotal_valuers  rX   name_formatrX   r   z'Duplicate header name in add_table(): 'header_formatrx  rs  r)  ru  
count_nums	countNumsstd_devstdDevr  r{  countr=  r>  r}  sumvarrv  r  rw  rt  r  ry  zTable autofilter range 'z0' overlaps previous Worksheet autofilter range 'r   ) r  rz   r   rX  r,   r  r   r  r!   r   r  r/  r0  UNICODEr  rD  rY  lowerr,  rU  r  r  set_table_function_to_formular-  r4  rR  r  r<  	enumerater   r   )&r5   r  r  r  r  r  r   col_formatsr  r'  rR   ru  rX  r  num_rowsrv   first_data_rowlast_data_rowcol_id
seen_namesrY  col_data	user_dataxformatheader_namers  function	subtotalsrv  rt  r  ijr5  column_dataformula_formatr   r   s&                                         r;   	add_tableWorksheet.add_table  sA	   2 ?G llnGHI !!)dCC!!(dDAA %-%- iHG
qL1CY15##''
33%)%5%5%9%93*%EN*'
| 4((6'7r; 
 $$((#44%)%6%6%:%:C:%FN*'
| 4((6'7r; 
 0:  #, 6 2&
 !I/*9+5EFG ( ")]D!A 'L$ ? 'L$ ? '< MHa<DE #*++ne"D!(]E!Bo$+KKu$E !$+KK0@%$H !$+KKa$@ !$+KKU$C ! W6?D &Md{vdV#IJK 88/rzzBBbhhG G A$qIJ xx:DAADTF!LM xxT**bhh7NPT.U.U~dV+NOP g$W-E'NW~%!#g #7^33C<E'N0E'N # ;;|$$aN;;{##QM ")Kg#I-Ri |$$%GL! < "'	"2E, i
Y15G  3v;. ""$ " #
H G#S!344 '	 26A: >I $I'mmHd;G !}}X..+4X+>( #+6"2K&,,.Dz)FtfANO!'+Jt$.7mmO.LH]+ !I-)I2F"+I"6 #--c22&-nnS&9G #'"="=g"F #'"7"7"F.5+ !}}%566#,-=#>#|3'2H#y0'/H$'	%	 $y0&*&E&E ((6*:'G '+&;&;Hd&KG7>H^4'/H5=!12 )mQ ?++HgwQVW"~66'0'@3?0**$g|Y]]8=T
 *-4-C-C-E* /6K
+ )##H- |$""w(8(=:Q aKFq 6v W6?DA^]Q->? qL9C3t9}Sa\)9 $Q
+ KK%QH KK%>FA : Q @  )yQ,)GHOFG	*62K{{955!,!8%i0 1BCC''Wg~N D  I 	5! < Y15$$(())9::040A0A0E0EyFV0W-K"k1.6zl C;;G.L 
 8?
6K!!9"23 6 r@   c                    U R                  XSS5      (       a  gS[        X5      /0nUc  0 n1 SknUR                  5        H  nXe;  d  M
  [        SU S35          g   SU;  a  [        S5        g	UR	                  S
S5      nUS;  a  [        S5        g	US:X  a  SnXtS
'   SU;   a*  [        US   [        5      (       a	  US   US'   O	US   /US'   [        US   [        5      (       a	  US   US'   O	US   /US'   [        US   5      n[        US   5      n	X:w  a  [        S5        g	[        US   5      US'   [        U R                  5      n
/ nUS    HE  nUR                  SS5      nUR                  S5      nSU;  a  U
S-   U-   nUR                  U5        MG     XS'   / nUS    H&  nUR                  SS5      nUR                  U5        M(     XS'   UR	                  S5      US'   UR	                  S5      US'   UR	                  S5      US'   UR	                  S5      US'   UR	                  S 5      US!'   UR	                  S"5      US"'   UR	                  S#5      US#'   UR	                  S$5      US$'   UR	                  S%5      US%'   UR	                  S&5      US&'   UR	                  S'5      US('   UR	                  S)5      US)'   UR	                  S*S5      nUS+:X  a  S,US-'   OUS.:X  a  S/US-'   OS0US-'   UR	                  S15      nU(       a  SU;  a  U
S-   U-   nUUS1'   UR	                  S2S,5      n[        U5      nUS3   US4'   US   US5'   US"   US6'   US   US7'   US!   US8'   US   US9'   US   US:'   U R                  XCS45        U R                  XCS55        U R                  XCS65        U R                  XCS75        U R                  XCS85        U R                  XCS95        U R                  XCS:5        U R                  R                  U5        g,);a   
Add sparklines to the worksheet.

Args:
    row:     The cell row (zero indexed).
    col:     The cell column (zero indexed).
    options: Sparkline formatting options.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.
    -2: Incorrect parameter or option.

Tr9  	locations>   r=  r>  axisrK  r  r`  weightmarkersreverselocation	date_axis	low_color	low_point
high_color
high_point
last_color
last_pointempty_cellsfirst_colorfirst_pointplot_hiddenshow_hiddenseries_colormarkers_colornegative_colornegative_pointsr  z' in add_sparkline()r  z0Parameter 'range' is required in add_sparkline()rR  rK  line)r  columnwin_losszJParameter 'type' must be 'line', 'column' or 'win_loss' in add_sparkline()r  stackedr  rangeszMMust have the same number of location and range parameters in add_sparkline()r  r  rg   r)  !r  highr  lowr  negativer  firstr  lastr  r>  r=  r  r  r  r   r  r  zeror   emptyconnectspangapr  r`  seriesr  r  r  r  r  r  r  )rX  r-   r  r   r  rJ  r  rY  r(   rv   r  rU  r  r%   _set_spark_colorr   )r5   r'  rR   r  	sparkliner  r  
spark_typerange_countlocation_count	sheetname
new_rangesspark_rangenew_locationsr  r  
date_rangestyle_idr`  s                      r;   add_sparklineWorksheet.add_sparkline[  s   ( !!#D$77 #4S#>"?@	?G
< !I0*9+5IJK ( '!CD [[0
;;3 #"J&&  '*-t44)0)<	+&*1**=)>	+&gg&--")'"2Ih#*7#3"4Ih)H-.Y{34 (0  !;!78	' $DII.	 
$X.K%--c26K &,,S1K +%'#o;k* / )( !+.H''R0H  * / "/+ $KK5	&";;{3	% ',= >	*$[[7	'#KK5	&&{{95	)";;u-	%";;u-	%#KK/	&&{{95	)%kk-8	(%kk(3	( M2.F?!"Igi!'Ig!&Ig [[-
#Z/"S:5J!+	+ ;;w*$X.$)(O	.!&+J&7	"#%*9%5	/"#(>	- "'-	,"'-	,!&u	+ 	i.Ai2BCi/Bi-@i,?i,?i+>y)r@   c                 t    Sn[        X5      nX:  a  X1p1X$:  a  XBpB[        XX45      nUS:X  a  gXVU//U l        g)aA  
Set the selected cell or cells in a worksheet

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.

Returns:
    0:  Nothing.
NA1)r-   r,   r   )r5   r  r  r  r  paneactive_cellsqrefs           r;   set_selectionWorksheet.set_selection  sT       (	= %-%-xB D= u56r@   c                 >    US:X  a  US:X  a  g[        X5      U l        g)z
Set the first visible cell at the top left of a worksheet.

Args:
    row: The cell row (zero indexed).
    col: The cell column (zero indexed).

Returns:
    0:  Nothing.
r   N)r-   r   )r5   r'  rR   s      r;   set_top_left_cellWorksheet.set_top_left_cellB  s!     !8q.s8r@   visiblesymbols_belowsymbols_right
auto_stylec                 B    Xl         X l        X0l        X@l        SU l        g)a  
Control outline settings.

Args:
    visible:       Outlines are visible. Optional, defaults to True.
    symbols_below: Show row outline symbols below the outline bar.
                   Optional, defaults to True.
    symbols_right: Show column outline symbols to the right of the
                   outline bar. Optional, defaults to True.
    auto_style:    Use Automatic style. Optional, defaults to False.

Returns:
    0:  Nothing.
TN)r   r   r   r   r   )r5   r  r  r  r  s        r;   outline_settingsWorksheet.outline_settingsT  s#    * "**'#r@   top_rowleft_col	pane_typec                 ,    Uc  UnUc  UnXX4U/U l         g)a,  
Create worksheet panes and mark them as frozen.

Args:
    row:      The cell row (zero indexed).
    col:      The cell column (zero indexed).
    top_row:  Topmost visible row in scrolling region of pane.
    left_col: Leftmost visible row in scrolling region of pane.

Returns:
    0:  Nothing.

N)r   )r5   r'  rR   r  r  r  s         r;   freeze_panesWorksheet.freeze_panesp  s'    , ?GH9=
r@   xyc                 *    U R                  XX4S5        g)a:  
Create worksheet panes and mark them as split.

Args:
    x:        The position for the vertical split.
    y:        The position for the horizontal split.
    top_row:  Topmost visible row in scrolling region of pane.
    left_col: Leftmost visible row in scrolling region of pane.

Returns:
    0:  Nothing.

r  N)r  )r5   r  r  r  r  s        r;   split_panesWorksheet.split_panes  s    , 	!15r@   r   c                 ^    US:  d  US:  a  [        SU S35        Sn[        U5      U l        g)zj
Set the worksheet zoom factor.

Args:
    zoom: Scale factor: 10 <= zoom <= 400.

Returns:
    Nothing.


     zZoom factor 'z"' outside range: 10 <= zoom <= 400rl   N)r   r3   r   )r5   r   s     r;   set_zoomWorksheet.set_zoom  s3     "9s
=&HIJDI	r@   c                     SU l         g)zj
Display the worksheet right to left for some versions of Excel.

Args:
    None.

Returns:
    Nothing.

TN)r   r  s    r;   right_to_leftWorksheet.right_to_left  r  r@   c                     SU l         g)zO
Hide zero values in worksheet cells.

Args:
    None.

Returns:
    Nothing.

r   N)r   r  s    r;   	hide_zeroWorksheet.hide_zero  s     r@   colorc                 :    [         R                  " U5      U l        g)zc
Set the color of the worksheet tab.

Args:
    color: A #RGB color index.

Returns:
    Nothing.

N)r   rT  r   r5   r  s     r;   set_tab_colorWorksheet.set_tab_color  s     **51r@   passwordc                 (   US:w  a  U R                  U5      nU(       d  0 n0 SS_SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_nUR                  5        H  nXC;   a  X$   X4'   M  [        SU S35        M!     XS'   X0l        g)z
Set the password and protection options of the worksheet.

Args:
    password: An optional password string.
    options:  A dictionary of worksheet objects to protect.

Returns:
    Nothing.

rg   sheetTcontentFobjects	scenariosformat_cellsformat_columnsformat_rowsinsert_columnsinsert_rowsinsert_hyperlinksdelete_columnsdelete_rowsselect_locked_cellssortr}  pivot_tablesselect_unlocked_cellszUnknown protection object: 'r  r  N)_encode_passwordr  r   r   )r5   r  r  defaultsrI  s        r;   protectWorksheet.protect  s4    r>,,X6HG
T
u
 u
 	

 E
 e
 5
 e
 5
  
 e
 5
 "4
 E
 %
  E!
" $T#
* <<>C '3C5:;	 "  ('r@   r  
range_namec                 2   Uc  [        S5        gUR                  S5      nUR                  SS5      nU =R                  S-  sl        Uc  S[	        U R                  5      -   nU(       a  U R                  U5      nU R                  R                  XU45        g)	a  
Unprotect ranges within a protected worksheet.

Args:
    cell_range: The cell or cell range to unprotect.
    range_name: An optional name for the range.
    password:   An optional password string. (undocumented)

Returns:
    0:  Success.
    -1: Parameter error.

z1Cell range must be specified in unprotect_range()r9  r)  r  rg   r   Ranger   )r   rU  r  r   rD  r  r   r  r5   r  r  r  s       r;   unprotect_rangeWorksheet.unprotect_range  s    & DE  &&s+
''R0
!!Q&! 3t'@'@#AAJ,,X6H$$jh%GHr@   c                 "   U R                  XSS5      (       a  [        SU SU S35        gUc  0 nU R                  nU R                  nS[	        U R
                  5      -   n[        XXEXc5      nU R
                  R                  U5        SU l        g)a  
Insert a button form object into the worksheet.

Args:
    row:     The cell row (zero indexed).
    col:     The cell column (zero indexed).
    options: Button formatting options.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

TzCannot insert button at (r  r  r9  r   r   )	rX  r   r   r   rY  r   r   r  r   )r5   r'  rR   r  rd  r8  button_numberbuttons           r;   insert_buttonWorksheet.insert_button;  s    $ !!#D$77,SEC5;<?G ((''C 1 122Cf]L  (r@   c                    U(       a!  UR                   (       d  UR                  5         U(       dL  U R                  (       d/  U R                  5       U l        U R                  R                  5         U R                  nU R	                  XX45      $ )aV  
Insert a boolean checkbox in a worksheet cell.

Args:
    row:          The cell row (zero indexed).
    col:          The cell column (zero indexed).
    boolean:      The boolean value to display as a checkbox.
    cell_format:  Cell Format object.  (optional)

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

)checkboxset_checkboxr  r  rC  r  s        r;   insert_checkboxWorksheet.insert_checkboxa  sj    & {33$$& ///3/G/G/I,,,99;66K""3WBBr@   c                      SU l         SU l        g)zQ
Set the page orientation as landscape.

Args:
    None.

Returns:
    Nothing.

r   TNr   r   r  s    r;   set_landscapeWorksheet.set_landscape       "&r@   c                      SU l         SU l        g)zP
Set the page orientation as portrait.

Args:
    None.

Returns:
    Nothing.

r   TNr!  r  s    r;   set_portraitWorksheet.set_portrait  r$  r@   view)r   r   r  c                     Xl         g)z
Set the page view mode.

Args:
    0: Normal view mode
    1: Page view mode (the default)
    2: Page break view mode

Returns:
    Nothing.

Nr
  )r5   r(  s     r;   set_page_viewWorksheet.set_page_view  s	     r@   c                     SU l         g)zB
Set the page view mode.

Args:
    None.

Returns:
    Nothing.

r  Nr*  r  s    r;   set_pagebreak_viewWorksheet.set_pagebreak_view  s     r@   r   )r   rs   c                 .    U(       a  Xl         SU l        gg)zh
Set the paper type. US Letter = 1, A4 = 9.

Args:
    paper_size: Paper index.

Returns:
    Nothing.

TN)r   r   )r5   r   s     r;   	set_paperWorksheet.set_paper  s     (O&*D# r@   c                      SU l         SU l        g)zH
Center the page horizontally.

Args:
    None.

Returns:
    Nothing.

Tr   N)r   r   r  s    r;   center_horizontallyWorksheet.center_horizontally       &*"r@   c                      SU l         SU l        g)zF
Center the page vertically.

Args:
    None.

Returns:
    Nothing.

Tr   N)r   r   r  s    r;   center_verticallyWorksheet.center_vertically  r6  r@   leftrightr  r  c                 4    Xl         X l        X0l        X@l        g)z
Set all the page margins in inches.

Args:
    left:   Left margin.
    right:  Right margin.
    top:    Top margin.
    bottom: Bottom margin.

Returns:
    Nothing.

N)r   r   r   r   )r5   r:  r;  r  r  s        r;   set_marginsWorksheet.set_margins  s    (  !#r@   r   c                    UnUR                  SS5      n[        U5      S:  a  [        S5        gUb  [        U[        5      (       d  SU0nO0 nUR                  5       nUb  X2S'   / U l        UR                  S5      (       aW  UR                  S5      US	'   U R                  UR                  S5      U5      nS
Ul	        U R                  R                  U5        UR                  S5      (       aW  UR                  S5      US	'   U R                  UR                  S5      U5      nSUl	        U R                  R                  U5        UR                  S5      (       aW  UR                  S5      US	'   U R                  UR                  S5      U5      nSUl	        U R                  R                  U5        UR                  S5      n[        U R                  5      nXg:w  a  [        SU SU SU 35        / U l        gSU;   a
  US   U l        SU;   a
  US   U l        Xl        UR                  SS5      U l        SU l        U(       a  SU l        gg)z
Set the page header caption and optional margin.

Args:
    header:  Header string.
    margin:  Header margin.
    options: Header options, mainly for images.

Returns:
    Nothing.


&[Picture]&Gr  zCHeader string cannot be longer than Excel's limit of 255 charactersNmargin
image_leftimage_data_left
image_dataLHimage_centerimage_data_centerCHimage_rightimage_data_rightRHNumber of footer images '#' doesn't match placeholder count '' in string: align_with_marginsscale_with_docrk   T)r  rY  r   rJ  r   r  r   r  r  _header_positionr  r  r   r   r   r   r   r   )r5   r   r  rB  header_origr  placeholder_countimage_counts           r;   
set_headerWorksheet.set_header  =    d3v;VWgt,,#W-G ,,.  &H  ;;|$$$+KK0A$BGL!++GKK,EwOE%)E"%%e,;;~&&$+KK0C$DGL!++GKK,GQE%)E"%%e,;;}%%$+KK0B$CGL!++GKK,FPE%)E"%%e,"LL.$,,-++K= 9+,M+H "$D7*(/0D(ED%w&(/0@(AD%$[[37%)""&D r@   r   c                    UnUR                  SS5      n[        U5      S:  a  [        S5        gUb  [        U[        5      (       d  SU0nO0 nUR                  5       nUb  X2S'   / U l        UR                  S5      (       aW  UR                  S5      US	'   U R                  UR                  S5      U5      nS
Ul	        U R                  R                  U5        UR                  S5      (       aW  UR                  S5      US	'   U R                  UR                  S5      U5      nSUl	        U R                  R                  U5        UR                  S5      (       aW  UR                  S5      US	'   U R                  UR                  S5      U5      nSUl	        U R                  R                  U5        UR                  S5      n[        U R                  5      nXg:w  a  [        SU SU SU 35        / U l        gSU;   a
  US   U l        SU;   a
  US   U l        Xl        UR                  SS5      U l        SU l        U(       a  SU l        gg)z
Set the page footer caption and optional margin.

Args:
    footer:  Footer string.
    margin:  Footer margin.
    options: Footer options, mainly for images.

Returns:
    Nothing.

r@  rA  r  zCFooter string cannot be longer than Excel's limit of 255 charactersNrB  rC  rD  rE  LFrG  rH  CFrJ  rK  RFrM  rN  rO  rP  rQ  rk   T)r  rY  r   rJ  r   r  r   r  r  rR  r  r  r   r   r   r   r   r   )r5   r   r  rB  footer_origr  rT  rU  s           r;   
set_footerWorksheet.set_footerT  rX  r@   c                 v    Uc  UnUS-  nUS-  nSU SU 3n[        U R                  5      nUS-   U-   U l        g)z
Set the rows to repeat at the top of each printed page.

Args:
    first_row: Start row for range.
    last_row: End row for range.

Returns:
    Nothing.

Nr   r  z:$r  )r(   rv   r   )r5   r  r  r{  r  s        r;   repeat_rowsWorksheet.repeat_rows  sX      H 	Q	A 9+Rz* $DII.	 )C$ 6r@   c                     Uc  Un[        US5      n[        US5      nUS-   U-   n[        U R                  5      nUS-   U-   U l        g)z
Set the columns to repeat at the left hand side of each printed page.

Args:
    first_col: Start column for range.
    last_col: End column for range.

Returns:
    Nothing.

Nr   rC   r  )r*   r(   rv   r   )r5   r  r  r{  r  s        r;   repeat_columnsWorksheet.repeat_columns  sZ      H #9a0	!(A. 3) $DII.	 )C$ 6r@   optionc                     US:X  a  SU l         SU l        SU l        gUS:X  a  SU l         SU l        gSU l         SU l        g)z
Set the option to hide gridlines on the screen and the printed page.

Args:
    option:    0 : Don't hide gridlines
               1 : Hide printed gridlines only
               2 : Hide screen and printed gridlines

Returns:
    Nothing.

r   r   TN)r   r   r   )r5   rf  s     r;   hide_gridlinesWorksheet.hide_gridlines  sJ     Q;#$D $%D!)-D&q[#$D $%D!#$D $%D!r@   c                      SU l         SU l        g)zr
Set the option to print the row and column headers on the printed page.

Args:
    None.

Returns:
    Nothing.

TN)r   r   r  s    r;   print_row_col_headersWorksheet.print_row_col_headers  s     "%)"r@   c                     SU l         g)zn
Set the option to hide the row and column headers on the worksheet.

Args:
    None.

Returns:
    Nothing.

TN)r   r  s    r;   hide_row_col_headersWorksheet.hide_row_col_headers   s      $r@   c                     US:X  a+  US:X  a%  X0R                   S-
  :X  a  X@R                  S-
  :X  a  gU R                  XX45      nXPl        g)as  
Set the print area in the current worksheet.

Args:
    first_row:    The first row of the cell range. (zero indexed).
    first_col:    The first column of the cell range.
    last_row:     The last row of the cell range. (zero indexed).
    last_col:     The last column of the cell range.

Returns:
    0:  Success.
    -1: Row or column is out of worksheet bounds.

r   r   r9  )r   r   rz  r   )r5   r  r  r  r  r{  s         r;   
print_areaWorksheet.print_area  sP    , NQOOa//OOa// &&yXP $r@   c                      SU l         SU l        g)zT
Set the order in which pages are printed.

Args:
    None.

Returns:
    Nothing.

r   TN)r   r   r  s    r;   print_acrossWorksheet.print_across0  s     "&r@   c                 8    SU l         Xl        X l        SU l        g)z
Fit the printed area to a specific number of pages both vertically and
horizontally.

Args:
    width:  Number of pages horizontally.
    height: Number of pages vertically.

Returns:
    Nothing.

r   TN)r   r   r   r   )r5   r8  rd  s      r;   fit_to_pagesWorksheet.fit_to_pages>  s      "&r@   
start_pagec                     Xl         g)zl
Set the start page number when printing.

Args:
    start_page: Start page number.

Returns:
    Nothing.

N)r   )r5   ry  s     r;   set_start_pageWorksheet.set_start_pageP  s	     %r@   scalec                 x    US:  d  US:  a  [        SU S35        gSU l        [        U5      U l        SU l        g)zw
Set the scale factor for the printed page.

Args:
    scale: Print scale. 10 <= scale <= 400.

Returns:
    Nothing.

r  r  zPrint scale 'z#' outside range: 10 <= scale <= 400Nr   T)r   r   r3   r   r   )r5   r}  s     r;   set_print_scaleWorksheet.set_print_scale]  sC     2:='JKL u:"&r@   c                      SU l         SU l        g)zd
Set the option to print the worksheet in black and white.

Args:
    None.

Returns:
    Nothing.

TN)r   r   r  s    r;   print_black_and_whiteWorksheet.print_black_and_whites  s      "&r@   breaksc                     Xl         g)z
Set the horizontal page breaks on a worksheet.

Args:
    breaks: List of rows where the page breaks should be added.

Returns:
    Nothing.

N)r   r5   r  s     r;   set_h_pagebreaksWorksheet.set_h_pagebreaks  	     r@   c                     Xl         g)z
Set the horizontal page breaks on a worksheet.

Args:
    breaks: List of columns where the page breaks should be added.

Returns:
    Nothing.

N)r   r  s     r;   set_v_pagebreaksWorksheet.set_v_pagebreaks  r  r@   rv   c                 X    Ub  Xl         gS[        U R                  S-   5      -   U l         g)z
Set the VBA name for the worksheet. By default this is the
same as the sheet name: i.e., Sheet1 etc.

Args:
    name: The VBA name for the worksheet.

Returns:
    Nothing.

NSheetr   )r  rD  rw   )r5   rv   s     r;   set_vba_nameWorksheet.set_vba_name  s*      $ '#djj1n*= =Dr@   c                     Uc  gUR                  5       n1 SknUR                  5        H  nX2;  d  M
  [        SU S35          g   Xl        g)z
Ignore various Excel errors/warnings in a worksheet for user defined
ranges.

Args:
    options: A dict of ignore errors keys with cell range values.

Returns:
    0: Success.
   -1: Incorrect parameter or option.

r9  >	   
eval_errorformula_rangeformula_differsformula_unlockedcalculated_columntwo_digit_text_yearempty_cell_referencelist_data_validationnumber_stored_as_textr  z' in ignore_errors()r   )r  r  r   r   )r5   r  r  r  s       r;   ignore_errorsWorksheet.ignore_errors  sZ     ? ,,.

 !I0*9+5IJK (
 &r@   c                    US   U l         US   U l        US   U l        US   U l        US   U l        US   U l        US   U l        US   U l        US	   U l        US
   U l	        US   U l
        US   U l        US   U l        US   U l        US   U l        US   U l        US   U l        US   U l        US   U l        U R                  (       aF  SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        U R                  (       a^  [:        R<                  " U R
                  S9u  p#[>        R@                  " U5        X0l!        [E        USSS9U l#        U RF                  U l$        g g )Nrv   rw   rx   r  rz   r{   r  r  r  r  r  r  r  r  r   r  r  r"  r$  g     )@   rj   r         ?F)dirzw+utf-8modeencoding)%rv   rw   rx   r  rz   r{   r  r  r  r  r  r  r  r  r   r  r  r"  r$  r   r   r   r   r   r   r   r   r   r   tempfilemkstemposcloser  openr  r  )r5   	init_datafdfilenames       r;   _initializeWorksheet._initialize  s   f%	w'
";/'(89():;)";/"+,@"A#,-B#C ():;!*+>!?#,-B#C "+,@"A#,-B#C ():;():;'(89$-.D$E!():;',D$&+D#&(D##D $DDO!"D!$D!$D(-D%  &--$++>NRHHRL%-"#H4'JD &&DG  r@   c                 L   U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         U R                  5         U R                  5         U R                  (       d  U R                  5         OU R                  5         U R                  5         U R                  5         U R                  (       a  U R                  5         U R                  5         U R                  5         U R!                  5         U R#                  5         U R%                  5         U R'                  5         U R)                  5         U R+                  5         U R-                  5         U R/                  5         U R1                  5         U R3                  5         U R5                  5         U R7                  5         U R9                  5         U R;                  5         U R=                  5         U R?                  5         U RA                  S5        U RC                  5         g )Nry  )"_xml_declaration_write_worksheet_write_sheet_pr_write_dimension_write_sheet_views_write_sheet_format_pr_write_colsrz   _write_sheet_data_write_optimized_sheet_data_write_sheet_protection_write_protected_rangesr   _write_phonetic_pr_write_auto_filter_write_merge_cells_write_conditional_formats_write_data_validations_write_hyperlinks_write_print_options_write_page_margins_write_page_setup_write_header_footer_write_row_breaks_write_col_breaks_write_ignored_errors_write_drawings_write_legacy_drawing_write_legacy_drawing_hf_write_picture_write_table_parts_write_ext_listr  
_xml_closer  s    r;   _assemble_xml_fileWorksheet._assemble_xml_file	  s    	 	 	 	 	! 	##% 	 ##""$,,. 	$$& 	$$& ##% 	! 	! 	'') 	$$& 	  	!!# 	  " 	  	!!# 	  	  	""$ 	 	""$ 	%%' 	 	! 	 	+& 	r@   c                    US:  d  US:  a  gXR                   :  d  X R                  :  a  gU(       d(  U(       d!  U R                  (       a  XR                  :  a  gU(       dD  U R                  b  XR                  :  a  Xl        U R
                  b  XR
                  :  a  Xl        U(       dD  U R                  b  X R                  :  a  X l        U R                  b  X R                  :  a  X l        grW  )r   r   rz   r  r   r   r   r   )r5   r'  rR   r?  r@  s        r;   rX  Worksheet._check_dimensionsm  s     7cAg//!SOO%; *1E1E&&&&#*?"%&#*?"%&#*?"%&#*?"%r@   c                 B    [        XR                  U R                  5      $ N)r$   r  r  )r5   dt_objs     r;   r  Worksheet._convert_date_time  s    *6>>4CWCWXXr@   c                 ~   SnSnSnSn[        US5      n	[        US5      n
S[        US-   5      -   nS[        US-   5      -   nUS:X  a  X0R                  S-
  :X  a  U	nU
nSnO'US:X  a  X@R                  S-
  :X  a  UnUnSnOX-   nX-   nXV:X  a
  U(       d  UnOUS-   U-   n[	        U R
                  5      nUS-   U-   nU$ )Nrg   r   r   r  rC   r  )r*   rD  r   r   r(   rv   )r5   	row_num_1	col_num_1	row_num_2	col_num_2range1range2r{  row_col_only
col_char_1
col_char_2
row_char_1
row_char_2r  s                 r;   rz  Worksheet._convert_name_area  s      $Iq1
#Iq1
3y1}--
3y1}--
 >i??Q+>>FFL!^	__q-@ @FFL,F,F LDC<&(D $DII.	3%r@   c                     U(       d  / $ [        U5      nSU;   a  UR                  S5        [        U5      nUR                  5         Sn[	        U5      U:  a  US U nU$ )Nr   i  )r  remover  r	  rY  )r5   r  
breaks_setbreaks_listmax_num_breakss        r;   _sort_pagebreaksWorksheet._sort_pagebreaks  sf     I[

?a :& {n,%o~6Kr@   c                 .   U(       d  / $ [         R                  " S5      nUR                  U5      n/ nU H\  nUR                  S5      (       a  USS  nUR	                  S5      (       a  US S nUR                  SS5      nUR                  U5        M^     U$ )Nz"(?:[^"]|"")*"|\S+r  r   r9  z"")r/  compilefindallr,  r.  r  r  )r5   r  token_rer  
new_tokensr5  s         r;   r   Worksheet._extract_filter_tokens  s     I::34!!*-
E$$ab	~~c""cr
MM$,Ee$  r@   c                 L   [        U5      S:X  a  US   n[        R                  " SU5      (       a  SnO1[        R                  " SU5      (       a  SnO[        SU SU S	35        U R	                  XSS 5      nU R	                  XS
S 5      nXC/-   U-   $ U R	                  X5      $ )Nr<  rh   z(and|&&)r   z	(or|\|\|)r   Token 'z3' is not a valid conditional in filter expression 'r  r  )rY  r/  r0  r   _parse_filter_tokens)r5   r  r  conditionalexpression_1expression_2s         r;   r  "Worksheet._parse_filter_expression  s     v;! !)Kxx
K00,44k] +--7L;
  44Z!ML44Z!ML-/,>>((<<r@   c                 @   SSSSSSSSSSSSS.nUR                  US   S 5      nUS   n[        R                  " SUS	   R                  5       5      (       a  [	        US   5      nUS:  d  US
:  a  [        SU SU S35        UR                  5       nUS;  a  [        SU SU S35        US	   R                  5       S:X  a  SnOSnUS   S:X  a  US-  n[        U5      nU(       d  US	   (       a  [        SUS	    SU S35        [        R                  " SUR                  5       5      (       aI  US;  a  [        SUS    SU S35        UR                  5       nUS:X  a	  US:X  a  SnOUS:X  a  SnSnOSnSnUS:X  a  [        R                  " SU5      (       a  SnXE/$ ) Nr  rP  r   rh   r     )r  r)  z=~eqr  z!~ner  r  r  r  r  z
top|bottomr   i  zThe value 'z' in expression 'z' must be in the range 1 to 500)rU  %z
The type 'z ' must be either 'items' or '%%'r     r  r  r  z0' is not a valid operator in filter expression 'rs  zblanks|nonblanks)r  rP  zThe operator 'z0' is not valid in relation to Blanks/NonBlanks'.r   ro  z[*?]   )r  r/  r0  r  r3   r   rD  r|  )r5   r  r  	operatorsoperatorr5  rv  s          r;   r  Worksheet._parse_filter_tokens  s   
 
	 ==D1q	 88L&)//"344q	NEqyECK!%(9* F4 5
 KKMEN* '8 E5 6
 ay E)ayCAJEF1I%( $))3B8 88&66v%$VAYK/@ ME F
 KKME  q=Eq= H$E HE q=RYYvu55H  r@   c                     SnUS S S2    H"  nUS-	  S-  US-  S-  -  nU[        U5      -  nM$     US-	  S-  US-  S-  -  nU[        U5      -  nUS-  nUS $ )Nr   r9     r   rf   iK  X)ordrY  )r5   r  digestr  s       r;   r  Worksheet._encode_passwordk  s    
 TrTND|t+10FGFc$iF # R<4'Vq[F,BC#h-&r@   c                     [        U[        5      (       a  UnU$ Ub,  UR                  S5      (       a  [        US   5      nXl        U$ [        U5      nU$ )NrE  )rJ  r   r  
image_name)r5   r  r  r  s       r;   r  Worksheet._image_from_source|  s_     fe$$E   W[[%>%>',/0E%  &MEr@   r  image_id
drawing_idc           	         UR                   UR                  -  nUR                  UR                  -  nUSUR                  -  -  nUSUR
                  -  -  nU R                  UR                  UR                  UR                  UR                  UUUR                  5      n[        SUS-  -   5      n[        SUS-  -   5      nU R                  (       dE  [        5       nSUl        Xpl        U R                   R#                  SS[%        U5      -   S-   S /5        OU R                  n['        5       n[(        R*                  Ul        Xhl        UR0                  Ul        XHl         XXl        S Ul        UR                  Ul        SUl        UR8                  Ul        UR:                  b  UR:                  Ul        UR<                  (       a  UR<                  n	U	R?                  5       n
U	RA                  5       nU RB                  RE                  U	RF                  5      (       d  U RH                  R#                  S	X/5        U RK                  U	RF                  5      U	l        Xl        U RB                  RE                  URL                  5      (       d9  U RH                  R#                  S
S[%        U5      -   S-   URN                  -   /5        U RK                  URL                  5      Ul        URQ                  U5        g )Ng      X@r  5%  r   /drawing../drawings/drawing.xmlr   
/hyperlink/image../media/image.))_width_x_scale_height_y_scale_x_dpi_y_dpi_position_object_emusr  r  	_x_offset	_y_offset_anchorr3   r   r   embeddedr   r  rD  r   r   IMAGE_drawing_type_dimensionsr	  _description_shape
_rel_index_decorativer  _url_target_target_moder   r  _linkr   _get_drawing_rel_index_digest_image_extension_add_drawing_object)r5   r  r  r  r8  rd  
dimensionsr   drawing_objectr  targettarget_modes               r;   _prepare_imageWorksheet._prepare_image  sr    u~~-/ 	$$$%%//JJJJOOOOMM

 C54<()SFTM*+ ||iG G"L''..2S_DvMtT llG$'3'9'9$%/"&+&6&6# %!' $!&$%!%*%6%6"(*/*;*;N'::**C[[]F**,K$$((33""))<*MN!88CCN"%  $$U]]33%%$s8}4s:U=S=SS %)$?$?$N!##N3r@   c                 H   U R                   U   u  nnnnnnn	n
nnnUR                  SU R                  S-  5      nUR                  SU R                  S-  5      nX-  nX-  nU R	                  XCXVXU
5      n[        SUS-  -   5      n[        SUS-  -   5      nU R                  (       dF  [        5       nSUl        UU l        U R                  R                  SS	[        U5      -   S
-   S /5        OU R                  n[        SSU5      nU	Ul        [        5       n[        R                   Ul        UUl        UUl        UUl        UUl        UUl        U
Ul        SUl        UUl        [4        R6                  " U5      nU(       a  UR9                  5       nUR;                  5       nU R<                  R                  UR>                  5      (       d  U R@                  R                  SUU/5        U RC                  UR>                  5      Ul        UUl"        URG                  U5        g )Nr8  rh   rd  r  r  r  r   r  r  r  rectTextBoxr   r  )$r   r  r   r   r  r3   r   r   r   r   r  rD  r#   r  r   r   SHAPEr"  r#  r  r  r$  r%  r  r&  r'  r   from_optionsr)  r*  r   r+  r   r,  r(  r/  )r5   rw   r  r'  rR   r  r  r  r  r  r  r  r  r  r8  rd  r0  r   shaper1  r  r2  r3  s                          r;   _prepare_shapeWorksheet._prepare_shape  s    KK	
 GT%<%<q%@AXt'>'>'BC//h%


 C54<()SFTM*+ ||iG G"DL''..2S_DvMtT llGfi1
$'3'9'9$%/" %!'&1# %!'$%!%/"w'[[]F**,K$$((33""))<*MN!88CCN"%N##N3r@   c                    [         R                  " SSUR                  5      Ul        U R                  R	                  UR
                  5      (       d9  U R                  R                  SS[        U5      -   S-   UR                  -   /5        U R                  UR
                  5      Ul        U R                  R                  U5        g )Nz\..*$rg   r  r  r  )r/  r  r	  r   r  r-  r   r  rD  r.  _get_vml_drawing_rel_index_ref_idr   )r5   r  r  s      r;   _prepare_header_imageWorksheet._prepare_header_image  s     66(B0@0@A$$((77""))$s8}4s:U=S=SS 77F&&u-r@   c                 b    U R                   R                  SS[        U5      -   S-   U-   /5        g )Nr  r  r  )r   r  rD  )r5   r  image_extensions      r;   _prepare_backgroundWorksheet._prepare_background/  s2    &&--'#h-7#=OP	
r@   c           
         U R                   U   u
  nnnnnn	n
nnnUS-
  Ul        [        SUR                  U	-  -   5      n[        SUR                  U
-  -   5      nU R                  XTXxXU5      nUR                  nU R                  (       dE  [        5       nSUl	        UU l        U R                  R                  SS[        U5      -   S-   /5        OU R                  n[        5       n[        R                  Ul        UUl        UUl        UUl        UUl        S Ul        UUl        U R/                  5       Ul        UUl        UUl        UR7                  U5        U R8                  R                  SS[        U5      -   S-   /5        g )Nr   r  r  r  r  z/chartz../charts/chart)r   rs  r3   r8  rd  r  
chart_namer   r   r   r   r  rD  r   r   CHARTr"  r#  r  r  _namer%  r  r,  r&  r$  r'  r/  r   )r5   rw   chart_idr  r'  rR   r  r  r  r  r  r  r  r  r8  rd  r0  rv   r   r1  s                       r;   _prepare_chartWorksheet._prepare_chart5  s    KK	
 a< C5;;012SELL7234//h%


  ||iG G"DL''..2S_DvMN llG$'3'9'9$%/" %!'# $!'$($?$?$A!&1#%/"##N3!!(3x=86AB	
r@   c           
         U R                  XX4XVU5      u
  nnnnnn	n
nnn[        SSU-  -   5      n[        SSU-  -   5      n[        SSU
-  -   5      n
[        SSU-  -   5      n[        SSU-  -   5      n[        SSU-  -   5      nXX4XXX4
$ )Nr  r  )_position_object_pixelsr3   )r5   	col_start	row_startx1y1r8  rd  r  col_endrow_endx2y2x_absy_abss                 r;   r  Worksheet._position_object_emuso  s    ( (("%
	
 tby!tby!tby!tby!C$,&'C$,&'bgUUr@   c           
         SnSn	US:  a/  US:  a)  X0R                  US-
  5      -  nUS-  nUS:  a  US:  a  M)  US:  a/  US:  a)  X@R                  US-
  5      -  nUS-  nUS:  a  US:  a  M)  [        SU5      n[        SU5      nU R                  (       a&  [	        U5       H  n
XR                  U
5      -  nM     OXR
                  U-  -  nX-  nU R                  (       a&  [	        U5       H  nXR                  U5      -  n	M     OXR                  U-  -  n	X-  n	X0R                  X5      :  a.  X0R                  U5      -  nUS-  nX0R                  X5      :  a  M.  X@R                  X'5      :  a.  X@R                  U5      -  nUS-  nX@R                  X'5      :  a  M.  UnUnU R                  X5      S:  a  XS-   nU R                  X'5      S:  a  Xd-   nXPR                  X5      :  a.  XPR                  X5      -  nUS-  nXPR                  X5      :  a  M.  X`R                  X5      :  a.  X`R                  X5      -  nUS-  nX`R                  X5      :  a  M.  UnUnXX4XXX/
$ r2   )	_size_col	_size_rowr=  r   r  r   r   r   )r5   rP  rQ  rR  rS  r8  rd  r  rX  rY  r  row_idrT  rU  rV  rW  s                   r;   rO  !Worksheet._position_object_pixels  sw   (  1fQ..Q//BNI 1fQ
 1fQ..Q//BNI 1fQ
 BZBZ   	*// + ,,y88E   	*// + ,,y88E NN955..++BNI NN955
 NN955..++BNI NN955
  >>),q0JE>>),q0[F ~~g66^^G44EqLG ~~g66
 w77nnW55FqLG w77
 bgUUr@   c                 2   SnSnSnXR                   ;   au  U R                   U   S   nU R                   U   S   nUc  U R                  nU(       a
  US:w  a  SnU$ US:  a  [        XcU-   -  S-   5      nU$ [        Xc-  S-   5      U-   n U$ U R                  nU$ )Nr<  rP  r   r  r  r   r  )r   r   r3   r   )r5   rR   r  max_digit_widthpaddingpixelsr8  r   s           r;   r\  Worksheet._size_col  s      --MM#&q)E]]3'*F}.. &A+  U&?@3FG 	 U4s:;gE  ,,Fr@   c                     SnXR                   ;   aF  U R                   U   S   nU R                   U   S   nU(       a
  US:w  a  SnU$ [        SU-  5      n U$ [        SU R                  -  5      nU$ )Nr   r   r  gUUUUUU?)r   r3   r   )r5   r'  r  rc  rd  r   s         r;   r]  Worksheet._size_row/  s    
  .. ^^C(+F^^C(+F&A+ 	 Y/0  T%<%<<=Fr@   c                 :    SnSnUS::  a	  XU-   -  nU$ X-
  U-  nU$ )Ng      @g      @    )r5   rc  ra  rb  r8  s        r;   rD  Worksheet._pixels_to_widthD  s;    R<78E  %8Er@   c                     SU-  $ )Nrj   ri  )r5   rc  s     r;   rj  Worksheet._pixels_to_heightP  s    f}r@   c           	         SnU R                  UR                  UR                  UR                  UR                  UR
                  UR                  U5      nUR                  UR
                  5        UR                  UR                  5        U$ Nr   )rO  	start_col	start_rowr  r  r8  rd  r  )r5   r  r  verticess       r;   _comment_verticesWorksheet._comment_verticesT  ss    //MMNN
 	&'r@   r  c           	         SnU R                  UR                  UR                  UR                  UR                  UR
                  UR                  U5      nUR                  UR
                  5        UR                  UR                  5        U$ rn  )rO  rR   r'  r  r  r8  rd  r  )r5   r  r  rq  s       r;   _button_verticesWorksheet._button_verticesg  sk    //JJJJOOOOLLMM
 	%&r@   c                 d   / n[        U R                  R                  5       5      nU H  n[        U R                  U   R                  5       5      nU Hx  n	U R                  U   U	   n
U R                  U
5      U
l        U
R
                  c  U R                  U
l        U
R                  c  U R                  U
l        UR                  U
5        Mz     M     U R                   H  nU R                  U5      Ul        M     U R                  R                  SS[        U5      -   S-   /5        U R                  (       a2  XPl        U R                   R                  SS[        U5      -   S-   /5        [#        U5      nUn[%        ['        US-  5      5       H  nX-   S-   nU S	U 3nM     Xl        X l        U$ )
N/vmlDrawing../drawings/vmlDrawing.vmlz	/commentsz../commentsr  rr   r   r  )rQ  r   r  rr  rq  
is_visibler   r  r   r  r   ru  r   rD  r   r   r   rY  r  r3   r  r   )r5   r  r   vml_drawing_id
comment_idr   row_numsr'  col_numsrR   r  r  r  start_data_idr  data_ids                   r;   _prepare_vml_objectsWorksheet._prepare_vml_objectsz  s     $--,,./CdmmC05578H--,S1#'#9#9'#B  %%-)-)>)>G& >>)%)%9%9GN(   " ''F"33F;FO ( 	&&4s>7JJVST	
 !)''..mc*o=FG H# s54<()A#'!+G(M7)4K * '(r@   c                 h    Xl         U R                  R                  SS[        U5      -   S-   /5        g )Nrx  ry  rz  )r   r   r  rD  )r5   r   r|  s      r;   _prepare_header_vml_objects%Worksheet._prepare_header_vml_objects  s6     +&&4s>7JJVST	
r@   c                 6   U R                    H  nXS'   UR                  S5      c  S[        U5      -   US'   US   R                  5       nXB;   a  [	        SUS    S35      eSX$'   U R
                  R                  SS[        U5      -   S	-   /5        US
-  nM     g )Nrs  rv   TablezDuplicate name 'z ' used in worksheet.add_table().Tz/tablez../tables/tabler  r   )r   r  rD  r  r    r   r  )r5   table_idseenr   rv   s        r;   _prepare_tablesWorksheet._prepare_tables  s    [[E"$Kyy ( '#h- 7f =&&(D|(&uV}o5UV  DJ %%,,,s8}<vEF MH+ !r@   c           	          SnUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS	5      nS
SSSSSSSS.nX;   a  XA   nSU SU S3nU$ [        SU S35        U$ )Nrg   r  z''r  z'#]z'][z'[e   f   g   h   i   k   m   n   r~  z	SUBTOTAL(z,[z])zUnsupported function 'rh  )r  r   )r5   r  col_namers  r  func_nums         r;   r  $Worksheet._table_function_to_formula  s     ##C.##C.##C.##C. 	
	   *H!(2hZr:G  )(3CDEr@   c                 D    X2;  a  g [         R                  " X#   5      X'   g r  )r   rT  )r5   r  r  
user_colors       r;   r  Worksheet._set_spark_color  s!    $ % 1 1'2E F	r@   c                    U R                   (       a  g/ n[        XS-   5       GH0  nX`R                  ;  a  UR                  S 5        M&  [        X$S-   5       H  nXpR                  U   ;   a  U R                  U   U   nUR                  R
                  n	U	S;   a  UR                  UR                  S 5        Mb  U	S:X  a:  UR                  n
U R                  R                  U
5      nUR                  U5        M  U	S;   a$  UR                  nUc  SnUR                  U5        M  U	S:X  a  UR                  S	5        M  M  UR                  S 5        M     GM3     U$ )
Nri  r   rZ   r^   r  r[   rN  r   rW   rg   )rz   r  r   r  r%  rT  r`  rP  rx   _get_shared_stringrv  )r5   rQ  rP  rU  rT  r  rX  rY  rZ  r[  rw   rP  rv  s                r;   _get_range_dataWorksheet._get_range_data  s,     Y!4Gjj(D! aK8jj11::g.w7D $ 7 7I $::t{{4&8:"h. $!%!B!B5!IF+"&AA $

 =$%EE*"g-B .
 KK%? 9 5N r@   c                     U Vs/ s H%  n[        U[        5      (       d  [        U5      OUPM'     nnSR                  U5      $ s  snf )Nr  )rJ  rD  r  )r5   rU  items      r;   r  Worksheet._csv_join*  sC     OTTed*T3"7"7TTAeTxx Us   ,Ac                    [         R                  " SU5      (       a  U$ UR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS	5      nUR                  S
S5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nU$ )Nz%[0-9a-fA-F]{2}r  z%25r  z%22ro  z%20r  z%3cr  z%3er  z%5br  z%5d^z%5e`z%60rz  z%7br*  z%7d)r/  r|  r  )r5   r  s     r;   _escape_urlWorksheet._escape_url2  s    99&,,J kk#u%kk#u%kk#u%kk#u%kk#u%kk#u%kk#u%kk#u%kk#u%kk#u%kk#u%
r@   c                    Uc!  U =R                   S-  sl         U R                   $ U R                  R                  U5      (       a  U R                  U   $ U =R                   S-  sl         U R                   U R                  U'   U R                   $ Nr   )r   r   r  r5   r2  s     r;   r,   Worksheet._get_drawing_rel_indexF  s    >  A% '''  (($$V,,!$($8$8&!###r@   c                     U R                   R                  U5      (       a  U R                   U   $ U =R                  S-  sl        U R                  U R                   U'   U R                  $ r  )r   r  r  r  s     r;   r?  $Worksheet._get_vml_drawing_rel_indexS  s]      $$V,,((00  A% (,(@(@f%'''r@   c                 t   U R                   nUR                  S5        UR                  (       a  UR                  S5        UR                  (       a  UR                  S5        UR
                  (       a  UR                  S5        UR                  (       a  UR                  S5        UR                  (       a  UR                  S5        UR                  (       a  U R                  UR                  5        UR                  S:X  a  U R                  S5        UR                  S	:X  a  U R                  S
5        UR                  SSUR                  4/5        UR                  S:X  a  OUR                  (       a   U R                  SSUR                  4/5        OUR                  (       a   U R                  SSUR                  4/5        ObUR                   (       a>  UR                   nUR"                  (       d   U R                  SUR%                  5       5        OU R                  SS/5        UR                  SSUR&                  4/5        UR                  SSUR(                  4/5        UR&                  S:X  a0  UR*                  (       d  UR                  SSUR,                  4/5        UR/                  S5        g )NrPrbr  strikeoutlineshadowr   superscriptr  	subscriptszvalr9  r  themeindexed)r  r   rFontfamilyCalibrischeme)r  r  bold_xml_empty_tagitalicfont_strikeoutfont_outlinefont_shadow	underline_write_underlinefont_script_write_vert_align	font_sizer  _write_rstring_colorcolor_indexed
font_color_is_automatic_attributes	font_namefont_family	hyperlinkfont_schemer  )r5   	xf_format
xml_writerr  s       r;   r  Worksheet._write_fontb  s)   \\
!!%( >>%%c*%%c*##%%h/!!%%i0  %%h/ !!)"5"56   A%""=1  A%"";/ 	!!$%1D1D)E(FG ??b __%%g)//0J/KL$$%%gI<S<S0T/UV!!((E&&))'53D3D3FG%%g~> 	!!'UI4G4G,H+IJ!!(eY5J5J-K,LM)+I4G4G%%h%9N9N1O0PQ&r@   c                 z    / nUS:X  a  S/nOUS:X  a  S/nO	US:X  a  S/nU R                   R                  SU5        g )Nr  )r  double!   )r  singleAccounting"   )r  doubleAccountingur  r  )r5   r  r  s      r;   r  Worksheet._write_underline  sJ    
 >+,J"_56J"_56J##C4r@   c                 F    SU4/nU R                   R                  SU5        g )Nr  	vertAlignr  r5   r  r  s      r;   r  Worksheet._write_vert_align  s!    cl^
##K<r@   c                 :    U R                   R                  X5        g r  r  r5   rv   r  s      r;   r  Worksheet._write_rstring_color  s    ##D5r@   c                 j    U R                   (       d"  U R                  R                  5         SU l         g g )NT)r  r  r  r  s    r;   
_opt_closeWorksheet._opt_close  s*    &&""$&*D# 'r@   c                     U R                   (       a5  U R                  n[        USSS9U l        SU l         U R                  U l        g g )Nza+r  r  F)r  r  r  r  r  )r5   r  s     r;   _opt_reopenWorksheet._opt_reopen  sA    ""--H#H4'JD&+D#&&DG #r@   c                 @   / n[        U5       H  nUR                  SSSS.5        M     US:X  a  SUS   S'   SUS	   S'   US
:X  a  SUS   S'   SUS	   S'   SUS   S'   US:X  a   SUS   S'   SUS	   S'   SUS   S'   SUS   S'   U(       Ga  [        U5      nXQ:  a  US	-
  n[        U5       H  nX&   R                  S5      bT  X&   S   X6   S'   X6   S   n[	        U[
        5      (       a,  UR                  S5      (       a  UR                  S5      X6   S'   X&   R                  S5      (       a@  SnX&   S   U;  a  [        SX&   S    S35        OX&   S   X6   S'   X6   S   S:X  a  SX6   S'   X&   R                  S5      n	U	(       d  M  U	S:X  d  M  SX6   S'   M     U$ )NFr   percent)r  rv  rK  rh   C   rv  r  r   r  K   rI     r  rP  P   <   (   rn   r)  rK  )r  rH  r`  rs  zUnknown icon property type 'z2' for sub-property 'type' in conditional_format().r`  numr  r  T)	r  r  rY  r  rJ  rD  r,  rU  r   )
r5   r@  
user_propspropsrS   max_datar  tmpr  r  s
             r;   rQ  Worksheet._set_icon_props  s     {#ALLeaKL $ ! "E!HW "E!HW! "E!HW "E!HW "E!HW! "E!HW "E!HW "E!HW "E!HW :H&&?8_=$$W-9(2g(>EHW%  (7+C!#s++s0C0C,/JJsO) =$$V,,"PK!}V,K?::=;P:Q RO P
 ,6=+@( 8F+x7/4EHV, &=,,Z88C+/EHZ(9 %< r@   c                     SnUS-   nUS-   nUS-   nSnUS-   nSU4SU4/nU R                   S	:X  a7  UR                  S
U45        UR                  SU45        UR                  S5        U R                  SU5        g )Nz"http://schemas.openxmlformats.org/zspreadsheetml/2006/mainz!officeDocument/2006/relationshipszmarkup-compatibility/2006zhttp://schemas.microsoft.com/zoffice/spreadsheetml/2009/9/acxmlnszxmlns:rrO  zxmlns:mczxmlns:x14ac)zmc:Ignorablex14acry  )r   r  r  )r5   schemar  xmlns_rxmlns_mc	ms_schemaxmlns_x14acr  s           r;   r  Worksheet._write_worksheet  s     622>>773	"BB&G(<=
 %z845}k:;78K4r@   c                    U R                   c  U R                  c  SnGOU R                   cs  U R                  bf  U R                  U R                  :X  a  [        SU R                  5      nO[        SU R                  5      n[        SU R                  5      nUS-   U-   nOU R                   U R                  :X  a;  U R                  U R                  :X  a!  [        U R                   U R                  5      nOH[        U R                   U R                  5      n[        U R                  U R                  5      nUS-   U-   nU R                  SSU4/5        g )Nr  r   rC   	dimensionr|  )r   r   r   r-   r   r  )r5   r|  rG   rH   s       r;   r  Worksheet._write_dimension  s   
 ??"t'> C__$)D
 $//1'4??; +1doo>*1doo>slV+__/DOOt4V#DOOT__EC 'tHF&tHF3,'CK5#,8r@   c                 h    U R                  S5        U R                  5         U R                  S5        g )N
sheetViews)r  _write_sheet_viewr  r  s    r;   r  Worksheet._write_sheet_views<  s,    L) 	 ,'r@   c                    / nU R                   (       d  UR                  S5        U R                  (       a  UR                  S5        U R                  (       d  UR                  S5        U R                  (       a  UR                  S5        U R
                  (       a  UR                  S5        U R                  (       d  UR                  S5        U R                  S:X  a  UR                  S5        O!U R                  S	:X  a  UR                  S
5        U R                  S:w  a  UR                  SU R                  45        U R                  S:w  a  UR                  SU R                  45        U R                  S:X  a.  U R                  (       a  UR                  SU R                  45        U R                  S:X  a  UR                  SU R                  45        U R                  S	:X  a  UR                  SU R                  45        UR                  S5        U R                  (       d  U R                  (       aD  U R                  SU5        U R                  5         U R                  5         U R!                  S5        g U R#                  SU5        g )N)showGridLinesr   )showRowColHeadersr   )	showZerosr   rightToLeftr   )tabSelectedr   showOutlineSymbolsr   r   )r(  
pageLayoutr  )r(  pageBreakPreviewrg   topLeftCellrl   	zoomScaler   zoomScaleNormalzoomScalePageLayoutViewzoomScaleSheetLayoutView)workbookViewIdr   	sheetView)r   r  r   r   r   r   r   r
  r   r   r   r   r   r  _write_panes_write_selectionsr  r  r5   r  s     r;   r
  Worksheet._write_sheet_viewE  s   
 $$23 67 ./   01 ==01 78 >>Q45^^q :; #}d.@.@AB 99{DII67~~"t'='=!!#4dii"@A~~"!!#<dii"HI~~"!!#=tyy"IJ/0::Z8""$k*Z8r@   c                    U R                   nU R                  nU R                  nSU4/nU R                   U R                  :w  a  UR	                  S5        U R
                  (       a  UR	                  S5        U(       a  UR	                  SU45        U(       a  UR	                  SU45        U R                  S:X  a  UR	                  S5        U R                  SU5        g )	NdefaultRowHeightcustomHeightr   )
zeroHeightr   outlineLevelRowoutlineLevelColrO  zx14ac:dyDescentz0.25sheetFormatPr)r   r   r   r   r  r   r   r  )r5   r   	row_level	col_levelr  s        r;   r   Worksheet._write_sheet_format_pr  s    !44**	**	)+=>?
""d&>&>>12""/00)<=0)<=%9:OZ8r@   c                     U R                   (       d  g U R                  S5        [        U R                   R                  5       5      S   nUnU R                   U   nU R                   U	 UnUn[        U R                   R                  5       5       H;  nU R                   U   nXbS-   :X  a	  Xs:X  a  UnM#  U R	                  XU5        UnUnUnM=     U R	                  XU5        XPR                   U'   U R                  S5        g )Ncolsr   r   )r   r  rQ  r  _write_col_infor  )r5   r  r  prev_col_optionsdeleted_coldeleted_col_optionsrR   col_optionss           r;   r  Worksheet._write_cols  s     }}F# DMM..0115	==3MM)$.$--,,./C--,K l"{'F $$Y:JK	$#.  0 	Y2BC &9k"&!r@   c                    Uu  pEpgpSn
SnU(       a  UR                  5       nUc  U(       d  SnSn
OSnOUS:X  a  Sn
US:  ag  SnSnUS:  a/  [        [        XLU-   -  S-   5      [        U5      -  S-  5      S-  nO.[        [        XL-  S-   5      U-   [        U5      -  S-  5      S-  nSUS-   4S	US-   4S
US 4/nU(       a  UR                  SU45        U(       a  UR                  S5        U	(       a  UR                  S5        U
(       a  UR                  S5        U(       a  UR                  SU45        U(       a  UR                  S5        U R	                  SU5        g )Nr   r   ro   r<  rP  r  g      p@r>  r=  r8  r  r`  )r   rQ   )bestFitrQ   )customWidthrQ   outlineLevel)r:  rQ   rR   )_get_xf_indexr3   r2  r  r  )r5   col_mincol_maxr   r8  rQ  r   r;  r:  rb  custom_widthxf_indexra  rb  r  s                  r;   r0  Worksheet._write_col_info  s   BJ?VI "002H = d]L 19OGqyU&?@3FG01 
   U4s:;gE01 
   GaK GaK t&

 w12o../23~u5601E:.r@   c                     U R                   c  U R                  S5        g U R                  S5        U R                  5         U R	                  S5        g )N	sheetData)r   r  r  _write_rowsr  r  s    r;   r  Worksheet._write_sheet_data  sB    ??",,k*r@   c                    U R                   c  U R                  S5        g U R                  S5        SnU R                  R	                  S5        U R                  R                  U5      nU(       a?  U R                  R                  U5        U R                  R                  U5      nU(       a  M?  U R                  R                  5         [        R                  " U R                  5        U R                  S5        g )NrA  i   r   )r   r  r  r  seekreadr  r>  r  r  unlinkr  r  )r5   	buff_sizer  s      r;   r  %Worksheet._write_optimized_sheet_data  s     ??",, I!!!$##((3Dd#'',,Y7 $ ""$IId,,-k*r@   c                     SU R                   4SU R                  4SU R                  4SU R                  4SU R                  4SU R
                  4/nU R                  SU5        g )Nr:  r;  r  r  r   r   pageMargins)r   r   r   r   r   r   r  r   s     r;   r  Worksheet._write_page_margins&  so     T%%&d''(DOO$t))*t))*t))*

 	M:6r@   c                    / nU R                   (       d  g U R                  (       a  UR                  SU R                  45        U R                  S:w  a  UR                  SU R                  45        U R                  (       a-  U R
                  S:w  a  UR                  SU R
                  45        U R                  (       a-  U R                  S:w  a  UR                  SU R                  45        U R                  (       a  UR                  S5        U R                  S:  a  UR                  SU R                  45        U R                  (       a  UR                  S	5        OUR                  S
5        U R                  (       a  UR                  S5        U R                  S:w  a  UR                  S5        U R                  (       a]  U R                  (       a  UR                  SU R                  45        U R                  (       a  UR                  SU R                  45        O\U R                  (       a  UR                  SU R                  45        U R                  (       a  UR                  SU R                  45        U R                  SU5        g )N	paperSizerl   r}  r   
fitToWidthfitToHeight)	pageOrderoverThenDownfirstPageNumber)r   portrait)r   	landscape)blackAndWhiterQ   r   )useFirstPageNumberrQ   horizontalDpiverticalDpi	pageSetup)r   r   r  r   r   r   r   r   r   r   r   r|   r  r  r  r   s     r;   r  Worksheet._write_page_setup3  s   & 
 && ??{DOO<= s"w(8(89: ==T^^q0|T^^<===T__1}doo>? ??;< ??Q0$//BC 9::; 45 ??a9: ""!!?D4G4G"HI  !!=$2C2C"DE  !!=$2C2C"DE""!!?D4G4G"HIK4r@   c                 `   / nU R                   (       d  g U R                  (       a  UR                  S5        U R                  (       a  UR                  S5        U R                  (       a  UR                  S5        U R
                  (       a  UR                  S5        U R                  SU5        g )N)horizontalCenteredr   )verticalCenteredr   )headingsr   )	gridLinesr   printOptions)r   r   r  r   r   r   r  r   s     r;   r  Worksheet._write_print_options  s    
)) <<78 <<56 o. ./NJ7r@   c                    / nU R                   (       d  UR                  S5        U R                  (       d  UR                  S5        U R                  (       af  U R	                  SU5        U R
                  (       a  U R                  5         U R                  (       a  U R                  5         U R                  S5        g U R                  (       a  U R                  SU5        g g )N)scaleWithDocr   )alignWithMarginsr   headerFooter)r   r  r   r   r  r   _write_odd_headerr   _write_odd_footerr  r   r  r   s     r;   r  Worksheet._write_header_footer  s    
((12((56%%
;{{&&({{&&(n-!!
; "r@   c                 <    U R                  SU R                  5        g )N	oddHeader)r  r   r  s    r;   rg  Worksheet._write_odd_header      {DKK8r@   c                 <    U R                  SU R                  5        g )N	oddFooter)r  r   r  s    r;   rh  Worksheet._write_odd_footer  rm  r@   c                 v   U R                  5         [        U R                  U R                  S-   5       GH  nXR                  ;   d%  XR
                  ;   d  U R                  U   (       d  M8  [        US-  5      nX R                  ;   a  U R                  U   nOS nU R                  U   (       a  XR                  ;  a  U R                  X5        OU R                  XU R                  U   5        [        U R                  U R                  S-   5       H;  nX@R                  U   ;   d  M  U R                  U   U   nU R                  XU5        M=     U R                  S5        GM1  XR
                  ;   a"  U R                  XU R                  U   5        GMb  U R                  XU R                  U   5        GM     g )Nr   rO  r'  )_calculate_spansr  r   r   r   r   r   r3   r   
_write_rowr   r   _write_cellr  _write_empty_row)r5   rX  
span_indexr  rY  col_refs         r;   rB  Worksheet._write_rows  sV   T__doo.ABG==(mm+::g&& !2.
/>>*5DD::g&mm36t}}W7MN#($//A:M#N"jj&99&*jj&9'&BG ,,WwG $O
 %%e,-))'w9OP ))'w9OPE Cr@   c                    U R                   nXl         X R                  ;   d#  X R                  ;   d  U R                  U   (       a  S nU R                  U   (       a  X R                  ;  a  U R	                  X#5        OU R	                  X#U R                  U   5        [        U R                  U R                  S-   5       H;  nX@R                  U   ;   d  M  U R                  U   U   nU R                  X$U5        M=     U R                  S5        OU R                  X#U R                  U   5        U R                  R                  5         g )Nr   r'  )r  r   r   r   rs  r  r   r   rt  r  ru  clear)r5   current_row_numrX  r  rY  rw  s         r;   r[  Worksheet._write_single_row  s    ##+mm#w--'?4::gCV Dzz'"--/OOG2OOG4==3IJ$T__doo6IJG**W"55"&**W"5g">((7C  K
 !!%( %%gT]]75KL 	

r@   c                    0 nS nS n[        U R                  U R                  S-   5       GH4  nX@R                  ;   a]  [        U R                  U R
                  S-   5       H6  nXPR                  U   ;   d  M  Uc  UnUnM   [        X%5      n[        X55      nM8     X@R                  ;   an  [        U R                  U R
                  S-   5       HG  nX@R                  ;   d  M  XPR                  U   ;   d  M(  Uc  UnUnM1  [        X%5      n[        X55      nMI     US-   S-  S:X  d  X@R                  :X  d  GM  [        US-  5      nUc  GM  US-  nUS-  nU SU 3X'   S nGM7     Xl
        g )Nr   rO  r   rC   )r  r   r   r   r   r   r>  r=  r   r3   r   )r5   spansspan_minspan_maxrX  rY  rv  s          r;   rr  Worksheet._calculate_spans  sW   
 T__doo.ABG**$$T__doo6IJG**W"55#+'.H'.H'*8'=H'*8'=H  K --'$T__doo6IJG--/G}}W?U4U#+'.H'.H'*8'=H'*8'=H  K 1"a'G,F 2.
'MHMH+3*AhZ(@E%#H= C@ r@   c                 R   SnU(       a  Uu  pgpn
OSu  pgpn
Uc  U R                   nSUS-   4/nU(       a  UR                  5       nU(       a  UR                  SU45        U(       a  UR                  SU45        U(       a  UR                  S5        X`R                  :w  d  X`R                  :X  a$  X`R                   :w  a  UR                  SUS	 45        U(       a  UR                  S
5        X`R                  :w  d  X`R                  :X  a   X`R                   :w  a  UR                  S5        U	(       a  UR                  SU	45        U
(       a  UR                  S5        U R                  S:X  a  UR                  S5        U(       a  U R                  SU5        g U R                  SU5        g )Nr   )NNr   r   r   r  r   r~  s)customFormatr   htg)r   r   r$  r9  )r:  r   rO  r)  r'  )r   r:  r  r   r   _xml_empty_tag_unencoded_xml_start_tag_unencoded)r5   r'  r~  
properties	empty_rowr>  rd  rQ  r   r;  r:  r  s               r;   rs  Worksheet._write_row.  sy   <F9F	<O9F	>,,FC!Gn%
 "002H w./sHo.12---...6=T=T3Ttqz34m,---...6=T=T3T12~u56./%9:))%<))%<r@   c                 &    U R                  XUSS9  g )NT)r  )rs  )r5   r'  r~  r  s       r;   ru  Worksheet._write_empty_rowe  s    J$?r@   c                    [        X5      nSU4/nUR                  (       a.  UR                  R                  5       nUR                  SU45        OXR                  ;   aK  U R                  U   S   (       a4  U R                  U   S   nUR                  SUR                  5       45        OEX R
                  ;   a6  U R
                  U   S   nUb!  UR                  SUR                  5       45        UR                  R                  n	U	S;   a  U R                  UR                  U5        g U	S;   a  UR                  n
U R                  (       d  U R                  X5        g U R                  U
5      n
U
R                  S5      (       a(  U
R                  S5      (       a  U R!                  X5        g [#        U
5      nU R%                  XU5        g U	S:X  a  UR&                  n[)        UR&                  [*        5      (       a(  UR                  S	5        UR&                  (       a  SnOhS
nOe[)        UR&                  [,        5      (       aF  SnUR&                  S:X  a  O3UR&                  U;   a  UR                  S5        OUR                  S5        U R/                  UR0                  X5        g U	S:X  a  UR2                  S:X  a  UR                  S5         [5        UR&                  5        U R9                  SU5        U R;                  UR0                  UR<                  5        U R?                  UR&                  5        U RA                  S5        g U	S:X  a  U RC                  SU5        g U	S:X  aP  UR                  S	5        U R9                  SU5        U R?                  URD                  5        U RA                  S5        g U	S:X  am  UR                  S5        UR                  SUR&                  45        U R9                  SU5        U R?                  URF                  5        U RA                  S5        g g ! [6         a    UR                  S5         GNff = f)Nr  r  r   r  rJ  z<r>z</r>r]   )r  r  r   )rg  z#N/Az#NAME?z#NULL!rf  z#REF!r  rg   )r  e)r  rD  r`   r  )cmr   crW   r\   rY   vm)$r.   rX   r:  r  r   r   r%  rT  _xml_number_elementr`  rP  rz   _xml_string_element_escape_control_charactersr,  r.  _xml_rich_inline_stringr&   _xml_inline_stringrv  rJ  rB  rD  _xml_formula_elementrs  r  r2  r4   r  _write_cell_array_formular  _write_cell_valuer  r  r  r  )r5   r'  rR   rZ  r  r  r>  row_xfcol_xftype_cell_namerP  r  rv  error_codess                 r;   rt  Worksheet._write_celli  s    ,C5
J'(
;;{{002HsHo.MM!dmmC&8&;]]3'*FsF$8$8$:;<MM!]]3'*F!!!3(<(<(>"?@00 33$$T[[*=77[[F''((<
 88@ $$U++0G0G00D  4F;H++FjIy(JJE$**d++!!*-::EEDJJ,, ::#ZZ;.%%j1%%l3%%dllEF~- zzY&!!),0djj!
 Z0**4<<D""4::.c"w&Z0y(j)Z0""4<<0c"w&j)tTZZ01Z0""4::.c" '+  0!!,/0s   P* *Q	Q	c                 2    Uc  SnU R                  SU5        g )Nrg   vr  )r5   rv  s     r;   r  Worksheet._write_cell_value  s    =EsE*r@   c                 4    SSU4/nU R                  SX5        g )N)r  arrayr|  r6  r  )r5   rs  r  r  s       r;   r  #Worksheet._write_cell_array_formula  s!    $uj&9:
sG8r@   c                    / nU R                   (       dE  U R                  (       d4  U R                  (       d#  U R                  (       d  U R                  (       d  g U R                  (       a  UR                  SU R                  45        U R                  (       a  UR                  S5        U R                   (       d"  U R                  (       d  U R                  (       aT  U R                  SU5        U R                  5         U R                  5         U R                  5         U R                  S5        g U R                  SU5        g )NcodeName)
filterModer   sheetPr)r   r   r   r   r  r  r  _write_tab_color_write_outline_pr_write_page_set_up_prr  r  r   s     r;   r  Worksheet._write_sheet_pr  s    
 NNNN((%%z4+<+<=>>>/0==DNNd.B.B	:6!!#""$&&(i(	:6r@   c                 R    U R                   (       d  g S/nU R                  SU5        g )N)	fitToPager   pageSetUpPr)r   r  r   s     r;   r  Worksheet._write_page_set_up_pr  s$    }}&'
M:6r@   c                 l    U R                   nU(       d  g U R                  SUR                  5       5        g )NtabColor)r   _write_colorr  r  s     r;   r  Worksheet._write_tab_color  s*    *e&7&7&9:r@   c                 `   / nU R                   (       d  g U R                  (       a  UR                  S5        U R                  (       d  UR                  S5        U R                  (       d  UR                  S5        U R
                  (       d  UR                  S5        U R                  SU5        g )N)applyStylesr   )summaryBelowr   )summaryRightr   r  	outlinePr)r   r   r  r   r   r   r  r   s     r;   r  Worksheet._write_outline_pr  s    
##01!!12!!1278K4r@   c                     U R                  U R                  5      nU(       d  g [        U5      nSU4SU4/nU R                  SU5        U H  nU R	                  US5        M     U R                  S5        g )Nr  manualBreakCount	rowBreaksi?  )r  r   rY  r  
_write_brkr  )r5   page_breaksr  r  rX  s        r;   r  Worksheet._write_row_breaks+  sy    ++DLL9K  e'


 	K4"GOOGU+ # 	+&r@   c                     U R                  U R                  5      nU(       d  g [        U5      nSU4SU4/nU R                  SU5        U H  nU R	                  US5        M     U R                  S5        g )Nr  r  	colBreaksi )r  r   rY  r  r  r  )r5   r  r  r  rY  s        r;   r  Worksheet._write_col_breaks@  sy    ++DLL9K  e'


 	K4"GOOGW- # 	+&r@   c                 :    SU4SU4S/nU R                  SU5        g )Nrs  r=  )manr   brkr  )r5   brk_idbrk_maxr  s       r;   r  Worksheet._write_brkU  s'    Vnug&6
C
E:.r@   c                     U R                   n[        U5      nU(       d  g SU4/nU R                  SU5        U H  nU R                  U5        M     U R	                  S5        g )Nr  
mergeCells)r   rY  r  _write_merge_cellr  )r5   r   r  r  merged_ranges        r;   r  Worksheet._write_merge_cells[  s`    zzL!&'
L*5(L""<0 ) 	,'r@   c                 x    Uu  p#pE[        X#5      n[        XE5      nUS-   U-   nSU4/n	U R                  SU	5        g )NrC   r|  	mergeCell)r-   r  )
r5   r  row_minr;  row_maxr<  rG   rH   r|  r  s
             r;   r  Worksheet._write_merge_cellm  sK    /;,7 #74"74slV#cl^
K4r@   c                 Z   [        U R                  R                  5       5      nU(       d  g U R                  S5        U GHW  n[        U R                  U   R                  5       5      nU GH&  nU R                  U   U   nU R                  (       a^  U R                  U   (       aJ  U R                  U   U   (       a3  U R                  U   U   nUR
                  R                  S:w  a  SUl        UR                  [        R                  [        R                  4;   aa  U =R                  S-  sl        U R                  X$U R                  U5        U R                  R                  SUR!                  5       S/5        GM  U R#                  X$U5        GM)     GMZ     U R%                  S5        g )Nr  r[   Tr   r  External)rQ  r  r  r  r   r%  rT  _is_object_link
_link_typer   URLEXTERNALr   _write_hyperlink_externalr   r  r)  _write_hyperlink_internalr  )r5   r~  rX  r  rY  r  rZ  s          r;   r  Worksheet._write_hyperlinksz  sV    $//..01  	L)  Gdoog6;;=>H $oog.w7 ::$**W"5$**W:Mg:V::g.w7D~~..(:.2+>>hllH4E4E%FFNNa'N22$..#
 --44%s{{}jA
 227SI3 $  @ 	,'r@   id_numc                 ~   [        X5      nS[        U5      -   nSU4SU4/nUR                  (       a  UR                  SUR                  45        UR                  (       a  UR                  SUR
                  45        UR                  (       a  UR                  SUR                  45        U R                  SU5        g )NrIdr|  r:idr  displaytooltipr  )r-   rD  r  r  r  r  r  r  )r5   r'  rR   r  r  r|  r_idr  s           r;   r  #Worksheet._write_hyperlink_external  s      )s6{"clVTN3
;;z3;;78y#))4588y#((34K4r@   c                     [        X5      nSU4SUR                  4/nUR                  (       a  UR                  SUR                  45        UR                  SUR                  45        U R                  SU5        g )Nr|  r  r  r  r  )r-   r+  r  r  r  r  )r5   r'  rR   r  r|  r  s         r;   r  #Worksheet._write_hyperlink_internal  sh    )clZ$;<
88y#((349cii01K4r@   c                     U R                   (       d  g SU R                   4/nU R                  (       a4  U R                  SU5        U R                  5         U R	                  S5        g U R                  SU5        g )Nr|  
autoFilter)r   r   r  _write_autofiltersr  r  r   s     r;   r  Worksheet._write_auto_filter  sd    ""d1123
>>j9##%l+ j9r@   c                     U R                   u  p[        XS-   5       HF  nX0R                  ;  a  M  U R                  U   nU R                  U   nU R	                  X1-
  XT5        MH     g r  )r   r  r   r   _write_filter_column)r5   col1col2rR   r  r   s         r;   r  Worksheet._write_autofilters  si     ((ax(C*** %%c*F**3/K %%cj+F )r@   c                     SU4/nU R                  SU5        US:X  a  U R                  U5        OU R                  U5        U R                  S5        g )NcolIdfilterColumnr   )r  _write_filters_write_custom_filtersr  )r5   r  r   r  r  s        r;   r  Worksheet._write_filter_column  sS    '(
NJ7!( &&w/.)r@   c                    U Vs/ s H$  n[        U5      R                  5       S:w  d  M"  UPM&     nn/ n[        U5      [        U5      :w  a  S/n[        U5      S:X  a"  [        U5      S:X  a  U R                  SU5        g U R	                  SU5        [        U5       H  nU R                  U5        M     U R                  S5        g s  snf )Nr   )rl  r   r   r   r  )rD  r  rY  r  r  rQ  _write_filterr  )r5   r  filter
non_blanksr  r}  s         r;   r  Worksheet._write_filters  s    +2V7c&k6G6G6IX6Uf7
V
w<3z?*&Jw<1ZA!5	:6 	:6$Z0
"":. 1 i(! Ws
   !CCc                 2    SU4/nU R                  SU5        g )Nr  r  r  r  s      r;   r  Worksheet._write_filter  s    cl^
Hj1r@   c                 P   [        U5      S:X  a2  U R                  S5        U R                  " U6   U R                  S5        g / nUS   S:X  a  S/nOS/nU R                  SU5        U R                  US   US   5        U R                  US   US   5        U R                  S5        g )	Nr  customFiltersr   )andr   )r  r   r   rh   r  )rY  r  _write_custom_filterr  )r5   r  r  s      r;   r  Worksheet._write_custom_filters  s    v;!0%%v.o. J ayA~(\
(\
 <%%fQi;%%fQi;o.r@   c                     / nSSSSSSSS.nXA   b  XA   nO[        SU 35        US:w  a  UR                  S	U45        UR                  S
U45        U R                  SU5        g )Nr  r  r  r  r  r  )r   r  rh   r  rP  r  r  zUnknown operator = r   r  customFilter)r   r  r  )r5   r   r  r  r  s        r;   r  Worksheet._write_custom_filter/  s    
  #
	 * *H&xj12 wz8455#,'NJ7r@   c                 >   / nU R                   (       d  g U R                   nUS   (       a  UR                  SUS   45        US   (       a  UR                  S5        US   (       a  UR                  S5        US   (       d  UR                  S5        US   (       d  UR                  S	5        US
   (       a  UR                  S5        US   (       a  UR                  S5        US   (       a  UR                  S5        US   (       a  UR                  S5        US   (       a  UR                  S5        US   (       a  UR                  S5        US   (       a  UR                  S5        US   (       a  UR                  S5        US   (       d  UR                  S5        US   (       a  UR                  S5        US   (       a  UR                  S5        US    (       a  UR                  S!5        US"   (       d  UR                  S#5        U R                  S$U5        g )%Nr  r  )r  r   r  )r  r   r  )r  r   r  )r  r   r   )formatCellsr   r  )formatColumnsr   r  )
formatRowsr   r  )insertColumnsr   r  )
insertRowsr   r  )insertHyperlinksr   r  )deleteColumnsr   r  )
deleteRowsr   r  )selectLockedCellsr   r	  )r	  r   r}  )r  r   r
  )pivotTablesr   r  )selectUnlockedCellsr   sheetProtection)r   r  r  )r5   r  r  s      r;   r  !Worksheet._write_sheet_protectionJ  s   
##&&:z7:+>?@7l+9n-y!n-{#./>"01#$23=!/0#$23=!/0&'56#$23=!/0,-676?k*< /0>"01./89-z:r@   c                     U R                   S:X  a  g U R                  S5        U R                   H  u  pnU R                  XU5        M     U R	                  S5        g )Nr   protectedRanges)r   r  r   _write_protected_ranger  r  s       r;   r  !Worksheet._write_protected_rangesz  sY    $$)-.040E0E,JH''
I 1F 	+,r@   c                     / nU(       a  UR                  SU45        UR                  SU45        UR                  SU45        U R                  SU5        g )Nr  r  rv   protectedRanger  r  )r5   r  r  r  r  s        r;   r   Worksheet._write_protected_range  sT    
z8457J/06:./,j9r@   c                     U R                   (       d  g U =R                  S-  sl        U R                  U R                  5        g r  )r   r   _write_drawingr  s    r;   r  Worksheet._write_drawings  s,    ||!DNN+r@   c                 N    S[        U5      -   nSU4/nU R                  SU5        g )Nr  r  r   rD  r  )r5   r  r  r  s       r;   r  Worksheet._write_drawing  s,    s:&tn%
Iz2r@   c                     U R                   (       d  g U =R                  S-  sl        S[        U R                  5      -   nSU4/nU R                  SU5        g )Nr   r  r  legacyDrawing)r   r   rD  r  r5   r  r  s      r;   r  Worksheet._write_legacy_drawing  sK    || 	!s4>>**tn%
OZ8r@   c                     U R                   (       d  g U =R                  S-  sl        S[        U R                  5      -   nSU4/nU R                  SU5        g )Nr   r  r  legacyDrawingHF)r   r   rD  r  r&  s      r;   r  "Worksheet._write_legacy_drawing_hf  sN    "" 	!s4>>**tn%
-z:r@   c                     U R                   (       d  g U =R                  S-  sl        S[        U R                  5      -   nSU4/nU R                  SU5        g )Nr   r  r  picture)r  r   rD  r  r&  s      r;   r  Worksheet._write_picture  sM    $$ 	!s4>>**tn%
Iz2r@   c                     U R                   n[        U5      nU(       d  g SU4/nU R                  SU5        U H  nU R                  U5        M     U R	                  S5        g )Nr  dataValidations)r  rY  r  _write_data_validationr  )r5   r  r  r  
validations        r;   r  !Worksheet._write_data_validations  sd    &&K &'
-z:%J''
3 & 	+,r@   c                 \   Sn/ nUS    H0  nUS:w  a  US-  nUu  pVpxXW:  a  XupuXh:  a  XpU[        XVXx5      -  nM2     UR                  S5      (       a  US   nUS   S:w  a5  UR                  SUS   45        US   S	:w  a  UR                  S
US   45        SU;   a4  US   S:X  a  UR                  S5        US   S:X  a  UR                  S5        US   (       a  UR                  S5        US   (       d  UR                  S5        US   (       a  UR                  S5        US   (       a  UR                  S5        SU;   a  UR                  SUS   45        SU;   a  UR                  SUS   45        SU;   a  UR                  SUS   45        SU;   a  UR                  SUS   45        UR                  S U45        US   S:X  a  U R                  S!U5        g U R	                  S!U5        U R                  US"   5        US#   b  U R                  US#   5        U R                  S!5        g )$Nrg   r  ro  r  r  r  rK  r  r  r   r  r   )
errorStyler  r  )r4  r  r  )
allowBlankr   r  )showDropDownr   r  )showInputMessager   r  )showErrorMessager   r  
errorTitler  r  r  promptTitler  promptr  dataValidationrv  r  )r,   r  r  r  r  _write_formula_1_write_formula_2r  )	r5   r  r  r  r  	row_firstr  row_lastr  s	            r;   r0   Worksheet._write_data_validation  sg   
 W%E{9>6Y8 #)1H#)1HXiHGGE &  ;;}%%M*E:&(vwz':;<z"i/!!:wz/B"CD7"|$)!!";<|$)!!"?@>"/0z"12< 56< 56G#|W]-CDEg%w(@ABG#}gm.DEFg%x)ABC7E*+:&( 0*= 0*= !!''"23 y!-%%gi&89./r@   c                    [        U[        5      (       a  U R                  " U6 nSU S3nO [        U5        U R                  SU5        g ! [         a*    UR                  S5      (       a  UR                  S5      n NFf = f)Nr  r)  formula1)rJ  r  r  r2  r4   r,  rU  r  r5   rs  s     r;   r=  Worksheet._write_formula_1(  s{     gt$$nng.G'!nG2g 	z73  2%%c**%nnS1G2s   A 1A?>A?c                      [        U5        U R	                  SU5        g ! [         a*    UR                  S5      (       a  UR                  S5      n NFf = f)Nr)  formula2r2  r4   r,  rU  r  rD  s     r;   r>  Worksheet._write_formula_29  sQ    	.'N 	z73  	.!!#&&!..-	.     1AAc                     [        U R                  R                  5       5      nU(       d  g U H!  nU R                  X R                  U   5        M#     g r  )rQ  r  r  _write_conditional_formatting)r5   r  
cond_ranges      r;   r  $Worksheet._write_conditional_formatsF  sG    ))..01 J..--j9 !r@   c                     SU4/nU R                  SU5        U H  nU R                  U5        M     U R                  S5        g )Nr  conditionalFormatting)r  _write_cf_ruler  )r5   rM  paramsr  params        r;   rL  'Worksheet._write_conditional_formattingR  sI    
+,
3Z@E&  	12r@   c                 	   SUS   4/nSU;   a  US   b  UR                  SUS   45        UR                  SUS   45        UR                  S5      (       a  UR                  S5        US   S:X  a  UR                  SUS	   45        U R                  S
U5        SU;   a/  SU;   a)  U R                  US   5        U R                  US   5        OU R                  US   5        U R	                  S
5        g US   S:X  a  [
        R                  " SUS	   5      (       a  UR                  S5        [
        R                  " SUS	   5      (       a  UR                  S5        [
        R                  " SUS	   5      (       a<  [
        R                  " SUS	   5      nUR                  SUR                  S5      45        U R                  S
U5        g US   S:X  ak  S	U;   a  US	   S:X  a  UR                  S5        SU;   a  UR                  S5        US   =(       d    SnUR                  SU45        U R                  S
U5        g US   S:X  a  U R                  S
U5        g US   S:X  a  U R                  S
U5        g US   S :X  d  US   S!:X  d  US   S":X  d	  US   S#:X  ad  UR                  SUS	   45        UR                  S$US   45        U R                  S
U5        U R                  US%   5        U R	                  S
5        g US   S&:X  aN  UR                  S&US	   45        U R                  S
U5        U R                  US%   5        U R	                  S
5        g US   S':X  d  US   S(:X  d  US   S):X  d	  US   S*:X  a8  U R                  S
U5        U R                  US%   5        U R	                  S
5        g US   S+:X  a5  U R                  S
U5        U R                  U5        U R	                  S
5        g US   S,:X  a\  U R                  S
U5        U R                  U5        UR                  S-5      (       a  U R                  U5        U R	                  S
5        g US   S.:X  a8  U R                  S
U5        U R                  US	   5        U R	                  S
5        g US   S/:X  a5  U R                  S
U5        U R                  U5        U R	                  S
5        g g )0NrK  rX   dxfIdrC  r  )
stopIfTruer   r  r   r  cfRuler  r  rv  r  below)r  r   r  )equalAverager   z[123] std devz([123]) std devr}  r   r  r  )r  r   r  )r  r   r  rankr  r  r  rE  r  r  r  rs  r  r  r  r  r  rG  r  rD  r  r  )r  r  r  _write_formula_elementr  r/  r|  groupr  _write_color_scale_write_data_bar_write_data_bar_ext_write_icon_set)r5   rR  r  r0  r[  s        r;   rQ  Worksheet._write_cf_rule[  s   vf~./
v&"2">wx(89::vj'9:;::n%%/0&>X%z6*+=>?*5F"yF':++F9,=>++F9,=>++F7O<h'F^~-yy&"455!!"56yy&"455!!"56yy&*<==		"3VJ5GH!!8U[[^"<=*5F^w&V#z(:c(A!!.1f$!!-0'?(bDvtn-*5F^00*5F^~-*5 6Nn,f~!22f~-f~+z6*+=>?vvg78*5''y(9:h'F^|+|VJ-?@A*5''y(9:h' 6N..f~!44f~!11f~!44*5''y(9:h'F^|+*5##F+h'F^y(*5  (zz,--((0h'F^|+*5''z(:;h'F^y(*5  (h' )r@   c                      [        U5        U R	                  SU5        g ! [         a*    UR                  S5      (       a  UR                  S5      n NFf = f)Nr)  rs  rH  rD  s     r;   r\   Worksheet._write_formula_element  sQ    	.'N 	y'2  	.!!#&&!..-	.rJ  c                    U R                  S5        U R                  US   US   5        US   b  U R                  US   US   5        U R                  US   US   5        U R                  SUS	   R                  5       5        US
   b#  U R                  SUS
   R                  5       5        U R                  SUS   R                  5       5        U R	                  S5        g )NrG  r  r  r  r  r  r  r  r  r  r  )r  _write_cfvor  r  r  )r5   rS  s     r;   r^  Worksheet._write_color_scale  s     	L)z*E+,>?(U:.k0BCz*E+,>?'5#5#A#A#CD)gu['9'E'E'GH'5#5#A#A#CD,'r@   c                    / nSU;   a  UR                  SUS   45        SU;   a  UR                  SUS   45        UR                  S5      (       a  UR                  S5        U R                  SU5        U R                  US   US	   5        U R                  US
   US   5        U R	                  SUS   R                  5       5        U R                  S5        g )Nr  	minLengthr  	maxLengthr  	showValuer   r  r  r  r  r  r  r  )r  r  r  rf  r  r  r  )r5   rS  r  s      r;   r_  Worksheet._write_data_bar  s    
 5 {E,,?@A5 {E,,?@A99Z  ./Iz2z*E+,>?z*E+,>?'5#5#A#A#CD)$r@   c                 H   U R                   S-   n[        U R                  5      S-   nSX#4-  nXAS'   U R                  R                  U5        U R	                  S5        U R                  S5        U R                  SU5        U R                  S5        U R                  S5        g )Nr   z{DA7ABA51-AAAA-BBBB-%04X-%012X}guidextLstz&{B025F937-C7B1-47D3-B67F-A62EFF666E3E}zx14:idext)rw   rY  r  r  r  
_write_extr  r  )r5   rS  worksheet_countdata_bar_countro  s        r;   r`  Worksheet._write_data_bar_ext   s     **q.T001A50O3TT f""5)H%@Ax.% (#r@   c                 n   / nUS   S:w  a  SUS   4/nUR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        U R                  SU5        [        US   5       H  nU R	                  US	   US
   US   5        M!     U R                  S5        g )Nr  r3  r  r  rk  r  )r  r   r  rK  rv  r  )r  r  r  reversedrf  r  )r5   rS  r  icons       r;   ra  Worksheet._write_icon_set  s    
 "22$eL&9:;J99\""./99_%%n-Iz2 U7^,DT&\4=$z:JK - 	)$r@   c                     SU4/nUb  UR                  SU45        U(       a  UR                  S5        U R                  SU5        g )NrK  r  )gter   cfvor  )r5   cf_typer  r  r  s        r;   rf  Worksheet._write_cfvo(  sG    w'(
?ucl+j)FJ/r@   c                 &    U R                  X5        g r  r  r  s      r;   r  Worksheet._write_color4  s    D-r@   c                 H    U R                    H  nU R                  " U6   M     g r  )r   _write_selection)r5   	selections     r;   r  Worksheet._write_selections8  s    I!!9- )r@   c                     / nU(       a  UR                  SU45        U(       a  UR                  SU45        U(       a  UR                  SU45        U R                  SU5        g )Nr  
activeCellr  r  r  )r5   r  r  r  r  s        r;   r  Worksheet._write_selection=  sX    
vtn-|[9:w./K4r@   c                 |    U R                   nU(       d  g US   S:X  a  U R                  " U6   g U R                  " U6   g )Nr  r  )r   _write_split_panes_write_freeze_panes)r5   r   s     r;   r  Worksheet._write_panesL  s8    

8q=##U+$$e,r@   c                 >   / nUnUn[        X45      n	Sn
SnSnSnU R                  (       a  U R                  S   u  pn/ U l        U(       az  U(       as  Sn
[        US5      n[        SU5      nU R                  R                  SUU/5        U R                  R                  SX/5        U R                  R                  SX/5        OFU(       a   Sn
U R                  R                  SX/5        OSn
U R                  R                  SX/5        US:X  a  SnOUS:X  a  SnOS	nU(       a  UR                  S
U45        U(       a  UR                  SU45        UR                  SU	45        UR                  SU
45        UR                  SU45        U R                  SU5        g )Nrg   r   bottomRighttopRight
bottomLeftfrozenr   frozenSplitrE   xSplitySplitr  
activePanestater  )r-   r   r  r  )r5   r'  rR   r  r  r  r  y_splitx_splitr   r   r  r  r  rS   row_cellcol_cells                    r;   r  Worksheet._write_freeze_panesX  s    
)'< ??&*ooa&8#QU DO 3'K(a0H(C0HOO""J(#CDOO""L(#EFOO""M;#FG$KOO""J#CD 'KOO""L+#EF >E!^!EEx12x12=-89<567E*+FJ/r@   c                    / nSnSnSn	Sn
UnUnU R                   (       a  U R                   S   u  pYn
/ U l         SnU(       a  [        SU-  S-   5      nU(       a  U R                  U5      nX1:X  a9  XB:X  a4  [        SUS-
  S-  S-  -   5      n[        SUS	-
  S-  S
-  S-  S-  -   5      n[        X45      nU(       d  Un	Un
U(       ay  U(       ar  Sn[        US5      n[        SU5      nU R                   R	                  SX/5        U R                   R	                  SX/5        U R                   R	                  SX/5        OFU(       a   SnU R                   R	                  SX/5        OSnU R                   R	                  SX/5        U(       a  UR	                  SUS 45        U(       a  UR	                  SUS 45        UR	                  SU45        U(       a  UR	                  SU45        U R                  SU5        g )NFrg   r   Trn   i,  r  rm     rh   r  rp   r  r  r  r  r  r  r  r  r  )r   r3   _calculate_x_split_widthr-   r  r  )r5   r'  rR   r  r  rS   r  has_selectionr   r  r  r  r  r   r  r  s                   r;   r  Worksheet._write_split_panes  s   
 ??&*ooa&8#QU DO M "w,,-G33G<G
 >ho#3" 4r 99:G3'C-2!5!9A!=!BBCH)'< 'K!E 3'K(!4H(H5HOO""J#CDOO""L(#EFOO""M;#FG$KOO""J#CD 'KOO""L+#EF xGD>;<xGD>;<=-89|[9:FJ/r@   c                     SnSnUS:  a  [        XU-   -  S-   5      nO[        X-  S-   5      U-   nUS-  S-  nUS-  nUS-   nU$ )	Nr<  rP  r   r  rh   r  rn   r  )r3   )r5   r8  ra  rb  rc  pointstwipss          r;   r  "Worksheet._calculate_x_split_width  so      19G";<sBCF0367'AF !a  r@   c                    U R                   n[        U5      nU(       d  g SU4/nU R                  SU5        U H3  nU =R                  S-  sl        U R	                  U R                  5        M5     U R                  S5        g )Nr  
tablePartsr   )r   rY  r  r   _write_table_partr  )r5   r   r  r  rS   s        r;   r  Worksheet._write_table_parts  s|    F  

 	L*5ANNaN""4>>2 
 	,'r@   c                 N    S[        U5      -   nSU4/nU R                  SU5        g )Nr  r  	tablePartr"  r&  s      r;   r  Worksheet._write_table_part	  s8     s4y  

 	K4r@   c                    [        U R                  5      n[        U R                  5      nU(       d  U(       d  g U R                  S5        U(       a  U R	                  5         U(       a  U R                  5         U R                  S5        g )Nrp  )rY  r  r   r  _write_ext_list_data_bars_write_ext_list_sparklinesr  )r5   has_data_barshas_sparkliness      r;   r  Worksheet._write_ext_list  sd    D//0T__-^ 	H%**,++-(#r@   c                     U R                  S5        U R                  S5        U R                   H  nU R                  U5        M     U R	                  S5        U R	                  S5        g )Nz&{78C0D931-6437-407d-A8EE-F0AAD7539E65}zx14:conditionalFormattingsrq  )rr  r  r  "_write_conditional_formatting_2010r  )r5   r
  s     r;   r  #Worksheet._write_ext_list_data_bars*  s]    @A89 ++H33H= , 	67% r@   c                 l   SnSU4/nU R                  SU5        U R                  U5        U R                  U5        U R                  US   US   5        U R                  US   US   5        US   (       d  U R	                  US	   5        US
   (       d  U R                  US   5        US   (       d  US   (       d  U R                  US   5        US   S:w  a  U R                  US   5        U R                  S5        U R                  S5        U R                  SUS   5        U R                  S5        g )N3http://schemas.microsoft.com/office/excel/2006/mainxmlns:xmzx14:conditionalFormattingrK  r  rM  r  r  r  r  r  r  r  r  r  r  x14:dataBar
x14:cfRulexm:sqrefr  )
r  _write_x14_cf_rule_write_x14_data_bar_write_x14_cfvo_write_x14_border_color_write_x14_negative_fill_color _write_x14_negative_border_color_write_x14_axis_colorr  r  )r5   r
  xmlns_xmr  s       r;   r  ,Worksheet._write_conditional_formatting_20108  sC   H!8,-
7D 	) 	  * 	Xn5x7LMXn5x7LM(((2D)EF 12//9M0NO )=>11(;V2WX '(F2&&x0@'AB-(,' 	z8G+<=56r@   c                 F    SnUS   nSU4SU4/nU R                  SU5        g )Nr  ro  rK  rs  r  r  )r5   r
  	rule_typero  r  s        r;   r  Worksheet._write_x14_cf_rulee  s4    	y)D$<8
L*5r@   c                    SnSnSU4SU4/nUS   (       d  UR                  S5        US   (       a  UR                  S5        US	   S
:X  a  UR                  S5        US	   S:X  a  UR                  S5        US   (       a  UR                  S5        US   (       d  US   (       d  UR                  S5        US   S:X  a  UR                  S5        US   S:X  a  UR                  S5        U R                  SU5        g )Nr   rl   ri  rj  r  )borderr   r  )gradientr   r  r:  )r  leftToRightr;  )r  r  r  )negativeBarColorSameAsPositiver   r  )$negativeBarBorderColorSameAsPositiver   r  middle)axisPositionr  r  )r  r  r  )r  r  )r5   r
  r  r  r  s        r;   r  Worksheet._write_x14_data_barm  s   

 *%*%


 (m,K o.O$.:;O$/:;-.CD )=>IJ'(H489'(F267M:6r@   c                     SU4/nUS;   a  U R                  SU5        g U R                  SU5        U R                  SU5        U R                  S5        g )NrK  )r>  r=  rJ  rL  zx14:cfvoxm:f)r  r  r  r  )r5   r  rv  r  s       r;   r  Worksheet._write_x14_cfvo  sV    y)*
<<
J7
J7""651j)r@   c                 D    U R                  SUR                  5       5        g )Nzx14:borderColorr  r  r  s     r;   r  !Worksheet._write_x14_border_color  s    +U->->-@Ar@   c                 D    U R                  SUR                  5       5        g )Nzx14:negativeFillColorr  r  r  s     r;   r  (Worksheet._write_x14_negative_fill_color  s    3U5F5F5HIr@   c                 D    U R                  SUR                  5       5        g )Nzx14:negativeBorderColorr  r  s     r;   r  *Worksheet._write_x14_negative_border_color  s    5u7H7H7JKr@   c                 D    U R                  SUR                  5       5        g )Nzx14:axisColorr  r  s     r;   r  Worksheet._write_x14_axis_color  s    OU->->-@Ar@   c                    U R                  S5        U R                  5         [        U R                  5       H  nU R	                  U5        U R                  US   5        U R                  US   5        U R                  5         U R                  US   5        U R                  US   5        U R                  US   5        U R                  US   5        U R                  US   5        US	   (       a  U R                  S
US	   5        U R                  U5        U R                  S5        M     U R                  S5        U R                  S5        g )Nz&{05C60535-1F16-4fd2-B633-F4F36F0B64E0}r  r  r  r  r  r  r  r  r  x14:sparklineGroupx14:sparklineGroupsrq  )rr  _write_sparkline_groupsrw  r   _write_sparkline_group_write_color_series_write_color_negative_write_color_axis_write_color_markers_write_color_first_write_color_last_write_color_high_write_color_lowr  _write_sparklinesr  )r5   r  s     r;   r  $Worksheet._write_ext_list_sparklines  s=   @A 	$$& "$//2I''	2 $$Y~%>? &&y1A'BC ""$ %%i&@A ##Im$<= ""9\#:; ""9\#:; !!)K"89%&&vy/EF""9-23C 3F 	/0% r@   c                    U R                  S5        [        US   5       HY  nUS   U   nUS   U   nU R                  S5        U R                  SU5        U R                  SU5        U R                  S5        M[     U R                  S5        g )Nzx14:sparklinesr  r  r  zx14:sparkliner  r  )r  r  r  r  )r5   r  r  r  r  s        r;   r  Worksheet._write_sparklines  s     	,-y)*A#H-a0K -a0H0""6;7"":x8o. + 	*+r@   c                 F    SnUS-   nSU4SU4/nU R                  SU5        g )Nz$http://schemas.microsoft.com/office/zspreadsheetml/2009/9/mainz	xmlns:x14urirq  r  )r5   r  r  	xmlns_x14r  s        r;   rr  Worksheet._write_ext  s<    788	 )$CL


 	E:.r@   c                 6    SnSU4/nU R                  SU5        g )Nr  r  r  r  )r5   r  r  s      r;   r  !Worksheet._write_sparkline_groups  s%    H!8,-
1:>r@   c                    UR                  S5      n/ nUR                  S5      b*  US   S:X  a  SUS'   OUR                  SUS   45        SUS'   UR                  S5      b*  US   S:X  a  SUS'   OUR                  S	US   45        SUS'   US
   S:w  a  UR                  S
US
   45        UR                  S5      (       a  UR                  SUS   45        UR                  S5      (       a  UR                  S5        U(       a  UR                  SU45        UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S5        UR                  S5      (       a  UR                  S 5        UR                  S5      (       a  UR                  S!US   45        UR                  S5      (       a  UR                  S"US   45        UR                  S#5      (       a  UR                  S$5        U R                  S%U5        g )&Nr  r=  r]  cust_max	manualMaxr  r>  cust_min	manualMinrK  r  r  
lineWeightr  )dateAxisr   displayEmptyCellsAsr  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )displayXAxisr   r   )displayHiddenr   minAxisTypemaxAxisTyper  r  r  )r  r  r  )r5   r  r  r  s       r;   r   Worksheet._write_sparkline_group   s   0 G$
;;u)u~(&-
#!!;"?@&.
#;;u)u~(&-
#!!;"?@&.
# 6?f$vwv78;;x  |WX->?@;;{##o.4e<=;;y!!n-;;vk*;;uj);;wl+;;vk*;;z""o.;;v12;;x  23;;z""}gj.ABC;;z""}gj.ABC;;y!!010*=r@   c                 R    U(       a   U R                  XR                  5       5        g g r  r  )r5   tagr  s      r;   _write_spark_colorWorksheet._write_spark_color[   s!    c#4#4#67 r@   c                 (    U R                  SU5        g )Nzx14:colorSeriesr  r  s     r;   r  Worksheet._write_color_series`   s     159r@   c                 (    U R                  SU5        g )Nzx14:colorNegativer  r  s     r;   r  Worksheet._write_color_negatived   s     3U;r@   c                 :    U R                  S[        S5      5        g )Nzx14:colorAxisrN  )r  r   r  s    r;   r  Worksheet._write_color_axish   s    y1ABr@   c                 (    U R                  SU5        g )Nzx14:colorMarkersr  r  s     r;   r  Worksheet._write_color_markersl   s     2E:r@   c                 (    U R                  SU5        g )Nzx14:colorFirstr  r  s     r;   r  Worksheet._write_color_firstp   s     0%8r@   c                 (    U R                  SU5        g )Nzx14:colorLastr  r  s     r;   r  Worksheet._write_color_lastt       7r@   c                 (    U R                  SU5        g )Nzx14:colorHighr  r  s     r;   r  Worksheet._write_color_highx   r  r@   c                 (    U R                  SU5        g )Nzx14:colorLowr  r  s     r;   r  Worksheet._write_color_low|   s    6r@   c                 0    SS/nU R                  SU5        g )N)fontId0)rK  noConversion
phoneticPrr  r   s     r;   r  Worksheet._write_phonetic_pr   s#     $


 	L*5r@   c                    U R                   (       d  g U R                  S5        U R                   R                  S5      (       a!  U R                   S   nU R                  SU5        U R                   R                  S5      (       a!  U R                   S   nU R                  SU5        U R                   R                  S5      (       a!  U R                   S   nU R                  SU5        U R                   R                  S5      (       a!  U R                   S   nU R                  S	U5        U R                   R                  S
5      (       a!  U R                   S
   nU R                  SU5        U R                   R                  S5      (       a!  U R                   S   nU R                  SU5        U R                   R                  S5      (       a!  U R                   S   nU R                  SU5        U R                   R                  S5      (       a!  U R                   S   nU R                  SU5        U R                   R                  S5      (       a!  U R                   S   nU R                  SU5        U R	                  S5        g )NignoredErrorsr  numberStoredAsTextr  	evalErrorr  rs  r  formulaRanger  unlockedFormular  emptyCellReferencer  listDataValidationr  calculatedColumnr  twoDigitTextYear)r   r  r  _write_ignored_errorr  )r5   ignored_ranges     r;   r  Worksheet._write_ignored_errors   s-   ""O,""#:;; //0GHM%%&:MJ""<00 //=M%%k=A""#455 //0ABM%%i?""?33 //@M%%nmD""#566 //0BCM%%&7G""#9:: //0FGM%%&:MJ""#9:: //0FGM%%&:MJ""#677 //0CDM%%&8-H""#899 //0EFM%%&8-H/*r@   c                 8    SU4US4/nU R                  SU5        g )Nr  r   ignoredErrorr  )r5   r  r(  r  s       r;   r'  Worksheet._write_ignored_error   s,     m$O


 	NJ7r@   )r   r   r   r   r  r   r   r   r   r   r   r   r   r   r  rz   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   rw   r|   r   r   r   r   r   r   r   r   r   r  r   r   rv   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r
  ry   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   rx   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   )rd   Nr  rn  )F)Nr   r  )NNN)i  )NF)r   r   )r   r   r   r   )NNr   )NN)rl   )rg   N)r   )ri   ri   rj   rj   )rg   NN)FF)r   (	  rT  
__module____qualname____firstlineno____doc__ru   r3   r7  r?   r   r   r   r>  r<  rD  r   r"   rT  r4  r2  r   rc  r3  rn  r+  rw  r-  rN   r  r}  r  staticmethodr  r~  rE  r  rI  rB  r  rC  r  r1  r  r  r  r  r  r	   r   r   r  r  r	  r   r  r  r  r  r   r#  r'  r*  r.  r2  r6  rV   rA  rE  rb  rg  rk  ro  rv  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.  r1  r4  r8  r=  rV  r^  ra  rd  rh  rk  rn  rq  rt  rw  r{  r  r  r  r  r  r  r  r  rX  r  rz  r  r  r  r  r  r  r4  r<  rA  rE  rL  r  rO  r\  r]  rD  rj  r   rr  r   ru  r  r  r  r  r  r  r  r  r,  r?  r  r  r  r  r  r  rQ  r  r  r  r
  r  r  r0  r  r  r  r  r  r  rg  rh  rB  r[  rr  rs  ru  rt  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  r0  r=  r>  r  rL  rQ  r\  r^  r_  r`  ra  rf  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  __static_attributes____classcell__)r%  s   @r;   rb   rb      s   Y$ Y$x$3 $33 $3L , ,3 ,%8K2L , ,&SJ# SJC SJj OSAA A*-A<DV<LA		A A, PT *-<DV<L		:  )-AA A c5(*+	A
 f%A 
A A: )-%% % c5(*+	%
 f%% 
%N NR?? ?),?;CF;K? ?, FJ 2:62B	(  )-JJ J 	J
 f%J 
	J JB )-%% % 	%
 f%% 
	%N  )-*
*
 *
 	*

 *
 *
 f%*
 
*
 *
X  )-)) ) 	)
 ) ) f%) 
) )Zrn * *H 4 
4l  )-AA A 	A
 f%A 
A A03 S S * QUCC C+/C>Fv>NC C(# C s 6  )- $!HH H 	H
 f%H H c]H H< KO;; ;	;z 88 8).sF{);8	&	'8 82wc w ws wr7 HL 5=f5E	wqz3	 0 HL 5=f5E	wqz3	 0  -1## # c7E)*	#
 $sCx.)# 
# #J  -100 0 c7E)*	0
 $sCx.)0 
0 0d QU33 3(+36>tCH~6N3	3 3j TXFF F).F9A$sCx.9QF		F FP TX!! !+.!9A$sCx.9Q!		! !F% JOC%/0BF	6&5$"  4$ 
 "&(,,0@@ @ 	@
 f%@ $sCx.)@ 
@ @D 
 "&(,,0QQ Q 	Q
 f%Q $sCx.)Q 
Q Q:SN SN SNp #'(,,0>> > f%	>
 $sCx.)> 
>F #'(,,0?? ? f%	?
 $sCx.)? 
?6 HM(uo(@D(	(2  )-PP P 	P
 P P f%P 
P Pd )E)E),)E8;)EGJ)E	)E )EV: : : :x(c (DI ($ (T  -1GG G 	G
 G $sCx.)G 
	G GR  -1{{ { 	{
 { $sCx.){ 
	{ {z  -1ZZ Z 	Z
 Z $sCx.)Z 
	Z Zx
 FJ +3DcN+C		 B "7"7),"78;"7GJ"7	"7 "7H 9S 93 9t 9 9& $$ $ 	$
 $ 
$8 
 "&"&>> > #	>
 3-> > 
> >: 
 "&"&66 6 #	6
 3-6 
6 6.S 4 $%25e#4 2 2 GK3(3(+3DcN+C3(	3(p %)"&	%% SM% 3-	%
 
%N FJ## #+3DcN+C#	# #J QUCC C+/C>Fv>NC CJ''''"2 4 +E'$-*<$= +$ +  $$ $ 	$
 $ 
$4 RVO'O')1$sCx.)AO'	O'd RVO'O')1$sCx.)AO'	O'b7S 7HSM 7T 74 7 7x} 7PT 7 74&WW%5 &d &0*$   ), 8; GJ 	   D''# 's 't '$% % %'S 'T ','tCy T tCy T ># >$ >"(Xd38n%= (QV (^,'\bJ @E!! !	!FY&P4B=:U!nC "(4S>2J L4L4 L4 	L4
 
L4\C4J.$
8
t VH\V|S <S *
 &z &3j
2:G3j($(5'n5=6+'=J5(!9F(99v90&"PB/H++07L5\82<(99&QP# #J)V5=c 5=t 5=n@C @D @t#s t# t#t t#l+9787;5$'*'*/($50(d55 5*-5475	5(5S 5s 5 5 5:"G"*)(2/.86.;`
-
:,39;3-$K0Z4"4
3j(X3(*%.$$%,
0 
0..
5
-8080 80	80tE0c E0 E0d E0N.(25$&!+7Z6%7N	*BJLB,!\,"
/?W>r8
:<C;98876++Z8 8 8r@   rb   )SrE  rh  r  r/  r  collectionsr   r   r  r   	fractionsr   	functoolsr   ior	   r
   r   r   typingr   r   r   r   r   r   warningsr   xlsxwriter.chartr   xlsxwriter.colorr   xlsxwriter.commentsr   xlsxwriter.imager   xlsxwriter.urlr   r   xlsxwriter.vmlr   rg   r   r   r   r   r   
exceptionsr    r!   rX   r"   r;  r#   utilityr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r  VERBOSEr{  r?   rN   rV   rq  r  rj  r\  r  r  r  r  r  rb   ri  r@   r;   <module>rC     s3     	 	  /       < <  " " + " ( %  7 7 <      !jj< JJ?  P0@@ GX.G%;<X'78X'78i):; i)AB z+;<  /KL ": t8	## t8r@   