
    h,                        S SK r S SKrS SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJrJr  S SKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*J+r+J,r,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7   " S S\Rp                  5      r9 " S S5      r: " S S5      r;g)     N)datetimetimezone)Decimal)Fraction)warn)ZIP_DEFLATEDLargeZipFileZipFileZipInfo)Image   )	xmlwriter)	ChartArea)ChartBar)ChartColumn)ChartDoughnut)	ChartLine)ChartPie)
ChartRadar)ChartScatter)
ChartStock)
Chartsheet)DuplicateWorksheetNameFileCreateErrorFileSizeErrorInvalidWorksheetName)FormatPackager)SharedStringTable)xl_cell_to_rowcol)	Worksheetc                     ^  \ rS rSrSr\r\rS=U 4S jjr	S r
S rS=S jrS=S jrS>S jrS	 rS?S
 jr S@S jrS rS rS>S jrS rS>S jrS>S jrS rS rS rS rS rS>S jrS rS rS r S>S jr!S?S jr"S r#S r$S r%S  r&S! r'S" r(S# r)S$ r*S% r+S& r,S' r-S( r.S) r/S* r0S+ r1S, r2S- r3S. r4S/ r5S0 r6S1 r7S2 r8S3 r9S4 r:S5 r;S6 r<S7 r=S8 r>S9 r?S: r@S; rAS<rBU =rC$ )AWorkbook0   z5
A class for writing the Excel XLSX Workbook file.


c                   > Uc  0 n[         TU ]  5         Xl        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  S	S5      U l	        UR                  S
S5      U l
        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  S0 5      U l        UR                  SS5      U l        U R"                  S:  a  SU l        UR                  S5      (       a  SU l        O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        / U l        / U l        / U l        0 U l         / U l!        / U l"        0 U l#        / U l$        0 U l%        / U l&        SU l'        / U l(        / U l)        / U l*        / U l+        0 U l,        / U l-        [\        R^                  " [`        Rb                  5      U l2        SU l3        SU l4        SU l5        SU l6        SU l7        SU l8        SU l9        [u        5       U l;        SU l<        SU l=        SU l>        SU l?        SU l@        0 U lA        / U lB        SU lC        SU lD        SU lE        SU lF        SU lG        SU lH        SU lI        SU lJ        SU lK        SU lL        SU lM        SU lN        [        5       U lP        [        5       U lR        U R                  (       a  SU l        U R                  (       a  U R                  SSS.5        OU R                  S S05        U R                  S!S05      U lT        U R                  b#  U R                  S"U R                  05      U l
        gg)#z
Constructor.

Ntmpdir	date_1904Fstrings_to_numbersstrings_to_formulasTstrings_to_urlsnan_inf_to_errorsdefault_date_formatconstant_memory	in_memoryexcel2003_styleremove_timezoneuse_future_functionsdefault_format_propertiesmax_url_lengthi     	use_zip64r   SheetChart      >  %  X  autoig )xf_indexfont_familyr?   	hyperlink
num_format)Usuper__init__filenamegetr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   allow_zip64WorksheetMetaworksheet_metaselected
fileclosed
filehandleinternal_fh
sheet_name
chart_namesheetname_countchartname_countworksheets_objschartsdrawings
sheetnamesformats
xf_formatsxf_format_indicesdxf_formatsdxf_format_indicespalette
font_countnum_formatsdefined_namesnamed_rangescustom_colorsdoc_propertiescustom_propertiesr   nowr   utc
createtimenum_vml_filesnum_comment_filesx_windowy_windowwindow_widthwindow_height	tab_ratior    	str_tablevba_projectvba_project_is_streamvba_project_signaturevba_project_signature_is_streamvba_codenameimage_typesimagesborder_count
fill_countdrawing_count	calc_modecalc_on_loadcalc_idhas_comments	read_onlyhas_metadatahas_embedded_imageshas_dynamic_functionshas_embedded_descriptionsEmbeddedImagesembedded_imagessetfeature_property_bags
add_formatdefault_url_format)selfrE   options	__class__s      fC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\xlsxwriter/workbook.pyrD   Workbook.__init__?   s   
 ?G kk(D1 [%8")++.BE"J#*;;/Dd#K &{{+<dC!(-@%!H#*;;/Dd#K &{{+<eD [%8&{{+<eD&{{+<eD$+KK0F$N!)05PRT)U&%kk*:DA$"&D;;{###D$D+o!!  !!#"$ !#",,x||4!"!!*,%*"%)"/4,  !!#( %*").&-/%(U" >>#(D  OO1=>OOZO, #'//;2E"F ##/'+t778(D$ 0    c                     U $ )z0Return self object to use with "with" statement. r   s    r   	__enter__Workbook.__enter__   s    r   c                 $    U R                  5         g)z-Close workbook when exiting "with" statement.N)close)r   typevalue	tracebacks       r   __exit__Workbook.__exit__   s     	

r   c                 >    Uc  U R                   nU R                  XS9$ )z
Add a new worksheet to the Excel workbook.

Args:
    name: The worksheet name. Defaults to 'Sheet1', etc.

Returns:
    Reference to a worksheet object.

worksheet_class)r   
_add_sheet)r   namer   s      r   add_worksheetWorkbook.add_worksheet   s&     ""22OtEEr   c                 >    Uc  U R                   nU R                  XS9$ )z
Add a new chartsheet to the Excel workbook.

Args:
    name: The chartsheet name. Defaults to 'Sheet1', etc.

Returns:
    Reference to a chartsheet object.

r   )chartsheet_classr   )r   r   r   s      r   add_chartsheetWorkbook.add_chartsheet   s'     ##44tFFr   c                    U R                   R                  5       nU R                  (       a  SSSS.nU(       a  UR                  U5        [	        X R
                  U R                  5      nU R                  R                  U5        U$ )z
Add a new Format to the Excel Workbook.

Args:
    properties: The format properties.

Returns:
    Reference to a Format object.

Arial
   )	font_name	font_sizetheme)	r3   copyr0   updater   rX   rZ   rV   append)r   
propertiesformat_properties	xf_formats       r   r   Workbook.add_format   sv     !::??A.5BQW X$$Z055t7N7N
	
 	I&r   c                 L   UR                  S5      nUc  [        S5        gUS:X  a  [        U5      nOUS:X  a  [        U5      nOUS:X  a  [	        U5      nOyUS:X  a  [        5       nOhUS:X  a  [        U5      nOVUS	:X  a  [        5       nOEUS
:X  a  [        U5      nO3US:X  a  [        U5      nO!US:X  a  [        5       nO[        SU S35        gSU;   a
  US   Ul        SUl        U R                  Ul        U R                  Ul        U R                  R!                  U5        U$ )z|
Create a chart object.

Args:
    options: The chart type and subtype options.

Returns:
    Reference to a Chart object.

r   Nz)Chart type must be defined in add_chart()areabarcolumndoughnutlinepieradarscatterstockzUnknown chart type 'z' in add_chart()r   T)rF   r   r   r   r   r   r   r   r   r   r   rO   embeddedr(   r1   rS   r   )r   r   
chart_typecharts       r   	add_chartWorkbook.add_chart   s     [[(
<=g&E5 W%E8#(E:%!OE6!g&E5 JE7"w'E9$ )E7"LE'
|3CDE W&vE.. $ 4 45!r   c                     U(       d4  [         R                  R                  U5      (       d  [        SU S35        gU R                  c  SU l        Xl        X l        g)z
Add a vbaProject binary to the Excel workbook.

Args:
    vba_project: The vbaProject binary file name.
    is_stream:   vba_project is an in memory byte stream.

Returns:
    0 on success.

zVBA project binary file '' not found.r   ThisWorkbookr   )ospathexistsr   rr   rn   ro   )r   rn   	is_streams      r   add_vba_projectWorkbook.add_vba_project'  sQ     !<!<,[MFG$ .D&%."r   c                     U R                  X5      S:X  a  gU(       d4  [        R                  R                  U5      (       d  [	        SU S35        gX l        X@l        g)a|  
Add a vbaProject binary and a vbaProjectSignature binary to the
Excel workbook.

Args:
    vba_project:           The vbaProject binary file name.
    signature:             The vbaProjectSignature binary file name.
    project_is_stream:     vba_project is an in memory byte stream.
    signature_is_stream:   signature is an in memory byte stream.

Returns:
    0 on success.

r   z#VBA project signature binary file 'r   r   )r   r   r   r   r   rp   rq   )r   rn   	signatureproject_is_streamsignature_is_streams        r   add_signed_vba_projectWorkbook.add_signed_vba_project?  sS    " ?2E"277>>)+D+D6ykNO%."/B,r   c                 B   U R                   (       dR   U R                  5         SU l         U R                  (       a(  U R                  5        H  nUR                  5         M     gg[        S5        g! [         a  n[        U5      eSnAf[         a    [        S5      ef = f)zQ
Call finalization code and close file.

Args:
    None.

Returns:
    Nothing.

NzBFilesize would require ZIP64 extensions. Use workbook.use_zip64().Tz'Calling close() on already closed file.)
rK   _store_workbookIOErrorr   r	   r   r.   
worksheets
_opt_closer   )r   e	worksheets      r   r   Workbook.close\  s     $$& #DO ##!%!2I((* "3 $
 :;!  )%a(( #0 s   A0 0
B:BBc                     U(       a  [        US-  S-  5      U l        OSU l        U(       a  [        US-  S-  5      U l        gSU l        g)z
Set the size of a workbook window.

Args:
    width:  Width  of the window in pixels.
    height: Height of the window in pixels.

Returns:
    Nothing.

i  `   r;   r<   N)intrj   rk   )r   widthheights      r   set_sizeWorkbook.set_size}  sF      #EDL2$5 6D %D!$Vd]R%7!8D!%Dr   c                 j    Uc  gUS:  d  US:  a  [        SU S35        g[        US-  5      U l        g)z
Set the ratio between worksheet tabs and the horizontal slider.

Args:
    tab_ratio: The tab ratio, 0 <= tab_ratio <= 100

Returns:
    Nothing.

Nr   d   zTab ratio 'z ' outside: 0 <= tab_ratio <= 100r   )r   r   rl   )r   rl   s     r   set_tab_ratioWorkbook.set_tab_ratio  s<     q=IO;yk)IJK R0DNr   c                     Xl         g)z
Set the document properties such as Title, Author etc.

Args:
    properties: Dictionary of document properties.

Returns:
    Nothing.

N)ra   )r   r   s     r   set_propertiesWorkbook.set_properties  s
     )r   c                 ^   Ub  Uc  [        S5        gUcr  [        U[        5      (       a  SnOZ[        U[        5      (       a  SnOB[        U[        5      (       a  SnO*[        U[
        [        [        [        45      (       a  SnOSnUS:X  a  [        U5      R                  5       nUS:X  a  UR                  S5      nUS	;   a  [        U5      nUS:X  a  [        U5      S
:  a  [        SU S35        [        U5      S
:  a  [        SU S35        U R                  R                  XU45        g)z
Set a custom document property.

Args:
    name:          The name of the custom property.
    value:         The value of the custom property.
    property_type: The type of the custom property. Optional.

Returns:
    0 on success.

zGThe name and value parameters must be non-None in set_custom_property()r   booldate
number_intnumbertextz%Y-%m-%dT%H:%M:%SZ)r   r   r5   z_Length of 'value' parameter exceeds Excel's limit of 255 characters in set_custom_property(): ''z^Length of 'name' parameter exceeds Excel's limit of 255 characters in set_custom_property(): 'r   )r   
isinstancer   r   r   floatr   r   strlowerstrftimelenrb   r   )r   r   r   property_types       r   set_custom_propertyWorkbook.set_custom_property  s2    <5=(  %&& &E8,, &E3'' ,EE3#BCC ( & F"J$$&EF"NN#78E44JEF"s5zC'799>qB
 t9s?99=aA
 	%%tM&BCr   c                 b    Xl         US:X  a  SU l        OUS:X  a  SU l         U(       a  X l        gg)z
Set the Excel calculation mode for the workbook.

Args:
    mode: String containing one of:
        * manual
        * auto_except_tables
        * auto

Returns:
    Nothing.

manualFauto_except_tablesautoNoTableN)rx   ry   rz   )r   moderz   s      r   set_calc_modeWorkbook.set_calc_mode  s8     8 %D))*DN "L r   c                    SnSnUR                  S5      (       a  UR                  S5      n[        R                  " S5      nUR	                  U5      nU(       aG  UR                  S5      nUR                  S5      nU R                  U5      nUc  [        SU S35        g	OS	n[        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	U R                  R                  XUS/5        g)z
Create a defined name in the workbook.

Args:
    name:    The defined name.
    formula: The cell or range that the defined name refers to.

Returns:
    0 on success.

N =z^([^!]+)!([^!]+)$r      zUnknown sheet name 'z' in defined_name()r   z^[\w\\][\w\\.]*$z^\dz-Invalid Excel characters in defined_name(): 'r   z^[a-zA-Z][a-zA-Z]?[a-dA-D]?\d+$z0Name looks like a cell name in defined_name(): 'z^[rcRC]$z^[rcRC]\d+[rcRC]\d+$zInvalid name 'z&' like a RC cell ref in defined_name()Fr   )
startswithlstriprecompilematchgroup_get_sheet_indexr   UNICODEr^   r   )r   r   formulasheet_index	sheetnamesheet_partsr  s          r   define_nameWorkbook.define_name  so    	 c""nnS)G jj!56!!$'AI;;q>D//	:K "+I;6IJK #
 K xx+T2::>>"((DC
 C
 @aHI 886==CD6KL 88K&&"((3JD*Q*Q>$'MNO!!4gu"EFr   c                     U R                   $ )zv
Return a list of the worksheet objects in the workbook.

Args:
    None.

Returns:
    A list of worksheet objects.

)rR   r   s    r   r   Workbook.worksheetsC  s     ###r   c                 8    U R                   R                  U5      $ )z
Return a worksheet object in the workbook using the sheetname.

Args:
    name: The name of the worksheet.

Returns:
    A worksheet object or None.

)rU   rF   r   r   s     r   get_worksheet_by_nameWorkbook.get_worksheet_by_nameP  s     ""4((r   c                     U R                   $ )z
Get the default url format used when a user defined format isn't
specified with write_url(). The format is the hyperlink style defined
by Excel for the default theme.

Args:
    None.

Returns:
    A format object.

)r   r   s    r   get_default_url_formatWorkbook.get_default_url_format]  s     &&&r   c                     SU l         g)zg
Allow ZIP64 extensions when writing xlsx file zip container.

Args:
    None.

Returns:
    Nothing.

TN)rG   r   s    r   r6   Workbook.use_zip64l  s      r   c                 &    Ub  Xl         gSU l         g)z
Set the VBA name for the workbook. By default the workbook is referred
to as ThisWorkbook in VBA.

Args:
    name: The VBA name for the workbook.

Returns:
    Nothing.

Nr   )rr   r  s     r   set_vba_nameWorkbook.set_vba_namey  s      $ .Dr   c                     SU l         g)zk
Set the Excel "Read-only recommended" option when saving a file.

Args:
    None.

Returns:
    Nothing.

r   N)r|   r   s    r   read_only_recommendedWorkbook.read_only_recommended  s     r   c                    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                  S5        U R                  5         g )Nworkbook)_prepare_format_properties_xml_declaration_write_workbook_write_file_version_write_file_sharing_write_workbook_pr_write_book_views_write_sheets_write_defined_names_write_calc_pr_xml_end_tag
_xml_closer   s    r   _assemble_xml_fileWorkbook._assemble_xml_file  s     	'') 	 	 	  " 	  " 	! 	  	 	!!# 	 	*% 	r   c                     [        U R                  S[        U R                  S9nU R                  5       nU R                  5       (       d  U R                  5         U R                  R                  S:X  a(  SU R                  S   l        SU R                  S   l        U R                  5        H0  nUR                  U R                  R                  :X  d  M)  SUl        M2     U R                  (       a6  U R                  5        H"  nUR                   b  M  UR#                  5         M$     U R%                  5         U R'                  5         U R)                  5         U R+                  5         U R-                  5         U R/                  5         U R1                  5         UR3                  U 5        UR5                  U R6                  5        UR9                  U R:                  5        UR=                  5       nS n[?        U5       H  u  pgUu  pn
U R:                  (       au  [A        U	S5      nURB                  Ul"        U
(       a!  URG                  XRI                  5       5        M`  URG                  XRI                  5       RK                  S5      5        M  [L        RN                  " S5      n[P        RR                  " XU45         URU                  X5        [P        RV                  " U5        M     UR_                  5         g ! [         a  nUeS nAff = f! [X         aA  n[[        U[]        U5      S-
  5       H  n[P        RV                  " X]   S   5        M      UeS nAff = f)Nw)compression
allowZip64r   r   )  r   r   r   r   r   zutf-8)	r4  r      r   r   r   r   r   r   )0r
   rE   r   rG   r   _get_packagerr   r   rI   activesheetrR   rJ   hiddenindexactivern   rr   r  _prepare_sst_string_data_prepare_vml_prepare_defined_names_prepare_drawings_add_chart_data_prepare_tables_prepare_metadata_add_workbook_set_tmpdirr'   _set_in_memoryr/   _create_package	enumerater   r2  compress_typewritestrgetvalueencodetimemktimer   utimewriteremover	   ranger   r   )r   	xlsx_filer   packagersheet	xml_filesfile_id	file_dataos_filenamexml_filename	is_binaryzipinfo	timestampis                 r   r   Workbook._store_workbook  s   	(++	I %%'     **a//0D  #,-.D  #* __&E{{d11===  '
 *%%-&&( +
 	%%' 	 	##% 	  	 	 	  	t$T[[)/,,.	  #,I"6G3<0Ky~~!,0EF )2(=(=%&&w0D0D0FG&&w0D0D0F0M0Mg0VW !KK(HI	)&<=OOK>IIk*1 #7> 	q  	G	d $ "7C	NQ,>?		),q/2 @G	s/   $K7 ;'L7
LLL
M<MMc                    U(       a  U" 5       nOU R                  5       n[        U R                  5      nU R                  U[	        U[
        5      5      n0 SU_SU_SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _U R*                  U R,                  S.EnUR/                  U5        U R                  R1                  U5        X0R2                  U'   U$ )Nr   r9  rm   rI   r.   r'   r(   r)   r*   r+   r,   r-   r   workbook_add_formatr0   r1   r4   )r2   r   )r   r   rR   _check_sheetnamer   r   rm   rI   r.   r'   r(   r)   r*   r+   r,   r-   r   r   r0   r1   r4   r2   r   _initializer   rU   )r   r   r   r   r
  	init_datas         r   r   Workbook._add_sheet(  s    ')I,,.I$../$$T:i+LM
D
[
 
 d11	

 t33
 dkk
 
 !$"9"9
 "4#;#;
 t33
  !7!7
 "4#;#;
 !$"9"9
 "4??
 t33
  t33!
" d11#
$ %)$=$=#33'
	, 	i(##I. )r   c                    [         R                  " S5      nU(       a  U =R                  S-  sl        OU =R                  S-  sl        Ub  US:X  aL  U(       a#  U R                  [        U R                  5      -   nO"U R                  [        U R                  5      -   n[        U5      S:  a  [        SU S35      eUR                  U5      (       a  [        SU S35      eUR                  S	5      (       d  UR                  S	5      (       a  [        S
U S35      eU R                  5        H>  nUR                  5       UR                  R                  5       :X  d  M1  [        SU S35      e   U$ )Nz[\[\]:*?/\\]r   r   r5  zExcel worksheet name 'z' must be <= 31 chars.z0Invalid Excel character '[]:*?/\' in sheetname 'z'.r   z3Sheet name cannot start or end with an apostrophe "z".zSheetname 'z(', with case ignored, is already in use.)r  r  rQ   rP   rO   r   rN   r   r   searchr  endswithr   r   r   r   )r   r  is_chartsheetinvalid_charr   s        r   r`  Workbook._check_sheetnameQ  s^    zz/2   A%   A%  	R OOc$2F2F.GG	 OOc$2F2F.GG	 y>B&(3IJ 
 y))&CI;bQ 
 $$	(:(:3(?(?&Ei[PRS  *I INN$8$8$::,!),TU  + r   c                     U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         g N)_prepare_formats_prepare_fonts_prepare_num_formats_prepare_borders_prepare_fillsr   s    r   r"  #Workbook._prepare_format_properties  sH     	 	 	!!# 	 	r   c                    / n/ nU R                    HA  nUR                  b  UR                  U5        UR                  c  M0  UR                  U5        MC     S /[	        U5      -  U l        S /[	        U5      -  U l        U H  nUR                  nX0R
                  U'   M     U H  nUR                  nXPR                  U'   M     g rk  )rV   r?   r   	dxf_indexr   rW   rY   )r   rW   rY   r   r9  
dxf_formats         r   rl  Workbook._prepare_formats  s     
 I!!-!!),"".""9- &  &3z?2 6C$44 $I&&E%.OOE" $ &J((E&0U# &r   c                     [        U R                  5      nUS	 U R                  b  US	 U H  nUR                  5         M     g )Nr   )listrV   r-   _get_xf_index)r   rV   r   s      r   _set_default_xf_indices Workbook._set_default_xf_indices  sH     t||$ AJ ##/
 !I##% !r   c                    0 nSnU R                    H@  nUR                  5       nXA;   a  X   Ul        SUl        M*  X!U'   X#l        SUl        US-  nMB     X l        U R
                   Ha  nUR                  (       dF  UR                  (       d5  UR                  (       d$  UR                  (       d  UR                  (       d  MZ  SUl        Mc     g )Nr   FTr   )rW   _get_font_key
font_indexhas_fontr\   rY   
font_colorbolditalic	underlinefont_strikeouthas_dxf_font)r   fontsr9  r   keys        r   rm  Workbook._prepare_fonts  s     I))+C|',z	$%*	" #c
',$%)	"
 )   ))I $$>>##&&+++)-	& *r   c                    0 n/ nSnU R                   U R                  -    H  nUR                  n[        U[        5      (       d  [        U5      nUS:X  a  SnXTl        M?  US:X  a	  SUl        MN  US:X  a	  SUl        M]  XQ;   a  X   Ul        Mm  X1U'   X4l        US-  nUR                  (       d  M  UR                  U5        M     X l	        g )N   r   r   0General)
rW   rY   rB   r   r   r   num_format_indexr?   r   r]   )r   unique_num_formatsr]   r9  r   rB   s         r   rn  Workbook._prepare_num_formats  s    4+;+;;I"--J j#.. _
 ?!"J-7*S -.	*Y&-.	*/-?-K	* 27:.-2*
 %%%&&z2G <J 'r   c                 h   0 nSnU R                    H@  nUR                  5       nXA;   a  X   Ul        SUl        M*  X!U'   X#l        SUl        US-  nMB     X l        [
        R                  " S5      nU R                   H2  nUR                  5       nUR                  U5      (       d  M+  SUl	        M4     g )Nr   FTr   z	[^0None:])
rW   _get_border_keyborder_index
has_borderru   r  r  rY   re  has_dxf_border)r   bordersr9  r   r  r  s         r   ro  Workbook._prepare_borders  s     I++-C~)0	&',	$  %).&'+	$
 ) " ZZ-
))I++-C  %%+/	(	 *r   c                 r   0 nSnSUS'   SUS'   U R                    Ha  nUR                  (       d$  UR                  (       d  UR                  (       d  M8  SUl        UR                  Ul        UR                  Ul        Mc     U R                   GH!  nUR                  S:X  aE  UR                  (       a4  UR                  (       a#  UR                  nUR                  Ul        XCl        UR                  S::  aA  UR                  (       a0  UR                  (       d  UR                  Ul        S Ul        SUl        UR                  S::  a)  UR                  (       d  UR                  (       a  SUl        UR                  5       nXQ;   a  X   Ul	        SUl
        GM  X!U'   X#l	        SUl
        US-  nGM$     X l        g )Nr   r   z0:None:Noner   z17:None:NoneTF)rY   patternbg_colorfg_colorhas_dxf_filldxf_bg_colordxf_fg_colorrW   _get_fill_key
fill_indexhas_fillrv   )r   fillsr9  r   tmpr  s         r   rp  Workbook._prepare_fills+  su   
   !m !n ))I  I$6$6):L:L:L)-	&)2););	&)2););	&	 * I   A%)*<*<ASAS((%.%7%7	"%("  A%)*<*<YEWEW%.%7%7	"%)	"$%	!  A%i.@.@YEWEW$%	!))+C|',z	$%*	" #c
',$%)	"
A )D  r   c                 4   U R                   (       d|  U R                   Hl  nUR                  (       a  U R                   R                  S5        UR                  c  M>  UR                  (       d  MQ  U R                   R                  S5        Mn     U R                   $ )NXFComplementsDXFComplements)r   rV   checkboxaddrs  )r   r   s     r   _has_feature_property_bags#Workbook._has_feature_property_bagsb  sr     ))!\\	%%..22?C&&2y7I7I7I..223CD * )))r   c                    U R                   nU R                  5        GH  nUR                  (       a,  SnUR                  nUR                  SUR                  XC/5        UR
                  (       a,  SnUR
                  nUR                  SUR                  XC/5        UR                  (       d  UR                  (       d  M  SnSnUR                  (       a.  UR                  (       a  UR                  S-   UR                  -   nOUR                  UR                  -   nUR                  SUR                  XC/5        GM     U R                  U5      nXl         U R                  U5      U l
        g )Nr   _xlnm._FilterDatabaser   z_xlnm.Print_Arear   ,z_xlnm.Print_Titles)r^   r   autofilter_arear   r9  print_area_rangerepeat_col_rangerepeat_row_range_sort_defined_names_extract_named_rangesr_   )r   r^   rS  r8  sheet_ranges        r   r=  Workbook._prepare_defined_nameso  s6    **__&E$$#33$$,ekk;O
 %%#44$$'kJ
 %%)?)?)? ))e.D.D"'"8"83">AWAW"WK"'"8"85;Q;Q"QK$$)5;;L9 '@ 00?* 66}Er   c                 F   U H^  nUu  p4pTUR                  SS5      R                  5       nUR                  S5      R                  5       nUR                  US-   U-   5        M`     UR	                  [
        R                  " S5      S9  U H  nUR                  5         M     U$ )N_xlnm.r   r   z::   r  )replacer   r  r   sortoperator
itemgetterpop)r   names	name_listdefined_name_rN   s         r   r  Workbook._sort_defined_names  s    
 I/8,\j (//"=CCEL $**3/557J\D0:=>  	

x**1-
. IMMO  r   c                    SnSnSn0 n0 n0 nU R                   R                   H4  nUR                  nSU R                  U'   UR                  c  M-  SU l        M6     [        U R                   R                  5      n	U R                  5        GHO  n
[        U
R                  5      n[        U
R                  5      n[        U
R                  5      n[        U
R                  5      n[        U
R                  5      nU
R                  nSnU(       d%  U(       d  U(       d  U(       d  U(       d	  U(       d  M  U(       d  U(       d  U(       a  US-  nSnU
R                  (       av  U
R                  nUR                  nUR                  nSU R                  U'   UU;   a  UU   nO&U	S-  n	U	nXU'   U R                  R                  U5        U
R                  X(5        [!        U5       H~  nU
R                  U   nUR                  nUR                  nSU R                  U'   UU;   a  UU   nO&U	S-  n	U	nXU'   U R                  R                  U5        U
R#                  UUU5        M     [!        U5       H  nUS-  nU
R%                  UX5        M     [!        U5       H  nU
R'                  UU5        M     U
R                   Hm  nUR                  nUR                  nSU R                  U'   UU;   a  UU   nO&U	S-  n	U	nXU'   U R                  R                  U5        U
R)                  X'5        Mo     U
R                   Hm  nUR                  nUR                  nSU R                  U'   UU;   a  UU   nO&U	S-  n	U	nXU'   U R                  R                  U5        U
R)                  X'5        Mo     U(       d  GM(  U
R*                  nU R,                  R                  U5        GMR     U R                  S S   H0  nUR.                  S:X  d  M  U R                  R1                  U5        M2     [3        U R                  S S9U l        X0l        g )Nr   TFr   r   c                     U R                   $ rk  )id)r   s    r   <lambda>,Workbook._prepare_drawings.<locals>.<lambda>>  s    EHHr   r  )r   rt   _image_extensionrs   descriptionr   r   r   rS   shapesheader_imagesfooter_imagesbackground_image_digestr   _prepare_backgroundrP  _prepare_image_prepare_chart_prepare_shape_prepare_header_imagedrawingrT   r  rO  sortedrw   )r   chart_ref_idref_id
drawing_id	image_idsheader_image_idsbackground_idsimageimage_extensionimage_ref_idrS  chart_countimage_countshape_countheader_image_countfooter_image_counthas_backgroundhas_drawingimage_digestr9  r  r   s                         r   r>  Workbook._prepare_drawings  s   
	 ))00E#44O04D_-  ,15. 1 4//667__&Eell+Kell+Kell+K!$U%8%8!9!$U%8%8!9"33NK %%! k[a
" %%.."'"8"8$}}48  1>1+L9F A%L)F3?<0KK&&u-))&B {+U+"'"8"8$}}48  19,&|4F A%L)F.:l+KK&&u-$$ ,, {+!$$ULE ,
 {+$$UJ7 , ,,"'"8"8$}}48  1#33-l;F A%L)F5A\2KK&&u-++F: -" ,,"'"8"8$}}48  1#33-l;F A%L)F5A\2KK&&u-++F: -  {--$$W-] 'b [[^Exx2~""5) $ T[[.DE'r   c                 "   / nU H  nUS   nUS   nUS   nUS:X  a  M  SU;   d  M"  UR                  SS5      u  pxUR                  S5      (       a  UR                  SS5      n	US-   U	-   nOUS:w  a  US-   U-   nUR                  U5        M     U$ )	Nr   r   r   r  !r  r   r   )splitr  r  r   )
r   r^   r_   r  r   r9  r  rN   r  	xlnm_types
             r   r  Workbook._extract_named_rangesB  s     )L?D OE&q/K .. k! + 1 1#q 9
 ??8,, $Xr :I%+i7Db[%+d2D##D)) *, r   c                 v    UR                  S5      nXR                  ;   a  U R                  U   R                  $ g )Nr   )striprU   r9  )r   r  s     r   r  Workbook._get_sheet_index_  s2    OOC(	'??9-333r   c                     SnSnSnSnSnSnSnU R                  5        H  nUR                  (       d  UR                  (       d  M'  US-  nUR                  (       ag  UR                  (       a  US-  nUS-  nSU l        US-  nUR	                  X5X!5      n	US[        SU	-   S-  5      -  -  nUS[        SU	-   S-  5      -  -  nUR                  (       a  US-  nUS-  nUR                  XB5        X`l        Xpl        M     g )Nr   r   i   T)	r   has_vmlhas_header_vmlr{   _prepare_vml_objectsr   _prepare_header_vml_objectsrf   rg   )
r   
comment_idvml_drawing_idvml_data_idvml_header_idvml_shape_id	vml_filescomment_filesrS  counts
             r   r<  Workbook._prepare_vmlh  s   
	__&E==)=)=NI}}%%!Q&M!OJ(,D%!#22~
 q3u'<#===sD5LD+@'A AA##"!#11-P!*%2"9 'r   c                     Sn0 nU R                  5        H:  n[        UR                  5      nU(       d  M!  UR                  US-   U5        X-  nM<     g )Nr   r   )r   r   tablesr@  )r   table_idseenrS  table_counts        r   r@  Workbook._prepare_tables  sM    __&Eell+K!!(Q,5#H 'r   c                     U R                   R                  5       U l        U R                  U l        U R	                  5        H$  nUR
                  (       d  M  SU l        SU l        M&     g )NT)r   
has_imagesr~   r}   r   has_dynamic_arraysr   )r   rS  s     r   rA  Workbook._prepare_metadata  sT    #'#7#7#B#B#D  44__&E'''$(!-1* 'r   c           	      *   0 n0 n/ nU R                  5        H  nXAUR                  '   M     U R                   HB  nUR                  U5        UR                  (       d  M'  UR                  UR                  5        MD     U GH  nUR
                  R                  5        H  nUR
                  U   nUR                  U   b  Xb;  d  X&   c  UR                  U   nXU'   MA  Xb;   a  X&   UR                  U'   MY  U R                  U5      u  pU	c  Mq  U	R                  S5      (       a  / UR                  U'   / X&'   M  X;  a'  [        SU	 SU S35        / UR                  U'   / X&'   M  X   nUR                  " U
6 nXR                  U'   XU'   M     GM     g )N(zUnknown worksheet reference 'z' in range 'z' passed to add_series())r   r   rS   r   combinedformula_idskeysformula_data_get_chart_ranger  r   _get_range_data)r   r   seen_rangesrS   r   r   c_ranger_iddatar  cellss              r   r?  Workbook._add_chart_data  s    
 *I)2y~~& + [[EMM% ~~~enn- !
 E ,,113((1 %%d+71[5I5Q$11$7/3G, )/:/CE&&t, &*%:%:7%C" $
 '',,/1E&&t,+-K( .7	{ C#9$<> 02E&&t,+-K( '1	 !00%8 ,0""4( (,G$g 4 r   c                 b   UR                  S5      nUS:  a  US U nXS-   S  nOgUR                  S5      S:  a  UR                  SS5      u  pVOXDpeUR                  S5      nUR	                  SS5      n [        U5      u  px[        U5      u  pXy:w  a  X:w  a  gX7XU
/4$ ! [         a     gf = f)Nr  r   r   NN:r   z'')rfindfindr  r  r  r!   AttributeError)r   r  posr  r  cell_1cell_2	row_start	col_startrow_endcol_ends              r   r  Workbook._get_chart_range  s    
 mmC 7I!GI&E ::c?Q${{32VV %V OOC(	%%dC0		 &7v%>"Y!26!:W
 I$8i'BBB  		s   6B! !
B.-B.c                 8    U R                   R                  5         g rk  )rm   _sort_string_datar   s    r   r;  !Workbook._prepare_sst_string_data  s    ((*r   c                     [        5       $ rk  r   r   s    r   r6  Workbook._get_packager  s     zr   c                 P    SnUS-   nUS-   nSU4SU4/nU R                  SU5        g )Nz!http://schemas.openxmlformats.orgz/spreadsheetml/2006/mainz"/officeDocument/2006/relationshipsxmlnszxmlns:rr!  )_xml_start_tag)r   schemar*  xmlns_r
attributess        r   r$  Workbook._write_workbook"  sJ     533?? e 


 	J
3r   c                     SnSnSnSnSU4SU4SU4SU4/nU R                   (       a  UR                  S5        U R                  S	U5        g )
Nxlr  i  appName
lastEditedlowestEditedrupBuild)codeNamez&{37E998C4-C9E5-D4B9-71C8-EB1FF731991C}fileVersion)rn   r   _xml_empty_tag)r   app_namelast_editedlowest_edited	rup_buildr.  s         r   r%  Workbook._write_file_version0  sk     	 !;']+#	

 TUM:6r   c                 P    U R                   S:X  a  g S/nU R                  SU5        g )Nr   )readOnlyRecommendedr   fileSharing)r|   r8  r   r.  s     r   r&  Workbook._write_file_sharingD  s)    >>Q01
M:6r   c                     Sn/ nU R                   (       a  UR                  SU R                   45        U R                  (       a  UR                  S5        UR                  SU45        U R                  SU5        g )NiB r6  )date1904r   defaultThemeVersion
workbookPr)rr   r   r(   r8  )r   default_theme_versionr.  s      r   r'  Workbook._write_workbook_prM  si     &
z4+<+<=>>>o.02GHIL*5r   c                 h    U R                  S5        U R                  5         U R                  S5        g )N	bookViews)r+  _write_workbook_viewr,  r   s    r   r(  Workbook._write_book_views[  s*    K(!!#+&r   c                    SU R                   4SU R                  4SU R                  4SU R                  4/nU R                  S:w  a  UR                  SU R                  45        U R                  R                  S:  a,  U R                  R                  S-   nUR                  S	U45        U R                  R                  S:  a'  UR                  S
U R                  R                  45        U R                  SU5        g )NxWindowyWindowwindowWidthwindowHeightr=   tabRatior   r   
firstSheet	activeTabworkbookView)
rh   ri   rj   rk   rl   r   rI   
firstsheetr7  r8  )r   r.  rV  s      r   rK  Workbook._write_workbook_viewa  s     &&D--.T//0	

 >>S z4>>:; ))A-,,77!;J|Z89 **Q.{D,?,?,K,KLMNJ7r   c                     U R                  S5        SnU R                  5        H.  nU R                  UR                  XR                  5        US-  nM0     U R                  S5        g )Nsheetsr   )r+  r   _write_sheetr   r8  r,  )r   id_numr   s      r   r)  Workbook._write_sheetsy  sY    H%*Iinnf6F6FGaKF + 	(#r   c                     SU4SU4/nUS:X  a  UR                  S5        OUS:X  a  UR                  S5        UR                  SS[        U5      -   45        U R                  S	U5        g )
Nr   sheetIdr   )stater8  r   )r_  
veryHiddenzr:idrIdrS  )r   r   r8  )r   r   sheet_idr8  r.  s        r   rZ  Workbook._write_sheet  st     TN!


 Q;12q[56653x=#89:GZ0r   c                 b   SU R                   4/nU R                  S:X  a/  UR                  SU R                  45        UR                  S5        O-U R                  S:X  a  UR                  SU R                  45        U R                  (       a  UR                  S5        U R	                  SU5        g )NcalcIdr   calcMode)
calcOnSaver  r   )fullCalcOnLoad1calcPr)rz   rx   r   ry   r8  rA  s     r   r+  Workbook._write_calc_pr  s    ./
>>X%z4>>:;12^^},z4>>:;56Hj1r   c                     U R                   (       d  g U R                  S5        U R                    H  nU R                  U5        M     U R                  S5        g )NdefinedNames)r^   r+  _write_defined_namer,  )r   r  s     r   r*  Workbook._write_defined_names  sJ    !!N+ ..L$$\2 / 	.)r   c                     US   nUS   nUS   nUS   nSU4/nUS:w  a  UR                  SU45        U(       a  UR                  S5        U R                  S	XF5        g )
Nr   r   r      r   r   localSheetId)r8  r   definedName)r   _xml_data_element)r   r  r   rb  r  r8  r.  s          r   rn  Workbook._write_defined_name  sm    A?"1oatn%
r>~x89m,}kFr   )IrG   ru   rz   rx   ry   rO   rQ   rS   r.   re   r`   rb   r(   r-   r3   r   r^   ra   rw   rT   rZ   rY   r   r0   r   rK   rL   rE   rv   r\   rV   r{   r   r   r~   r}   rs   rt   r/   rM   r4   r_   r,   rg   r]   rf   r[   r|   r1   rJ   rN   rP   rU   rm   r*   r)   r+   rl   r'   r2   rr   rn   ro   rp   rq   rk   rj   rI   rR   rh   rX   rW   ri   r  rk  )F)FF)D__name__
__module____qualname____firstlineno____doc__r   r   r"   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r  r6   r  r  r.  r   r   r`  r"  rl  ry  rm  rn  ro  rp  r  r=  r  r>  r  r  r<  r@  rA  r?  r  r;  r6  r$  r%  r&  r'  r(  rK  r)  rZ  r+  r*  rn  __static_attributes____classcell__)r   s   @r   r$   r$   0   sY    "Om^
F G 82h2 TY:<B&.1&)9v#29v$)' /"&%NbH'R,\$18&  .D+'Z0>5 n*(FT6L(\:&3P$2E,N"CH+47(76'80	$1 2
*G Gr   r$   c                       \ rS rSrSrS rSrg)rH   i  zQ
A class to track worksheets data such as the active sheet and the
first sheet.

c                      SU l         SU l        g )Nr   r7  rV  r   s    r   rD   WorksheetMeta.__init__  s    r   r  N)rv  rw  rx  ry  rz  rD   r{  r   r   r   rH   rH     s    r   rH   c                   2    \ rS rSrSrS rS\4S jrS rSr	g)	r   i  zA
A class to track duplicate embedded images between worksheets.

c                      / U l         0 U l        g rk  )rt   image_indexesr   s    r   rD   EmbeddedImages.__init__  s    r   r  c                     U R                   R                  UR                  5      nUcH  U R                  R	                  U5        [        U R                  5      nX R                   UR                  '   U$ )zl
Get the index of an embedded image.

Args:
    image: The image to lookup.

Returns:
    The image index.

)r  rF   r  rt   r   r   )r   r  image_indexs      r   get_image_indexEmbeddedImages.get_image_index  s\     ((,,U]];KKu%dkk*K0;u}}-r   c                 2    [        U R                  5      S:  $ )zV
Check if the worksheet has embedded images.

Args:
    None.

Returns:
    Boolean.

r   )r   rt   r   s    r   r  EmbeddedImages.has_images  s     4;;!##r   )r  rt   N)
rv  rw  rx  ry  rz  rD   r   r  r  r{  r   r   r   r   r     s    
 U ($r   r   )<r  r   r  rK  r   r   decimalr   	fractionsr   warningsr   zipfiler   r	   r
   r   xlsxwriter.imager   r   r   
chart_arear   	chart_barr   chart_columnr   chart_doughnutr   
chart_liner   	chart_pier   chart_radarr   chart_scatterr   chart_stockr   
chartsheetr   
exceptionsr   r   r   r   formatr   rR  r   sharedstringsr    utilityr!   r   r"   	XMLwriterr$   rH   r   r   r   r   <module>r     s     	 	  '    @ @ "  !  % ) !  # ' # "    , &  MGy"" MGb4	 	)$ )$r   