
    hC                    h   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  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  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%J&r&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7  SSK J8r8  \Rr                  " S\Rt                  5      r;S r<S r=S r>\" SS5      r?\" SS5      r@\" SS5      rA\" S S!5      rB\" S"S#5      rC\" S$S%5      rD\" S&S5      rE\" S'S(5      rF\" S)S*5      rG " S+ S,\ Rp                  5      rHg)-    N)defaultdict
namedtuple)Decimal)Fractionwraps)StringIO)isinfisnan)warn)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        gC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\xlsxwriter/worksheet.pycell_wrapper'convert_cell_args.<locals>.cell_wrapperd   s[    	' G	I d,T,V,,  	'(3H12h&D	's   & AAr   r2   r4   s   ` r3   convert_cell_argsr7   ]   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   r+   r,   splitr!   extend)r-   r.   r/   cell_1cell_2row_1col_1row_2col_2r1   r2   s             r3   r4   (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   r6   s   ` r3   convert_range_argsrF   u   s#     6]- -* r8   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   r;   1r   r<   )r-   r.   r/   colr?   r@   _rB   rD   r1   r2   s             r3   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   )r2   rL   s   ` r3   convert_column_argsrN      s#     6]- -  r8   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                     ^  \ rS rSrSrU 4S jrS r\S 5       rS r	\SS j5       r
SS jr\SS	 j5       rSS
 jr\SS j5       rSS jr\SS j5       rSS jr\  SS j5       r\  SS j5       rSS jr\S 5       r   SS jr\SS j5       rSS jr\SS j5       rSS jr\SS j5       rSS jr\S 5       rS r S r!\SS j5       r"\SS j5       r#\SS j5       r$\SS  j5       r%\SS! j5       r&\SS" j5       r'\SS# j5       r(S$ r)SS% jr*S& r+S' r,S( r-S) r.S* r/S+ r0S, r1\2 SS- j5       r3\2 SS. j5       r4SS/ jr5SS0 jr6SS1 jr7SS2 jr8\ SS3 j5       r9\S4 5       r:S5 r;S6 r<\SS7 j5       r=\ SS8 j5       r>\SS9 j5       r?\SS: j5       r@\S; 5       rA\SS< j5       rB SS= jrC\GS S> j5       rD\GSS? j5       rEGSS@ jrFSA rGSB rHSC rIGSSD jrJGSSE jrK\SSF j5       rL\SSG j5       rMSH rNSI rOGSSJ jrPSK rQSL rRSM rSSN rTGSSO jrUGSSP jrVGSSQ jrWSSR jrX\2SSS j5       rYGSST jrZSU r[SV r\\SW 5       r]SX r^SY r_SZ r`S[ raS\ rbS] rcS^ rdSS_ jreSS` jrfSa rgSb rhGSSc jriSd rjSe rkSf rlSg rmSh rnSi roSj rpSSk jrqSl\rSm\sSn\s4So jrtSp ruSq rvSr rwSs rxSt rySu rzGSSv jr{GSSw jr|Sx r}Sy r~Sz\4S{ jrS|\4S} jrS~ rS rS rS rS rS rS rS rSS jrSS jrS rS rS rS rS rS rSS jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rGSS jrS rSS jrSS jrS rS rS rS rS rS rS rS rS rS rS rS rS rS\sS\sS\sS\4S jrS\sS\sS\4S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSS jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrU =r$ (	  	Worksheet   z5
A class for writing the Excel XLSX Worksheet file.

c                 <
  > [         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)r-   	__class__s    r3   rl   Worksheet.__init__   st    		
 "!$!
"'%*"$ $"$%*"$(!$(!"$!   " " "! "$%!#D)	!" %!"!"$#% "$"$!%"$#% "#
 &

#!#D)! % !"F % %$&!&(#&(#"$$&!)+&!#  "#$  $ "' %d+"'#!&#' #' "&'+$#' $"!%" !%"' ""'$)!#( #r8   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)Nr^   =z{=}r;   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_numberr,   _write_string)r-   tokenrowrJ   r.   fs         r3   _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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r-   r,  rJ   r.   s       r3   writeWorksheet.write  s    " {{3+d++r8   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_booleanr(  r+   r   r   r)  strr.  datetimedatetime	timedelta_write_datetime
isinstancer   r   r'  r,   typer*  )	r-   r,  rJ   r.   r+  
token_typewrite_handlerfunction_returnr-  s	            r3   r2  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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.

)r*  )r-   r,  rJ   stringcell_formats        r3   write_stringWorksheet.write_string>  s    " !!#F@@r8   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   )
_check_dimensionslenrz   rq   ro   _get_shared_string_indexr   _write_single_rowCellStringTupler   )r-   r,  rJ   rG  rH  	str_errorstring_indexs          r3   r*  Worksheet._write_stringR  s    	 !!#++ v;(-doo.FI ##>>BB6JL!L C*;*;$;""3'  /|I

3r8   c                 &    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.

)r)  r-   r,  rJ   numberrH  s        r3   write_numberWorksheet.write_numberm  s      !!#F@@r8   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() optionrM  r   )r   r
   r  r#  mathinfr7  r  r   r(  rO  rq   r   rR  CellNumberTupler   rX  s        r3   r)  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r8   c                 &    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!  )r-   r,  rJ   blankrH  s        r3   write_blankWorksheet.write_blank  s    "   5>>r8   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   rM  )rO  rq   r   rR  CellBlankTupler   )r-   r,  rJ   rK   rH  s        r3   r!  Worksheet._write_blank  sa     !!#++ C*;*;$;""3'  .k:

3r8   c                 (    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#  r-   r,  rJ   formularH  values         r3   write_formulaWorksheet.write_formula  s    & ""3W5IIr8   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)NrM  r^   zFormula can't be None or empty{r   r   )rO  r   re_dynamic_functionsearchwrite_dynamic_array_formular"  r$  _write_array_formula_prepare_formularq   r   rR  CellFormulaTupler   rk  s         r3   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r8   c           
          [         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)rr  rs  rt  ru  )r-   	first_row	first_collast_rowlast_colrl  rH  rm  s           r3   write_array_formulaWorksheet.write_array_formula  s_    : %%g..33h'PU  ((	
 		
r8   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)ru  r  )	r-   r{  r|  r}  r~  rl  rH  rm  errors	            r3   rt  %Worksheet.write_dynamic_array_formula*  sB    8 ))	
 A:&*D#r8   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$ (=  Nrq  r   r  r   rM  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  )r-   rl  expand_future_functionss      r3   rv  Worksheet._prepare_formulaX  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r8   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],r^   )appendjoin)rl  escaped_formulain_string_literalchars       r3   _prepare_table_formula Worksheet._prepare_table_formula  s    gN!D s{(9$9! !&&t, s{&&~6&&t, " yy))r8   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)NrM  r;   r   r   )
rO  r%   rv  rq   r   rR  CellArrayFormulaTupler   ranger)  )r-   r{  r|  r}  r~  rl  rH  rm  atype
cell_ranger,  rJ   s               r3   ru  Worksheet._write_array_formula-  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
 r8   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.

)r?  )r-   r,  rJ   r<  rH  s        r3   write_datetimeWorksheet.write_datetimec  s      ##Cd@@r8   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)NrM  r   )rO  rq   r   rR  _convert_date_timer	  CellDatetimeTupler   )r-   r,  rJ   r<  rH  rY  s         r3   r?  Worksheet._write_datetimev  s{    !!#++ C*;*;$;""3' ((. 22K  1E

3r8   c                 &    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.

)r9  r-   r,  rJ   booleanrH  s        r3   write_booleanWorksheet.write_boolean  s      ""3WBBr8   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)NrM  r   r   )rO  rq   r   rR  CellBooleanTupler   )r-   r,  rJ   r  rH  rm  s         r3   r9  Worksheet._write_boolean  sc    !!#++ C*;*;$;""3'EE  0C

3r8   c                 (    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.
)r'  )r-   r,  rJ   urlrH  rG  tips          r3   	write_urlWorksheet.write_url  s    & s6GGr8   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)NrM  #r   r^   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   )rO  r@  r   r  r=   rP  r   _text_tipr   _original_urlr
  r  rq   r   rR  r*  textr  )
r-   r,  rJ   r  rH  rG  r  max_urlurl_str
anchor_strs
             r3   r'  Worksheet._write_url  sg   !!#++ #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!r8   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_stringr3  s       r3   write_rich_stringWorksheet.write_rich_string
  s    * &&s7$77r8   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   r^   rM  rP      zfYou must specify more than 2 format/fragments for rich strings. Ignoring input in write_rich_string().zYExcel doesn't allow empty strings in rich strings. Ignoring input in write_rich_string().r  rG  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().rN  )listrO  r@  r   popr	   r'   r   _set_filehandlerP  r   r  _xml_start_tag_write_fontr   _xml_data_element_xml_end_tagfhgetvaluerz   rq   ro   rQ  r   rR  CellRichStringTupler   )r-   r,  rJ   r.   tokensrH  rU  
raw_stringr  default	fragmentspreviousposr+  
attributesrG  s                   r3   r  Worksheet._write_rich_string"  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 r8   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  )r-   	user_typeuser_functions      r3   add_write_handlerWorksheet.add_write_handler  s     *7I&r8   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   r1  r-   r,  rJ   datarH  r+  r  s          r3   	write_rowWorksheet.write_row  4     EKK%=E1HC	  r8   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   r1  r  s          r3   write_columnWorksheet.write_column  r  r8   c                     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 (, ).rM  r   )rO  r   _image_from_source_row_col_set_user_optionsr   r  )r-   r,  rJ   sourceoptionsimages         r3   insert_imageWorksheet.insert_image  ss    " !!#D$77+C53%r:; ''8

(5!r8   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  rM  NrH  TF#VALUE!r   )rO  r   r  r  getr  r
  r  r  r  get_image_indexCellErrorTupler   )r-   r,  rJ   r  r  r  rH  image_indexs           r3   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r8   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  rM  Nr^   x_offsetr   y_offsetx_scaler   y_scaleobject_positiondescription
decorativeF)rO  r   r  r   r  )r-   r,  rJ   r  r  r  r  r  r  anchorr  r  s               r3   insert_textboxWorksheet.insert_textbox%  s    " !!#D$77-cU"SE<=<D?G;;z1-;;z1-++i+++i+.2kk-6[[u5
	
 r8   c                 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  rM  Nz7Chart cannot be inserted in a worksheet more than once.rN  r  r   r  r  r   r  r  r  r  F)rO  r   already_insertedcombinedr  r  r  r  r  r   r  )r-   r,  rJ   chartr  r  r  r  r  r  r  r  s               r3   insert_chartWorksheet.insert_chartY  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	
 r8   c                     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.

rM  rN  Tr   )rO  rP  rz   r   r   r   r   )r-   r,  rJ   commentr  s        r3   write_commentWorksheet.write_comment  s^    $ !!#++ w<$//)  c9")c3r8   c                     SU l         g)zV
Make any comments in the worksheet visible.

Args:
    None.

Returns:
    Nothing.

TN)r   r-   s    r3   show_commentsWorksheet.show_comments       !%r8   c                 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   )r-   r  is_byte_streamr  s       r3   set_backgroundWorksheet.set_background  s0     ''/ %R
 r8   c                     Xl         g)zv
Set the default author of the cell comments.

Args:
    author: Comment author name. String.

Returns:
    Nothing.

N)r   )r-   authors     r3   set_comments_authorWorksheet.set_comments_author  s
      &r8   c                     U R                   $ )zG
Retrieve the worksheet name.

Args:
    None.

Returns:
    Nothing.

)rm   r  s    r3   get_nameWorksheet.get_name  s     yyr8   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   rn   r  activesheetr  s    r3   activateWorksheet.activate  s$     *.**'r8   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    r3   selectWorksheet.select  s     r8   c                      SU l         SU l        g)zF
Hide the current worksheet.

Args:
    None.

Returns:
    Nothing.

r   r   Nr   r   r  s    r3   hideWorksheet.hide&        r8   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    r3   very_hiddenWorksheet.very_hidden6  r'  r8   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   rn   r  
firstsheetr  s    r3   set_first_sheetWorksheet.set_first_sheetF  s     )-&r8   c                    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   rM     r   )r  rO  maxminr   r  r   r   )r-   r|  r~  widthrH  r  
ignore_rowr   r0  r1  
ignore_colrJ   s               r3   
set_columnWorksheet.set_columnX  s    ( ?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 !%r8   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_widthr8  )r-   r|  r~  r5  rH  r  s         r3   set_column_pixelsWorksheet.set_column_pixels  s-    ( ))%0EyEPPr8   c                    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   rS   rW   rS   
rR   r2  rV   rT      $   rU   rX         TF)#rq   r   r|   r4  r;  sortedro   string_table__getitem__r  r{   r   r  r}   r~   r  __name__rG  r  r#   r=   r3  rP  r:  rY  r   r  r@  rm  r(  r+   r8  r   itemsr   )r-   	max_widthcol_width_maxstringsrow_numcol_numcell	cell_typelength	string_idrG  
seg_length	width_maxpixel_widthr5  r   
user_widthr   s                     r3   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 %:r8   c                    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   rM  r   Fr0  r1  r   r2  T)
r}   rO  r   r  r3  r4  r   r   r   r   )	r-   r,  heightrH  r  min_colr   r0  r1  s	            r3   set_rowWorksheet.set_rowD  s     ?G ??&ooGG !!#//>,,F Xu-KKU3	GQ' Q;F,,F E1E1!$T%;%;U!C %6)Lc !%  &.sr8   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_heightr^  )r-   r,  r\  rH  r  s        r3   set_row_pixelsWorksheet.set_row_pixels~  s+     ++F3F||C>>r8   c                 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   )r-   r\  hide_unused_rowss      r3   set_default_rowWorksheet.set_default_row  s>     >,,F---$(D!&,#&'D# r8   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 cellrM  r   zMerge range '!' overlaps previous merge range ''.!' overlaps previous table range 'r^   r   )r   rO  r$   r  r   r  r   r   r   r  r2  r!  )r-   r{  r|  r}  r~  r  rH  r  r,  rJ   previous_ranges              r3   merge_rangeWorksheet.merge_range  s   2  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 r8   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 'rj  	worksheetN)	_convert_name_arear$   r   r   r   r  r   r  r   )
r-   r{  r|  r}  r~  arearefrJ   r   r   s
             r3   
autofilterWorksheet.autofilter  s      %-%- &&yXPyX@#!&1 qL1C  $$i%566,0,=,=,A,A9BR,S)')*6se <33?.D 
 4?2DDy./ 2r8   c           	         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()NrI   Invalid column ''Column '%' outside autofilter() column range (r  ))r_   r2  z(Incorrect number of tokens in criteria 'r  r   r   rF  r_      )r   r   r+   r,   r!   ry   r   _extract_filter_tokensrP  _parse_filter_expressionfilter_column_listr   r   r   )r-   rJ   criteria
col_letterrK   	col_firstcol_lastr  s           r3   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/c           	      ~   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.

rw  NrI   rx  ry  rz  r{  ,r|  r   )
r   r   r+   r,   r!   ry   r   r   r   r   )r-   rJ   filtersr  rK   r  r  s          r3   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.
TrM  N>   rm  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()rN  r  rm  r  r  z5Parameter 'validate' is required in data_validation()nonewholedecimalr  r<  r=  
textLengthcustom)anyz	any valuezwhole numberr  integerr  r  r<  r=  ztext lengthrS  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'.r<  r=  .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  $r^   )rO  copykeysr   r  r   r  rP  r@  r  	_csv_joinr>   replacer   r  )r-   r{  r|  r}  r~  r  valid_parameters	param_keyvalid_typescriteria_typeserror_types	date_timerl  s                r3   data_validationWorksheet.data_validation	  s:   $ !!)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" 	(r8   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.
TrM  N>$   rA  iconsrm  rP   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()rN  rA  z4Parameter 'type' is required in conditional_format()rQ  cellIsr<  r=  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)rl  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  rm  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().r_   total_icons4r}  5rF  r  r  r  r^   rP   priorityr   r  r  r  r  r  r  r  r  r  r  r  is_data_bar_2010zNOT(ISERROR(SEARCH("z",z)))rl  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  r4  r  r3  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  )rO  r  r  r   r@  r8  r:  upperr   r  r  r"  _set_icon_propsr$   r%   r  _get_dxf_indexr   r   rP  
setdefaultr   _from_valuerv   lstripKeyErrorAttributeErrorr   r  )r-   r{  r|  r}  r~  r  valid_parameterr  
valid_typecriteria_typer  valid_iconsr  
start_cellrm  rS  r  s                    r3   conditional_formatWorksheet.conditional_format
  s+   ( !!)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'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  TrM  r   zTable range 'rk  rj  ri  >   r  rm   stylecolumns	total_rowrt  
header_rowbanded_rowslast_columnfirst_columnbanded_columnsr  ' in add_table()rN  r[  rZ  rt  r   z1Must have at least one data row in in add_table()r]  Fshow_first_colr\  show_last_colshow_row_stripesr^  show_col_stripesheader_row_countrY  totals_row_shownrm    zName 'z&' in add_table() cannot contain spacesz^[\w\\][\w\\.]*$z^\dz*Invalid Excel characters in add_table(): 'ry  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()rW  r^   TableStyleMedium9r  a_rangerX  Column)	idrm   total_stringtotal_functioncustom_totaltotal_valuerl  rP   name_formatrP   r   z'Duplicate header name in add_table(): 'header_formatro  rl  r  rl  
count_nums	countNumsstd_devstdDevr  rr  countr3  r4  rt  sumvarrm  r  rn  rk  r  rp  zTable autofilter range 'z0' overlaps previous Worksheet autofilter range 'r   ) r  rq   r   rO  r$   r  r   r  r   r   r  r%  r&  UNICODEr  r:  rP  lowerr"  rL  r  rv  set_table_function_to_formular#  r*  rI  r  r2  	enumerater   r   )&r-   r{  r|  r}  r~  r  r   col_formatsr  r,  rJ   rl  rO  r  num_rowsrm   first_data_rowlast_data_rowcol_id
seen_namesrP  col_data	user_dataxformatheader_namerl  function	subtotalsrm  rk  r  ijr+  column_dataformula_formatr   r   s&                                         r3   	add_tableWorksheet.add_table  sA	   $ ?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 r8   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.

TrM  	locations>   r3  r4  axisrA  r  rW  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()rN  rA  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()rv  r  r^   r  !r  highr  lowr  negativer  firstr  lastr  r4  r3  r  r  r  r   r  r  zeror   emptyconnectspangapr  rW  seriesr  r  r  r  r  r  r  )rO  r%   r  r   r  r@  r  rP  r    rm   r  rL  r  r   _set_spark_colorr   )r-   r,  rJ   r  	sparkliner  r  
spark_typerange_countlocation_count	sheetname
new_rangesspark_rangenew_locationsr  r  
date_rangestyle_idrW  s                      r3   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)r8   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   )r-   r{  r|  r}  r~  paneactive_cellsqrefs           r3   set_selectionWorksheet.set_selection  sT      (	= %-%-xB D= u56r8   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   )r-   r,  rJ   s      r3   set_top_left_cellWorksheet.set_top_left_cell  s!     !8q.s8r8   c                 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   )r-   visiblesymbols_belowsymbols_right
auto_styles        r3   outline_settingsWorksheet.outline_settings  s#    " "**'#r8   c                 ,    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   )r-   r,  rJ   top_rowleft_col	pane_types         r3   freeze_panesWorksheet.freeze_panes  s'     ?GH9=
r8   c                 *    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  )r-   xyr  r  s        r3   split_panesWorksheet.split_panes  s      	!15r8   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 <= 400rc   N)r   r+   r   )r-   r   s     r3   set_zoomWorksheet.set_zoom  s3     "9s
=&HIJDI	r8   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    r3   right_to_leftWorksheet.right_to_left   r  r8   c                     SU l         g)zO
Hide zero values in worksheet cells.

Args:
    None.

Returns:
    Nothing.

r   N)r   r  s    r3   	hide_zeroWorksheet.hide_zero-  s     r8   c                 :    [         R                  " U5      U l        g)zc
Set the color of the worksheet tab.

Args:
    color: A #RGB color index.

Returns:
    Nothing.

N)r   rK  r   r-   colors     r3   set_tab_colorWorksheet.set_tab_color:  s     **51r8   c                 (   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.

r^   sheetTcontentFobjects	scenariosformat_cellsformat_columnsformat_rowsinsert_columnsinsert_rowsinsert_hyperlinksdelete_columnsdelete_rowsselect_locked_cellssortrt  pivot_tablesselect_unlocked_cellszUnknown protection object: 'ry  passwordN)_encode_passwordr  r   r   )r-   r  r  defaultsr?  s        r3   protectWorksheet.protectG  s4    r>,,X6HG
T
u
 u
 	

 E
 e
 5
 e
 5
  
 e
 5
 "4
 E
 %
  E!
" $T#
* <<>C '3C5:;	 "  ('r8   c                 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()rM  r  r  r^   r   Ranger   )r   rL  r  r   r:  r  r   r  r-   r  
range_namer  s       r3   unprotect_rangeWorksheet.unprotect_rangez  s     DE  &&s+
''R0
!!Q&! 3t'@'@#AAJ,,X6H$$jh%GHr8   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  rM  r   r   )	rO  r   r   r   rP  r   r   r  r   )r-   r,  rJ   r  r\  r5  button_numberbuttons           r3   insert_buttonWorksheet.insert_button  s      !!#D$77,SEC5;<?G ((''C 1 122Cf]L  (r8   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  r9  r  s        r3   insert_checkboxWorksheet.insert_checkbox  sj    " {33$$& ///3/G/G/I,,,99;66K""3WBBr8   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    r3   set_landscapeWorksheet.set_landscape       "&r8   c                      SU l         SU l        g)zP
Set the page orientation as portrait.

Args:
    None.

Returns:
    Nothing.

r   TNr  r  s    r3   set_portraitWorksheet.set_portrait  r  r8   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  )r-   views     r3   set_page_viewWorksheet.set_page_view   s	     r8   c                     SU l         g)zB
Set the page view mode.

Args:
    None.

Returns:
    Nothing.

r  Nr   r  s    r3   set_pagebreak_viewWorksheet.set_pagebreak_view  s     r8   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   )r-   r   s     r3   	set_paperWorksheet.set_paper  s     (O&*D# r8   c                      SU l         SU l        g)zH
Center the page horizontally.

Args:
    None.

Returns:
    Nothing.

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

Args:
    None.

Returns:
    Nothing.

Tr   N)r   r   r  s    r3   center_verticallyWorksheet.center_vertically9  r-  r8   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   )r-   leftrightr  r  s        r3   set_marginsWorksheet.set_marginsG  s      !#r8   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_docrb   T)r  rP  r   r@  r   r  r   r  r  _header_positionr  rv  r   r   r   r   r   r   )r-   r   r  r9  header_origr  placeholder_countimage_counts           r3   
set_headerWorksheet.set_headerZ  =    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 r8   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.

r7  r8  r  zCFooter string cannot be longer than Excel's limit of 255 charactersNr9  r:  r;  r<  LFr>  r?  CFrA  rB  RFrD  rE  rF  rG  rH  rb   T)r  rP  r   r@  r   r  r   r  r  rI  r  rv  r   r   r   r   r   r   )r-   r   r  r9  footer_origr  rK  rL  s           r3   
set_footerWorksheet.set_footer  rO  r8   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    rm   r   )r-   r{  r}  rr  r  s        r3   repeat_rowsWorksheet.repeat_rows  sX      H 	Q	A 9+Rz* $DII.	 )C$ 6r8   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   r;   r  )r"   r    rm   r   )r-   r|  r~  rr  r  s        r3   repeat_columnsWorksheet.repeat_columns  sZ      H #9a0	!(A. 3) $DII.	 )C$ 6r8   c                     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   )r-   options     r3   hide_gridlinesWorksheet.hide_gridlines-  sJ     Q;#$D $%D!)-D&q[#$D $%D!#$D $%D!r8   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    r3   print_row_col_headersWorksheet.print_row_col_headersE  s     "%)"r8   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    r3   hide_row_col_headersWorksheet.hide_row_col_headersS  s      $r8   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   rM  )rx   ry   rq  r   )r-   r{  r|  r}  r~  rr  s         r3   
print_areaWorksheet.print_area`  sP    ( NQOOa//OOa// &&yXP $r8   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    r3   print_acrossWorksheet.print_across  s     "&r8   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   )r-   r5  r\  s      r3   fit_to_pagesWorksheet.fit_to_pages  s      "&r8   c                     Xl         g)zl
Set the start page number when printing.

Args:
    start_page: Start page number.

Returns:
    Nothing.

N)r   )r-   
start_pages     r3   set_start_pageWorksheet.set_start_page  s	     %r8   c                 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   r+   r   r   )r-   scales     r3   set_print_scaleWorksheet.set_print_scale  sC     2:='JKL u:"&r8   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    r3   print_black_and_whiteWorksheet.print_black_and_white  s      "&r8   c                     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   r-   breakss     r3   set_h_pagebreaksWorksheet.set_h_pagebreaks  	     r8   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     r3   set_v_pagebreaksWorksheet.set_v_pagebreaks  r  r8   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  r:  rn   )r-   rm   s     r3   set_vba_nameWorksheet.set_vba_name  s*      $ '#djj1n*= =Dr8   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.

rM  >	   
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  )r-   r  r  r  s       r3   ignore_errorsWorksheet.ignore_errors  sZ     ? ,,.

 !I0*9+5IJK (
 &r8   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 )Nrm   rn   ro   r  rq   rr   r  r  r  r  r  r	  r
  r  rw   r  r  r  r  g     )@   ra   r         ?F)dirzw+utf-8modeencoding)%rm   rn   ro   r  rq   rr   r  r  r  r  r  r	  r
  r  rw   r  r  r  r  r   r   r   r   r   r   r   r   r   r   tempfilemkstemposcloser  openr  r  )r-   	init_datafdfilenames       r3   _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  r8   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 )Nrp  )"_xml_declaration_write_worksheet_write_sheet_pr_write_dimension_write_sheet_views_write_sheet_format_pr_write_colsrq   _write_sheet_data_write_optimized_sheet_data_write_sheet_protection_write_protected_rangesrw   _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    r3   _assemble_xml_fileWorksheet._assemble_xml_fileZ  s    	 	 	 	 	! 	##% 	 ##""$,,. 	$$& 	$$& ##% 	! 	! 	'') 	$$& 	  	!!# 	  " 	  	!!# 	  	  	""$ 	 	""$ 	%%' 	 	! 	 	+& 	r8   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rL  )rx   ry   rq   r   r{   r|   r}   r~   )r-   r,  rJ   r6  r7  s        r3   rO  Worksheet._check_dimensions  s     7cAg//!SOO%; *1E1E&&&&#*?"%&#*?"%&#*?"%&#*?"%r8   c                 B    [        XR                  U R                  5      $ N)r   r  r  )r-   dt_objs     r3   r  Worksheet._convert_date_time  s    *6>>4CWCWXXr8   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$ )Nr^   r   r   r  r;   r  )r"   r:  rx   ry   r    rm   )r-   	row_num_1	col_num_1	row_num_2	col_num_2range1range2rr  row_col_only
col_char_1
col_char_2
row_char_1
row_char_2r  s                 r3   rq  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%r8   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  rP  )r-   r}  
breaks_setbreaks_listmax_num_breakss        r3   _sort_pagebreaksWorksheet._sort_pagebreaks  sf     I[

?a :& {n,%o~6Kr8   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   rM  z"")r%  compilefindallr"  r$  r  r  )r-   r  token_rer  
new_tokensr+  s         r3   r~   Worksheet._extract_filter_tokens%  s     I::34!!*-
E$$ab	~~c""cr
MM$,Ee$  r8   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      $ )Nr2  r_   z(and|&&)r   z	(or|\|\|)r   Token 'z3' is not a valid conditional in filter expression 'ry  r}  )rP  r%  r&  r   _parse_filter_tokens)r-   r  r  conditionalexpression_1expression_2s         r3   r  "Worksheet._parse_filter_expressionF  s     v;! !)Kxx
K00,44k] +--7L;
  44Z!ML44Z!ML-/,>>((<<r8   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  rF  r   r_   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)rK  %z
The type 'z ' must be either 'items' or '%%'r     r  r  r  z0' is not a valid operator in filter expression 'rj  zblanks|nonblanks)r  rF  zThe operator 'z0' is not valid in relation to Blanks/NonBlanks'.r  rf  z[*?]   )r  r%  r&  rz  r+   r   r:  rs  )r-   r  r  	operatorsoperatorr+  rm  s          r3   r  Worksheet._parse_filter_tokensc  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  r8   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   rM     r   r]   iK  X)ordrP  )r-   r  digestr  s       r3   r  Worksheet._encode_password  s    
 TrTND|t+10FGFc$iF # R<4'Vq[F,BC#h-&r8   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$ )Nr<  )r@  r   r  
image_name)r-   r  r  r  s       r3   r  Worksheet._image_from_source  s_     fe$$E   W[[%>%>',/0E%  &MEr8   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_anchorr+   r   r   embeddedr   r  r:  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)r-   r  r  r  r5  r\  
dimensionsr   drawing_objectr  targettarget_modes               r3   _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3r8   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 )Nr5  r_   r\  r  r  r  r   r  r  r  rectTextBoxr   r	  )$r   r  r   r   r  r+   r   r   r  r   r  r:  r   r  r   r   SHAPEr  r  r  r  r  r  r  r  r  r   from_optionsr   r!  r   r"  r   r#  r  r&  )r-   rn   r  r,  rJ   r  r  r  r  r  r  r  r  r  r5  r\  r'  r   shaper(  r  r)  r*  s                          r3   _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3r8   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\..*$r^   r
  r  r  )r%  r  r   r   r  r$  r   r  r:  r%  _get_vml_drawing_rel_index_ref_idr   )r-   r  r  s      r3   _prepare_header_imageWorksheet._prepare_header_imagel  s     66(B0@0@A$$((77""))$s8}4s:U=S=SS 77F&&u-r8   c                 b    U R                   R                  SS[        U5      -   S-   U-   /5        g )Nr
  r  r  )r   r  r:  )r-   r  image_extensions      r3   _prepare_backgroundWorksheet._prepare_background~  s2    &&--'#h-7#=OP	
r8   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   rj  r+   r5  r\  r  
chart_namer   r   r  r   r  r:  r   r   CHARTr  r  r  r  _namer  r  r#  r  r  r  r&  r   )r-   rn   chart_idr  r,  rJ   r  r  r  r  r  r  r  r  r5  r\  r'  rm   r   r(  s                       r3   _prepare_chartWorksheet._prepare_chart  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	
r8   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_pixelsr+   )r-   	col_start	row_startx1y1r5  r\  r  col_endrow_endx2y2x_absy_abss                 r3   r  Worksheet._position_object_emus  s    ( (("%
	
 tby!tby!tby!tby!C$,&'C$,&'bgUUr8   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/
$ r*   )	_size_col	_size_rowr3  r   r  r   r   r   )r-   rG  rH  rI  rJ  r5  r\  r  rO  rP  r  row_idrK  rL  rM  rN  s                   r3   rF  !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Ur8   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$ )Nr2  rF  r   r  r}  r   r  )r   r   r+   r   )r-   rJ   r  max_digit_widthpaddingpixelsr5  r   s           r3   rS  Worksheet._size_col`  s      --MM#&q)E]]3'*F}.. &A+  U&?@3FG 	 U4s:;gE  ,,Fr8   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   r+   r   )r-   r,  r  rZ  r\  r   s         r3   rT  Worksheet._size_row~  s    
  .. ^^C(+F^^C(+F&A+ 	 Y/0  T%<%<<=Fr8   c                 :    SnSnUS::  a	  XU-   -  nU$ X-
  U-  nU$ )Ng      @g      @    )r-   rZ  rX  rY  r5  s        r3   r;  Worksheet._pixels_to_width  s;    R<78E  %8Er8   c                     SU-  $ )Nra   r`  )r-   rZ  s     r3   ra  Worksheet._pixels_to_height  s    f}r8   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   )rF  	start_col	start_rowr  r  r5  r\  r  )r-   r	  r  verticess       r3   _comment_verticesWorksheet._comment_vertices  ss    //MMNN
 	&'r8   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$ re  )rF  rJ   r,  r  r  r5  r\  r  )r-   r  r  rh  s       r3   _button_verticesWorksheet._button_vertices  sk    //JJJJOOOOLLMM
 	%&r8   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  ri   r   r  )rG  r   r  ri  rh  
is_visibler   r  r   r  r   rl  r   r:  r   r   r   rP  r  r+   r  r   )r-   r  r   vml_drawing_id
comment_idr   row_numsr,  col_numsrJ   r	  r  rv  start_data_idr  data_ids                   r3   _prepare_vml_objectsWorksheet._prepare_vml_objects  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 * '(r8   c                 h    Xl         U R                  R                  SS[        U5      -   S-   /5        g )Nro  rp  rq  )r   r   r  r:  )r-   r   rs  s      r3   _prepare_header_vml_objects%Worksheet._prepare_header_vml_objects  s6     +&&4s>7JJVST	
r8   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 )Nrj  rm   TablezDuplicate name 'z ' used in worksheet.add_table().Tz/tablez../tables/tabler  r   )r   r  r:  rz  r   r   r  )r-   table_idseenr   rm   s        r3   _prepare_tablesWorksheet._prepare_tables  s    [[E"$Kyy ( '#h- 7f =&&(D|(&uV}o5UV  DJ %%,,,s8}<vEF MH+ !r8   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$ )Nr^   ry  z''r  z'#]z'][z'[e   f   g   h   i   k   m   n   ru  z	SUBTOTAL(z,[z])zUnsupported function 'r_  )r  r   )r-   r  col_namerl  r  func_nums         r3   r|  $Worksheet._table_function_to_formula   s     ##C.##C.##C.##C. 	
	   *H!(2hZr:G  )(3CDEr8   c                 D    X2;  a  g [         R                  " X#   5      X'   g r  )r   rK  )r-   r  r  
user_colors       r3   r  Worksheet._set_spark_color=  s!    $ % 1 1'2E F	r8   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$ )
Nr`  r   rR   rV   r  rS   rD  r   rO   r^   )rq   r  r   r  r  rJ  rY  rG  ro   _get_shared_stringrm  )r-   rH  rG  rL  rK  r  rO  rP  rQ  rR  rn   rG  rm  s                r3   _get_range_dataWorksheet._get_range_dataD  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 r8   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  )r@  r:  r  )r-   rK  items      r3   r  Worksheet._csv_joiny  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%22rf  z%20r  z%3cr  z%3er  z%5br  z%5d^z%5e`z%60rq  z%7br   z%7d)r%  rs  r  )r-   r  s     r3   _escape_urlWorksheet._escape_url  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%
r8   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  r-   r)  s     r3   r#   Worksheet._get_drawing_rel_index  s    >  A% '''  (($$V,,!$($8$8&!###r8   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     r3   r6  $Worksheet._get_vml_drawing_rel_index  s]      $$V,,((00  A% (,(@(@f%'''r8   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valrM  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  )r-   	xf_format
xml_writerr  s       r3   r  Worksheet._write_font  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&r8   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  )r-   r  r  s      r3   r  Worksheet._write_underline  sJ    
 >+,J"_56J"_56J##C4r8   c                 F    SU4/nU R                   R                  SU5        g )Nr  	vertAlignr  r-   r  r  s      r3   r  Worksheet._write_vert_align  s!    cl^
##K<r8   c                 :    U R                   R                  X5        g r  r  r-   rm   r  s      r3   r  Worksheet._write_rstring_color  s    ##D5r8   c                 j    U R                   (       d"  U R                  R                  5         SU l         g g )NT)r  r  r  r  s    r3   
_opt_closeWorksheet._opt_close   s*    &&""$&*D# 'r8   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  )r-   r  s     r3   _opt_reopenWorksheet._opt_reopen  sA    ""--H#H4'JD&+D#&&DG #r8   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  rm  rA  r_   C   rm  r  r   r}  K   r@     r  rF  P   <   (   re   r  rA  )r  r?  rY  rl  zUnknown icon property type 'z2' for sub-property 'type' in conditional_format().rY  numr  r  T)	r  r  rP  r  r@  r:  r"  rL  r   )
r-   r7  
user_propspropsrK   max_datar  tmpr  r  s
             r3   rH  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 %< r8   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:rrF  zxmlns:mczxmlns:x14ac)zmc:Ignorablex14acrp  )rv   r  r  )r-   schemar  xmlns_rxmlns_mc	ms_schemaxmlns_x14acr  s           r3   r  Worksheet._write_worksheetT  s     622>>773	"BB&G(<=
 %z845}k:;78K4r8   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   r;   	dimensionrs  )r{   r}   r~   r%   r|   r  )r-   rs  r?   r@   s       r3   r  Worksheet._write_dimensionh  s   
 ??"t'> C__$)D
 $//1'4??; +1doo>*1doo>slV+__/DOOt4V#DOOT__EC 'tHF&tHF3,'CK5#,8r8   c                 h    U R                  S5        U R                  5         U R                  S5        g )N
sheetViews)r  _write_sheet_viewr  r  s    r3   r  Worksheet._write_sheet_views  s,    L) 	 ,'r8   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!  pageBreakPreviewr^   topLeftCellrc   	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  r-   r  s     r3   r  Worksheet._write_sheet_view  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8r8   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outlineLevelColrF  zx14ac:dyDescentz0.25sheetFormatPr)r   r   r   r   r  r   rv   r  )r-   r   	row_level	col_levelr  s        r3   r   Worksheet._write_sheet_format_pr  s    !44**	**	)+=>?
""d&>&>>12""/00)<=0)<=%9:OZ8r8   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  rG  r  _write_col_infor  )r-   r|  r~  prev_col_optionsdeleted_coldeleted_col_optionsrJ   col_optionss           r3   r  Worksheet._write_cols  s     }}F# DMM..0115	==3MM)$.$--,,./C--,K l"{'F $$Y:JK	$#.  0 	Y2BC &9k"&!r8   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   rf   r2  rF  r  g      p@r4  r3  r5  r  rW  )r   rI   )bestFitrI   )customWidthrI   outlineLevel)r0  rI   rJ   )_get_xf_indexr+   r(  r  r  )r-   col_mincol_maxr   r5  rH  r   r1  r0  rY  custom_widthxf_indexrX  rY  r  s                  r3   r'  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:.r8   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    r3   r  Worksheet._write_sheet_dataS  sB    ??",,k*r8   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 )Nr8  i   r   )r{   r  r  r  seekreadr  r4  r  r  unlinkr  r  )r-   	buff_sizer  s      r3   r  %Worksheet._write_optimized_sheet_data]  s     ??",, I!!!$##((3Dd#'',,Y7 $ ""$IId,,-k*r8   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 )Nr2  r3  r  r  r   r   pageMargins)r   r   r   r   r   r   r  r  s     r3   r  Worksheet._write_page_marginsu  so     T%%&d''(DOO$t))*t))*t))*

 	M:6r8   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	paperSizerc   ru  r   
fitToWidthfitToHeight)	pageOrderoverThenDownfirstPageNumber)r   portrait)r   	landscape)blackAndWhiterI   r   )useFirstPageNumberrI   horizontalDpiverticalDpi	pageSetup)r   r   r  r   r   r   r   r   r   r   r   rs   r  r  r  r  s     r3   r  Worksheet._write_page_setup  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4r8   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     r3   r  Worksheet._write_print_options  s    
)) <<78 <<56 o. ./NJ7r8   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  rw   r  r  s     r3   r  Worksheet._write_header_footer  s    
((12((56%%
;{{&&({{&&(n-!!
; "r8   c                 <    U R                  SU R                  5        g )N	oddHeader)r  r   r  s    r3   r^  Worksheet._write_odd_header      {DKK8r8   c                 <    U R                  SU R                  5        g )N	oddFooter)r  r   r  s    r3   r_  Worksheet._write_odd_footer  rd  r8   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   rE  r,  )_calculate_spansr  r{   r|   r   r   r   r+   r   
_write_rowr}   r~   _write_cellr  _write_empty_row)r-   rO  
span_indexr  rP  col_refs         r3   r9  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r8   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   rj  r  r}   r~   rk  r  rl  clear)r-   current_row_numrO  r  rP  rn  s         r3   rR  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 	

r8   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   rE  r   r;   )r  r{   r|   r   r}   r~   r4  r3  r   r+   r   )r-   spansspan_minspan_maxrO  rP  rm  s          r3   ri  Worksheet._calculate_spansR  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@ r8   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   ru  s)customFormatr   htg)r   r   r  r0  )r0  r   rF  r   r,  )r   r1  r  r   rv   _xml_empty_tag_unencoded_xml_start_tag_unencoded)r-   r,  ru  
properties	empty_rowr5  r\  rH  r   r1  r0  r  s               r3   rj  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:))%<))%<r8   c                 &    U R                  XUSS9  g )NT)r  )rj  )r-   r,  ru  r  s       r3   rl  Worksheet._write_empty_row  s    J$?r8   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  rz  r   r  r@  z<r>z</r>rU   )r  r  r   )r^  z#N/Az#NAME?z#NULL!r]  z#REF!r  r^   )r  e)r  r:  rX   r  )cmr   crO   rT   rQ   vm)$r&   rP   r1  r  r   r   r  rJ  _xml_number_elementrY  rG  rq   _xml_string_element_escape_control_charactersr"  r$  _xml_rich_inline_stringr   _xml_inline_stringrm  r@  r8  r:  _xml_formula_elementrl  r  r(  r,   r  _write_cell_array_formular  _write_cell_valuer  r  r  r  )r-   r,  rJ   rQ  r  r  r5  row_xfcol_xftype_cell_namerG  r  rm  error_codess                 r3   rk  Worksheet._write_cell  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 )Nr^   vr  )r-   rm  s     r3   r  Worksheet._write_cell_value.  s    =EsE*r8   c                 4    SSU4/nU R                  SX5        g )N)r  arrayrs  r-  r  )r-   rl  r  r  s       r3   r  #Worksheet._write_cell_array_formula5  s!    $uj&9:
sG8r8   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     r3   r  Worksheet._write_sheet_pr;  s    
 NNNN((%%z4+<+<=>>>/0==DNNd.B.B	:6!!#""$&&(i(	:6r8   c                 R    U R                   (       d  g S/nU R                  SU5        g )N)	fitToPager   pageSetUpPr)r   r  r  s     r3   r  Worksheet._write_page_set_up_prW  s$    }}&'
M:6r8   c                 l    U R                   nU(       d  g U R                  SUR                  5       5        g )NtabColor)r   _write_colorr  r  s     r3   r  Worksheet._write_tab_color_  s*    *e&7&7&9:r8   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     r3   r  Worksheet._write_outline_prh  s    
##01!!12!!1278K4r8   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 )Nrv  manualBreakCount	rowBreaksi?  )r  r   rP  r  
_write_brkr  )r-   page_breaksrv  r  rO  s        r3   r  Worksheet._write_row_breaksz  sy    ++DLL9K  e'


 	K4"GOOGU+ # 	+&r8   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 )Nrv  r  	colBreaksi )r  r   rP  r  r  r  )r-   r  rv  r  rP  s        r3   r  Worksheet._write_col_breaks  sy    ++DLL9K  e'


 	K4"GOOGW- # 	+&r8   c                 :    SU4SU4S/nU R                  SU5        g )Nrj  r3  )manr   brkr  )r-   brk_idbrk_maxr  s       r3   r  Worksheet._write_brk  s'    Vnug&6
C
E:.r8   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 )Nrv  
mergeCells)r   rP  r  _write_merge_cellr  )r-   r   rv  r  merged_ranges        r3   r  Worksheet._write_merge_cells  s`    zzL!&'
L*5(L""<0 ) 	,'r8   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 )Nr;   rs  	mergeCell)r%   r  )
r-   r  row_minr2  row_maxr3  r?   r@   rs  r  s
             r3   r  Worksheet._write_merge_cell  sK    /;,7 #74"74slV#cl^
K4r8   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  rS   Tr   r	  External)rG  r  r  r  r   r  rJ  _is_object_link
_link_typer   URLEXTERNALr   _write_hyperlink_externalr   r  r   _write_hyperlink_internalr  )r-   ru  rO  rv  rP  r  rQ  s          r3   r  Worksheet._write_hyperlinks  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 $  @ 	,'r8   r,  rJ   id_numr  c                 ~   [        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rIdrs  r:idr  displaytooltipr  )r%   r:  r  r  r  r  r  r  )r-   r,  rJ   r  r  rs  r_idr  s           r3   r  #Worksheet._write_hyperlink_external  s    )s6{"clVTN3
;;z3;;78y#))4588y#((34K4r8   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 )Nrs  r  r  r  r  )r%   r"  r  r  r  r  )r-   r,  rJ   r  rs  r  s         r3   r  #Worksheet._write_hyperlink_internal  sh    )clZ$;<
88y#((349cii01K4r8   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 )Nrs  
autoFilter)r   r   r  _write_autofiltersr  r  r  s     r3   r  Worksheet._write_auto_filter  sd    ""d1123
>>j9##%l+ j9r8   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)r-   col1col2rJ   r  r   s         r3   r  Worksheet._write_autofilters+  si     ((ax(C*** %%c*F**3/K %%cj+F )r8   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  )r-   r  r   r  r  s        r3   r  Worksheet._write_filter_column<  sS    '(
NJ7!( &&w/.)r8   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  )rd  r   r   r   r  )r:  rz  rP  r  r  rG  _write_filterr  )r-   r  filter
non_blanksr  rt  s         r3   r  Worksheet._write_filtersK  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      r3   r  Worksheet._write_filter_  s    cl^
Hj1r8   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   r_   r}  )rP  r  _write_custom_filterr  )r-   r  r  s      r3   r  Worksheet._write_custom_filterse  s    v;!0%%v.o. J ayA~(\
(\
 <%%fQi;%%fQi;o.r8   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  r_   r}  rF  r  r  zUnknown operator = r  r  customFilter)r   r  r  )r-   r  r  r  r  s        r3   r  Worksheet._write_custom_filter|  s    
  #
	 * *H&xj12 wz8455#,'NJ7r8   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   rt  )r  r   r   )pivotTablesr   r  )selectUnlockedCellsr   sheetProtection)r   r  r  )r-   r  r  s      r3   r  !Worksheet._write_sheet_protection  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:r8   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       r3   r  !Worksheet._write_protected_ranges  sY    $$)-.040E0E,JH''
I 1F 	+,r8   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  rm   protectedRanger  r  )r-   r  r
  r  r  s        r3   r   Worksheet._write_protected_range  sT    
z8457J/06:./,j9r8   c                     U R                   (       d  g U =R                  S-  sl        U R                  U R                  5        g r  )r   r   _write_drawingr  s    r3   r  Worksheet._write_drawings  s,    ||!DNN+r8   c                 N    S[        U5      -   nSU4/nU R                  SU5        g )Nr  r  r   r:  r  )r-   r  r  r  s       r3   r  Worksheet._write_drawing  s,    s:&tn%
Iz2r8   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   r:  r  r-   r  r  s      r3   r  Worksheet._write_legacy_drawing  sK    || 	!s4>>**tn%
OZ8r8   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   r:  r  r  s      r3   r  "Worksheet._write_legacy_drawing_hf  sN    "" 	!s4>>**tn%
-z:r8   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   r:  r  r  s      r3   r  Worksheet._write_picture	  sM    $$ 	!s4>>**tn%
Iz2r8   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 )Nrv  dataValidations)r   rP  r  _write_data_validationr  )r-   r   rv  r  
validations        r3   r  !Worksheet._write_data_validations  sd    &&K &'
-z:%J''
3 & 	+,r8   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 )$Nr^   r  rf  r  r  r  rA  r  r  r  r  r   )
errorStyler  r  )r+  r  r  )
allowBlankr   r  )showDropDownr   r  )showInputMessager   r  )showErrorMessager   r  
errorTitler  r  r  promptTitler  promptr  dataValidationrm  r  )r$   r  r  r  r  _write_formula_1_write_formula_2r  )	r-   r  r  r  r  	row_firstr  row_lastr  s	            r3   r'   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./r8   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)r@  r  r  r(  r,   r"  rL  r  r-   rl  s     r3   r4  Worksheet._write_formula_1u  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r(  r,   r"  rL  r  r;  s     r3   r5  Worksheet._write_formula_2  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  )rG  r   r  _write_conditional_formatting)r-   r  
cond_ranges      r3   r  $Worksheet._write_conditional_formats  sG    ))..01 J..--j9 !r8   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  )r-   rD  paramsr  params        r3   rC  'Worksheet._write_conditional_formatting  sI    
+,
3Z@E&  	12r8   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 )0NrA  rP   dxfIdr:  r  )
stopIfTruer   r  r  r  cfRuler  r  rm  r  below)r  r   r  )equalAverager   z[123] std devz([123]) std devrt  r   r  r  )r  r   r  )r  r   r  rankr  r  r  r<  r
  r  r  rl  r  r  r  r  r  r>  r  r;  r  r  )r  r  r  _write_formula_elementr  r%  rs  groupr  _write_color_scale_write_data_bar_write_data_bar_ext_write_icon_set)r-   rI  r  r&  rR  s        r3   rH  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' )r8   c                      [        U5        U R	                  SU5        g ! [         a*    UR                  S5      (       a  UR                  S5      n NFf = f)Nr  rl  r?  r;  s     r3   rS   Worksheet._write_formula_element  sQ    	.'N 	y'2  	.!!#&&!..-	.rA  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 )Nr>  r  r  r  r  r  r  r  r  r  r  )r  _write_cfvor  r  r  )r-   rJ  s     r3   rU  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,'r8   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  r]  r  r  r  )r-   rJ  r  s      r3   rV  Worksheet._write_data_bar6  s    
 5 {E,,?@A5 {E,,?@A99Z  ./Iz2z*E+,>?z*E+,>?'5#5#A#A#CD)$r8   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)rn   rP  r   r  r  
_write_extr  r  )r-   rJ  worksheet_countdata_bar_countrf  s        r3   rW  Worksheet._write_data_bar_extM  s     **q.T001A50O3TT f""5)H%@Ax.% (#r8   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  r*  r  r  rb  r  )r  r   r  rA  rm  r  )r  r  r  reversedr]  r  )r-   rJ  r  icons       r3   rX  Worksheet._write_icon_set_  s    
 "22$eL&9:;J99\""./99_%%n-Iz2 U7^,DT&\4=$z:JK - 	)$r8   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 )NrA  r  )gter   cfvor  )r-   cf_typer  r  r  s        r3   r]  Worksheet._write_cfvou  sG    w'(
?ucl+j)FJ/r8   c                 &    U R                  X5        g r  r  r  s      r3   r  Worksheet._write_color  s    D-r8   c                 H    U R                    H  nU R                  " U6   M     g r  )r   _write_selection)r-   	selections     r3   r  Worksheet._write_selections  s    I!!9- )r8   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  rz  r  )r-   r  r  r  r  s        r3   ry  Worksheet._write_selection  sX    
vtn-|[9:w./K4r8   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)r-   r   s     r3   r  Worksheet._write_panes  s8    

8q=##U+$$e,r8   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 )Nr^   r   bottomRighttopRight
bottomLeftfrozenr   frozenSplitr=   xSplitySplitr  
activePanestater  )r%   r   r  r  )r-   r,  rJ   r  r  r  r  y_splitx_splitr   r   r  r  r  rK   row_cellcol_cells                    r3   r  Worksheet._write_freeze_panes  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/r8   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 )NFr^   r   Tre   i,  r  rd     r_   r}  rg   r  r  r  r  r  r  r  r  r  )r   r+   _calculate_x_split_widthr%   r  r  )r-   r,  rJ   r  r  rK   r  has_selectionr   r  r  r  r  r   r  r  s                   r3   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/r8   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$ )	Nr2  rF  r   r  r_   r}  re   r  )r+   )r-   r5  rX  rY  rZ  pointstwipss          r3   r  "Worksheet._calculate_x_split_width$  so      19G";<sBCF0367'AF !a  r8   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 )Nrv  
tablePartsr   )r   rP  r  r   _write_table_partr  )r-   r   rv  r  rK   s        r3   r  Worksheet._write_table_parts;  s|    F  

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

 	K4r8   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 )Nrg  )rP  r   r   r  _write_ext_list_data_bars_write_ext_list_sparklinesr  )r-   has_data_barshas_sparkliness      r3   r  Worksheet._write_ext_listb  sd    D//0T__-^ 	H%**,++-(#r8   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:conditionalFormattingsrh  )ri  r  r   "_write_conditional_formatting_2010r  )r-   r  s     r3   r  #Worksheet._write_ext_list_data_barsu  s]    @A89 ++H33H= , 	67% r8   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:conditionalFormattingrB  r  rD  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  )r-   r  xmlns_xmr  s       r3   r  ,Worksheet._write_conditional_formatting_2010  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6r8   c                 F    SnUS   nSU4SU4/nU R                  SU5        g )Nr  rf  rA  rj  r  r  )r-   r  	rule_typerf  r  s        r3   r  Worksheet._write_x14_cf_rule  s4    	y)D$<8
L*5r8   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   rc   r`  ra  r  )borderr   r  )gradientr   r  r2  )r  leftToRightr3  )r  r  r  )negativeBarColorSameAsPositiver   r  )$negativeBarBorderColorSameAsPositiver   r  middle)axisPositionr  r  )r  r  r  )r  r  )r-   r  r  r  r  s        r3   r  Worksheet._write_x14_data_bar  s   

 *%*%


 (m,K o.O$.:;O$/:;-.CD )=>IJ'(H489'(F267M:6r8   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 )NrA  )r4  r3  rA  rC  zx14:cfvoxm:f)r  r  r  r  )r-   r  rm  r  s       r3   r  Worksheet._write_x14_cfvo  sV    y)*
<<
J7
J7""651j)r8   c                 D    U R                  SUR                  5       5        g )Nzx14:borderColorr  r  r  s     r3   r  !Worksheet._write_x14_border_color  s    +U->->-@Ar8   c                 D    U R                  SUR                  5       5        g )Nzx14:negativeFillColorr  r  r  s     r3   r  (Worksheet._write_x14_negative_fill_color  s    3U5F5F5HIr8   c                 D    U R                  SUR                  5       5        g )Nzx14:negativeBorderColorr  r  s     r3   r  *Worksheet._write_x14_negative_border_color  s    5u7H7H7JKr8   c                 D    U R                  SUR                  5       5        g )Nzx14:axisColorr  r  s     r3   r  Worksheet._write_x14_axis_color  s    OU->->-@Ar8   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:sparklineGroupsrh  )ri  _write_sparkline_groupsrn  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  )r-   r  s     r3   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% r8   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:sparklinesrv  r  r  zx14:sparkliner  r  )r  r  r  r  )r-   r  r  r  r  s        r3   r  Worksheet._write_sparklines(  s     	,-y)*A#H-a0K -a0H0""6;7"":x8o. + 	*+r8   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urirh  r  )r-   r  r  	xmlns_x14r  s        r3   ri  Worksheet._write_ext9  s<    788	 )$CL


 	E:.r8   c                 6    SnSU4/nU R                  SU5        g )Nr  r  r  r  )r-   r  r  s      r3   r  !Worksheet._write_sparkline_groupsE  s%    H!8,-
1:>r8   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  r3  rT  cust_max	manualMaxr  r4  cust_min	manualMinrA  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  )r-   r  r  r  s       r3   r   Worksheet._write_sparkline_groupM  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*=r8   c                 R    U(       a   U R                  XR                  5       5        g g r  r  )r-   tagr  s      r3   _write_spark_colorWorksheet._write_spark_color  s!    c#4#4#67 r8   c                 (    U R                  SU5        g )Nzx14:colorSeriesr  r  s     r3   r  Worksheet._write_color_series  s     159r8   c                 (    U R                  SU5        g )Nzx14:colorNegativer  r  s     r3   r  Worksheet._write_color_negative  s     3U;r8   c                 :    U R                  S[        S5      5        g )Nzx14:colorAxisrE  )r  r   r  s    r3   r  Worksheet._write_color_axis  s    y1ABr8   c                 (    U R                  SU5        g )Nzx14:colorMarkersr  r  s     r3   r  Worksheet._write_color_markers  s     2E:r8   c                 (    U R                  SU5        g )Nzx14:colorFirstr  r  s     r3   r  Worksheet._write_color_first  s     0%8r8   c                 (    U R                  SU5        g )Nzx14:colorLastr  r  s     r3   r  Worksheet._write_color_last      7r8   c                 (    U R                  SU5        g )Nzx14:colorHighr  r  s     r3   r  Worksheet._write_color_high  r	  r8   c                 (    U R                  SU5        g )Nzx14:colorLowr  r  s     r3   r  Worksheet._write_color_low  s    6r8   c                 0    SS/nU R                  SU5        g )N)fontId0)rA  noConversion
phoneticPrr  r  s     r3   r  Worksheet._write_phonetic_pr  s#     $


 	L*5r8   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  rl  r  formulaRanger  unlockedFormular  emptyCellReferencer  listDataValidationr  calculatedColumnr  twoDigitTextYear)r  r  r  _write_ignored_errorr  )r-   ignored_ranges     r3   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/*r8   c                 8    SU4US4/nU R                  SU5        g )Nr  r   ignoredErrorr  )r-   r  r  r  s       r3   r  Worksheet._write_ignored_error   s,     m$O


 	NJ7r8   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   r   r  r  r   r   r	  r   r   r   r   r
  r~   r}   r|   r{   r   r   r   r   r   r   r  rw   rv   rt   r   r   r   r   r   r   r  ru   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   rn   rs   r   r   r   r   r   r   r   r   r   r  r   r   rm   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  rp   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   ro   r  r  r  r   r   r   r   rr   r   r   r  r   r  r   r   r  r  r   r   r   r   r   r  r  r  r   ry   rx   rz   r   r   r  re  )F)Nr   rz  )NNN)i  )NF)r   r   )r   r   r   r   )NNr   )NN)rc   )r^   N)r   )r`   r`   ra   ra   )r^   NN)FF)r   )rJ  
__module____qualname____firstlineno____doc__rl   r.  r7   r4  r2  rI  r*  rZ  r)  re  r!  rn  r#  rF   r  rt  rv  staticmethodr  ru  r  r?  r  r9  r  r'  r  r  r  r  r  r  r  r   r  r
  r  r  r  r  r  r!  r%  r)  r-  rN   r8  r<  rY  r^  rb  rf  rm  rt  r  r  r  rT  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r%  r(  r+  r/  r4  rM  rU  rX  r[  r_  rb  re  rh  rk  rn  rr  rv  ry  r~  r  r  r  r  r  rO  r  rq  r  r~  r  r  r  r  r   r+   r+  r3  r8  r<  rC  r  rF  rS  rT  r;  ra  r   ri  r   rl  ry  r|  r  r|  r  r  r  r  r#  r6  r  r  r  r  r  r  rH  r  r  r  r  r  r  r'  r  r  r  r  r  r  r^  r_  r9  rR  ri  rj  rl  rk  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r4  r5  r  rC  rH  rS  rU  rV  rW  rX  r]  r  r  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes____classcell__)r  s   @r3   rZ   rZ      s   Y$x$3L , ,&SJj A A&6 A A$B ? ?&$ J J*@  *
 *
X  ) )Zrn * *H 4l A A$* C C$6 H H*9v 8 8.wr7  ,  ,  > * *X 1 1f D DL  B%2&5$"  4$ IM; ;z IMQ Q0SNj8t?((. JNJ JX 'E 'ER:x(T @ @D @Dv vp S Sj
 } }~  7  7D 9 9$ GH$0 > >, 6 6"$%21(f D ! !F C CF''+$&M'^M'^74 7 74&0*$  @''$%','>"(^,'\bHBY&P4B=:U!n"L4L4 L4 	L4\C4J.$
8
t VH\V|<*
 &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=n@t#l+9787;5$'*'*/($50(d5S 5s 5C 5c 5$5S 5s 5 5:"G"*)(2/.86.;`
-
:,39;3-$K0Z4"4
3j(X3(*%.$$%,
0..
5
-60pE0N.(25$&!+7Z6%7N	*BJLB,!\,"
/?W>r8
:<C;98876++Z8 8r8   rZ   )Ir;  r_  r  r%  r  collectionsr   r   r  r   	fractionsr   	functoolsr   ior	   r
   r   warningsr   xlsxwriter.colorr   xlsxwriter.commentsr   xlsxwriter.imager   xlsxwriter.urlr   r   xlsxwriter.vmlr   r^   r   r   r   r   r   
exceptionsr   r   rP   r   r2  r   utilityr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r  VERBOSErr  r7   rF   rN   rh  r  ra  rS  r  rw  r  r  r  rZ   r`  r8   r3   <module>r8     s*     	 	  /       " + " ( %  7 7 <      !jj< JJ?  P0@@ GX.G%;<X'78X'78i):; i)AB z+;<  /KL ": A}8	## A}8r8   