
    fhj                         d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
 ddlmZmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ d Z G d d          ZdS )z2Write the workbook global settings to the archive.    )quote_sheetname)ARC_APPARC_CORE
ARC_CUSTOMARC_WORKBOOK
PKG_REL_NSCUSTOMUI_NSARC_ROOT_RELS)tostring
fromstring)RelationshipRelationshipList)DefinedNameDefinedNameList)ExternalReference)
ChildSheetWorkbookPackage
PivotCache)WorkbookProperties)CALENDAR_MAC_1904c                     d t          | j                  D             }|st          d          | j        }| j        }|r|j        dk    r|S ||d         D ]}|| _        |c S dS )z~
    Return the index of the active sheet.
    If the sheet set to active is hidden return the next visible sheet or None
    c                 .    g | ]\  }}|j         d k    |S )visible)sheet_state).0idxsheets      P/var/www/histauto/venv/lib/python3.11/site-packages/openpyxl/workbook/_writer.py
<listcomp>z$get_active_sheet.<locals>.<listcomp>!   s*    dddjc5UEVZcEcEccEcEcEc    z"At least one sheet must be visibler   N)	enumerate_sheets
IndexError_active_sheet_indexactiver   )wbvisible_sheetsr   r   s       r   get_active_sheetr(      s    
 edIbj,A,AdddN ?=>>>

 CIE "i//
cdd#  	


4r    c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )WorkbookWriterc                     || _         t                      | _        t                      | _        |j        | j        _        |j        | j        _        d S )N)	r&   r   relsr   packagesecurityworkbookProtectioncalculationcalcPr)selfr&   s     r   __init__zWorkbookWriter.__init__3   sA    $&&	&((*,+' nr    c                     t                      }| j        j        | j        j        |_        | j        j        t
          k    rd|_        || j        _        d S )NT)	r   r&   	code_namecodeNameexcel_base_dater   date1904r-   
workbookPr)r2   propss     r   write_propertieszWorkbookWriter.write_properties;   sL    "$$7(!W.EN7"&777!EN"'r    c                    t          | j        j        d          D ]\  }}t          |j        |d                    |                    }t          |j        |j                  }| j	        
                    |           |j        dk    s8t          | j        j                  dk    rt          d          |j        |_        | j        j        
                    |           d S )N   zrId{0})namesheetIdidtypeTargetr   z1The only worksheet of a workbook cannot be hidden)r!   r&   r"   r   titleformatr   	_rel_typepathr,   appendr   len
ValueErrorstater-   sheets)r2   r   r   
sheet_noderels        r   write_worksheetszWorkbookWriter.write_worksheetsE   s    #DGOQ77 		3 		3JC#chooVYFZFZ[[[JEOEJGGGCIS!!!$	11tw''1,,$%XYYY#(#4
 L&&z2222		3 		3r    c                 .   | j         j        D ]}t          | j         j                  dz   }t	          |j        |j                  }| j                            |           t          |j	                  }| j
        j                            |           d S )Nr=   rA   )r@   )r&   _external_linksrI   r,   r   rF   rG   rH   r   r@   r-   externalReferences)r2   linkrIdrN   exts        r   
write_refszWorkbookWriter.write_refsR   s    G+ 	8 	8Ddgl##a'CDN49EEECIS!!!#sv...CL+2237777	8 	8r    c                    t          | j        j                                                  }t	          | j        j                  D ]\  }}t          |j                  }|j        r:|j                                        }|D ]	}||_        
|	                    |           |j
        r8t          d|d          }| d|j
         |_        |                    |           |j        r2t          d|          }|j        |_        |                    |           |j        r2t          d|          }|j        |_        |                    |           t!          |          | j        _        d S )	N_FilterDatabaseT)r>   localSheetIdhidden!Print_Titles)r>   rY   
Print_Area)definedName)listr&   defined_namesvaluesr!   
worksheetsr   rD   rY   extendauto_filterr   valuerH   print_titles
print_arear   r-   definedNames)r2   r`   r   r   quotednamesnr>   s           r   write_nameszWorkbookWriter.write_names\   s{   TW299;;<<#DG$677 	+ 	+JC$U[11F " ,+2244 ) )A%(ANN$$U+++  +"(9TXYYY &<<):<<
$$T***! +"SIII"/
$$T*** +"3GGG"-
$$T***$3$N$N$N!!!r    c                    t                      }| j        j        D ]}|j        |vr|                    |j                   t          |j                  }| j        j        	                    |           t          |j        j        |j        j                  }| j        	                    |           |j        |_        d S )N)cacheIdTyperC   )setr&   _pivotscacheaddr   rn   r-   pivotCachesrH   r   rel_typerG   r,   r@   )r2   pivot_cachespivotcrN   s        r   write_pivotszWorkbookWriter.write_pivots{   s    uuW_ 	 	E{,..  ---u}555(//222"(<U[EUVVV	  %%%v	 	r    c                     t          | j                  }| j        j        r|| j        j        d         _        | j        j        | j        _        d S )Nr   )r(   r&   views	activeTabr-   	bookViews)r2   r%   s     r   write_viewszWorkbookWriter.write_views   sB    !$'**7= 	0)/DGM!&!%r    c                 >   |                                   |                                  |                                  |                                  |                                  |                                  t          | j                                                  S )zWrite the core workbook xml.)	r;   rO   rl   rz   r   rV   r   r-   to_tree)r2   s    r   writezWorkbookWriter.write   s     	,,..///r    c                 v   t          dd          }| j                            |           t          dd          }| j                            |           | j        j        r2t          dd          }d|_        | j                            |           t          | j                                                  S )	z%Write the workbook relationships xml.stylesz
styles.xmlrA   themeztheme/theme1.xml zvbaProject.binzAhttp://schemas.microsoft.com/office/2006/relationships/vbaProject)r   r,   rH   r&   vba_archiverp   r   r   )r2   r   r   vbas       r   
write_relszWorkbookWriter.write_rels   s     H\BBB	   73EFFF	7 	"R0@AAACYCHIS!!!	))++,,,r    c                    t                      }t          dt                    }|                    |           t          t           dt
                    }|                    |           t          dt                    }|                    |           t          | j        j	                  dk    r+t          dt                    }|                    |           | j        j        wt          | j        j                            t                              }t          j        |          }|                    t"                    D ]}|                    |           t%          |                                          S )zWrite the package relationshipsofficeDocumentrA   z/metadata/core-propertiesro   zextended-propertiesr=   zcustom-properties)r   r   r   rH   r   r   r   rI   r&   custom_doc_propsr   r   r   readr
   	from_treefindr	   r   r   )r2   r,   rN   xml	root_relss        r   write_root_relszWorkbookWriter.write_root_rels   sE     !! 0FFFC: H H HQYZZZC 5gFFFCtw'((A--$7
KKKCKK7*TW055mDDEEC(2377I ~~k22 ! !C    '''r    N)__name__
__module____qualname__r3   r;   rO   rV   rl   rz   r   r   r   r    r    r   r*   r*   1   s        - - -( ( (
3 
3 
38 8 8O O O>	 	 	/ / /
0 
0 
0- - -"( ( ( ( (r    r*   N) __doc__openpyxl.utilsr   openpyxl.xml.constantsr   r   r   r   r   r	   r
   openpyxl.xml.functionsr   r   openpyxl.packaging.relationshipr   r   openpyxl.workbook.defined_namer   r   $openpyxl.workbook.external_referencer   openpyxl.packaging.workbookr   r   r   openpyxl.workbook.propertiesr   openpyxl.utils.datetimer   r(   r*   r   r    r   <module>r      su   9 8 * * * * * *                  8 7 7 7 7 7 7 7 J J J J J J J J        C B B B B B O O O O O O O O O O ; ; ; ; ; ; 5 5 5 5 5 5  *T( T( T( T( T( T( T( T( T( T(r    