U
    7h                     @   s  d dl mZmZ d dlZd dlZd dlmZmZ ddl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mZ ddlmZ dd	lT d ZejZdad
ad
add Zdd Z dd Z!i Z"e#dD ]Z$e$d e"de$ < qdD ]Z$d e"e$< q[$e"d
fddZ%i Z&e' D ]\Z(Z)e(e&e)< qdZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3e*d  Z4e*d! Z5e*d" Z6e7d#ej8j9d$d% fd&d'Z:d(d) Z;e*d* e*d+ fd,d-Z<d.d/ Z=d0d1 Z>d2d3 Z?d4d5 Z@d6d6e>fd7d8e>fd9d8e>fd:d8e>fd;d8e>fd<d8e>fd=d>e?fd?d?e@fd@dAe@fdBdCe@fdDdEe@fdFdGe?fdHd8e>fdId8e@fdJd8e@fdKdLdMdNdOdPdQdRdSdTdUdVdWfZAdXdY ZBG dZd[ d[eCZDG d\d] d]eDZEG d^d_ d_eDZFG d`da daeDZGG dbdc dceDZHejd d d d d fdddeZIdS )f    )print_functionunicode_literalsN)joinnormpath   )XL_CELL_BLANKXL_CELL_BOOLEANXL_CELL_ERRORXL_CELL_TEXT	XLRDErrorerror_text_from_code)BookName)XFFormatis_date_format_string)Sheet)*Fc                 C   s  t d k	rd S dtjkr,dd lm  ma  n zdd lma  W n tk
r*   zdd l	m  ma  W n tk
r$   zdd la W n tk
r   zdd l
ma  W nt tk
r   zdd lm  ma  W nF tk
r   zdd lma  W n tk
r   tdY nX Y nX Y nX Y nX Y nX Y nX tt drjtd}zt | daW n tk
rh   Y nX tt dott jda| rtd	d
 t j D }tt jt j|t|d d S )N
IronPythonr   z.Failed to import an ElementTree implementation	iterparse    TElementTreeiterc                 S   s.   g | ]&}|  d ddkr|tt|fqS )_ version)lowerreplacegetattrET).0item r"   C/var/www/formularioweb/env/lib/python3.8/site-packages/xlrd/xlsx.py
<listcomp>=   s   z/ensure_elementtree_imported.<locals>.<listcomp>file)r   sysr   Zxml.etree.ElementTreeetreer   Zdefusedxml.cElementTreeZcElementTreeImportErrorZxml.etree.cElementTreeZ
lxml.etreeZelementtree.ElementTree	ExceptionhasattrZBYTES_IOr   ET_has_iterparseNotImplementedErrorElement_has_iterrepr__dict__keysprint__file____name__)	verbositylogfileZ_dummy_streamZetree_versionr"   r"   r#   ensure_elementtree_imported   sH    
      ,
r7   c                 C   s6   |  dd }|dkr.| d | | |d  fS d| fS )N}r      r   )rfind)tagposr"   r"   r#   	split_tagD   s    r=   c                 C   s&   t |  D ]}| | | || < qd S N)listr1   )adicturixr"   r"   r#   augment_keysJ   s    rC      ABCDEFGHIJKLMNOPQRSTUVWXYZZ	123456789c                 C   s   d}d}zx| D ]n}|d7 }|| }|r4|d | }q|dkrV|rJd } q~q|t d| q|d }d|  krrtk sxn t q~qW n$ tk
r   t d|| f Y nX t| |d  d }||fS )Nr   r   rD   zMissing col in cell name %r'Unexpected character %r in cell name %r)r*   X12_MAX_COLSAssertionErrorKeyErrorint)	cell_nameletter_valueallow_no_colcolxcharxclvrowxr"   r"   r#   cell_name_to_rowx_colxV   s.     
rT   z;{http://schemas.openxmlformats.org/spreadsheetml/2006/main}zE{http://schemas.openxmlformats.org/officeDocument/2006/relationships}z>{http://schemas.openxmlformats.org/package/2006/relationships}zI{http://schemas.openxmlformats.org/package/2006/metadata/core-properties}z"{http://purl.org/dc/elements/1.1/}z{http://purl.org/dc/terms/}z+{http://www.w3.org/XML/1998/namespace}spacez	
 i   i @  vfisz_x[0-9A-Fa-f]{4,4}_c                 C   s   t t| ddd dS )Nr   r9         )unichrrK   group)Zmobjr"   r"   r#   <lambda>   r   r\   c                 C   s   d| kr||| S | S )Nr   r"   )sZsubberreplr"   r"   r#   unescape   s    
r_   c                 C   s6   |j }|d krdS |tdkr*|t}tt|S )Nr   Zpreserve)textgetXML_SPACE_ATTRstripXML_WHITESPACEensure_unicoder_   )selfelemtr"   r"   r#   cooked_text   s    
ri   rrh   c           	      C   st   g }|D ]`}|j }||kr4t| |}|rh|| q||kr|D ]&}|j |kr@t| |}|r@|| q@qd|S )zReturns unescaped unicoder   )r;   ri   appendr   )	rf   rg   r_tagt_tagaccumchildr;   rh   Ztnoder"   r"   r#   get_text_from_si_or_is   s    


rp   c                 C   sJ   | D ]@\}}}|s t ||| q|s&q||}||}t ||| qd S r>   )setattrra   )Zamaprg   objZxml_attrZobj_attrZcnv_func_or_constZ	raw_valueZcooked_valuer"   r"   r#   map_attributes   s     
rs   c                 C   s   | d krdS t | S )Nr   )re   r]   r"   r"   r#   cnv_ST_Xstring   s     ru   c                 C   s    | sd S t | }|dkst|S Nr   )rK   rI   )r]   valuer"   r"   r#   cnv_xsd_unsignedInt   s
    rx   c                 C   s0   | sdS | dkrdS | dkr dS t d|  d S )Nr   )1trueonr   )0falseoffz unexpected xsd:boolean value: %r)
ValueErrorrt   r"   r"   r#   cnv_xsd_boolean   s    r   namecommentr   Z
customMenudescriptionhelpZ	statusBarZlocalSheetIdscopehiddenfunctionfuncZvbProcedureZvbasicZxlmmacroZfunctionGroupIdZ	funcgroupZshortcutKeyZpublishToServerZworkbookParameter)r   Zany_errr   )r   Zany_externalr   )r   Zany_relr   )r   Zbasic_formula_lenr   )r   binaryr   )r   builtinr   )r   complexr   )r   Z	evaluatedr   )r   Zexcel_sheet_indexr   )r   Zexcel_sheet_numr   )r   Zoption_flagsr   )r   resultN)r   stackNc                 C   s   i }i }t | j}t|D ]~}| j| }|j }||jf}||krbd|f }| jrbt|| j	d |||< |j||f}	||kr|| 
|	 q|	g||< q| D ]&}|| }
|
  dd |
D ||< q|| _|| _d S )Nz(Duplicate entry %r in name_and_scope_mapr%   c                 S   s   g | ]}|d  qS )r9   r"   )r    rB   r"   r"   r#   r$      s     z)make_name_access_maps.<locals>.<listcomp>)lenname_obj_listxranger   r   r   r   r5   r2   r6   rk   r1   sortname_and_scope_mapname_map)bkr   r   Z	num_namesZnamexnobjZ
name_lcasekeymsgZ	sort_dataalistr"   r"   r#   make_name_access_maps   s,    




r   c                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )
X12GeneralNc                 C   s   | j dkr |d k	r t| jd| t|| _| jj}trB| j	 n| j
 D ]0}| j dkrd| | ||j}|rL|| | qL|   d S )Nr9   
=== %s ===
   )r5   fprintfr6   r   parsetreetag2methra   r.   r   getiterator	dump_elemr;   
finish_off)rf   streamheadingZ	getmethodrg   methr"   r"   r#   process_stream  s    


zX12General.process_streamc                 C   s   d S r>   r"   )rf   r"   r"   r#   r     s    zX12General.finish_offc                 C   s.   t | jdt|jd t||j|j|j d S )Nz,===
tag=%r len=%d attrib=%r text=%r tail=%r
r   )r   r6   r=   r;   r   Zattribr`   tailrf   rg   r"   r"   r#   r     s        zX12General.dump_elemc                 G   s    d| d | }| j | d S )Nz            
)r6   write)rf   fmtZvargsr`   r"   r"   r#   dumpout  s    zX12General.dumpout)N)r4   
__module____qualname__r   r   r   r   r"   r"   r"   r#   r     s   
r   c                	   @   s   e Zd ZedfddZed defed defed defed defiZ	d	d
 Z
edd Zdd Zdd Zdd Zdd Zdd ZeeedZeee dS )X12BookFc                 C   s>   || _ || _|| _d| j _i | j _i | _i | _g | _g | _d S rv   )	r   r6   r5   nsheetsprops
relid2pathrelid2reltypesheet_targetssheetIdsrf   r   r6   r5   r"   r"   r#   __init__   s    zX12Book.__init__ZlastModifiedBylast_modified_bycreatormodifiedcreatedc           	      C   s   | j dkrt| jd t|| _| jj}i }tr<| j	 n| j
 D ]@}| j dkr^| | ||j}|rF|\}}||j}|||< qF|dp|d| j_|| j_| j dkrt| jd| |   d S )Nr9   z
=== coreProps ===
r   r   r   z
props: %r
)r5   r   r6   r   r   r   core_props_menura   r.   r   r   r   r;   r`   r   Z	user_namer   r   )	rf   r   Zgetmenur   rg   Zmenuattrr   rw   r"   r"   r#   process_coreprops2  s$    






zX12Book.process_corepropsc                 C   s   |  dd S )N\/)r   r   )r   r"   r"   r#   convert_filenameF  s    zX12Book.convert_filenamec                 C   s   | j dkrt| jd t|}td }||D ]}|d}t	|d}|d
dd }| j dkr~| d	||| || j|< |dr|d
d  | j|< q2d| | j|< q2d S )Nr9   z
=== Relationships ===
RelationshipIdTargetTyper   rF   Id=%r Type=%r Target=%rr   zxl/)r5   r   r6   r   r   U_PKGRELfindallra   r   r   splitr   r   
startswithr   rf   r   r   rl   rg   ridtargetreltyper"   r"   r#   process_relsJ  s    





zX12Book.process_relsc                 C   s   dr| j dkr| | t }| j}||_t|j|_|j| |d|_	d |_
t| ||_tt|| |jd kr|d|_|j	drd|_| j dkr|jdd	 d S )
Nr   r   r   rF   z_xlnm.r   r9   z=== Name object ===)header)r5   r   r   r   r   r   
name_indexrk   ra   r   Zraw_formulari   Zformula_textrs   _defined_name_attribute_mapr   r   r   dump)rf   rg   r   r   r"   r"   r#   do_defined_name\  s"    


zX12Book.do_defined_namec                 C   s"   |D ]}|  | qt| j d S r>   )r   r   r   )rf   rg   ro   r"   r"   r#   do_defined_namesp  s    zX12Book.do_defined_namesc                 C   s  | j }|j}|td }t|d}tt|d}| j| }| j| }| j	dkrl| 
d||||| |dkr| j	dkr| 
d|| d S |d}	d	d	d
dd}
|j|
|	  t|d ||d}t|_t|_|j| |j| | jd
7  _| j| | j| d S )NidsheetIdr   r9   z+sheetx=%d sheetId=%r rid=%r type=%r name=%rZ	worksheetz#Ignoring sheet of type %r (name=%r)stater   r   )Nvisibler   Z
veryHidden)positionr   number)r   r   ra   U_ODRELrK   r_   re   r   r   r5   r   Z_sheet_visibilityrk   r   X12_MAX_ROWSZutter_max_rowsrH   Zutter_max_cols_sheet_listZ_sheet_namesr   r   )rf   rg   r   sheetxr   r   r   r   r   r   Zvisibility_mapsheetr"   r"   r#   do_sheetu  sF    


    

zX12Book.do_sheetc                 C   s0   t |d}| jdkr$| d| || j_d S )NZdate1904r9   zdatemode=%r)r   ra   r5   r   r   datemode)rf   rg   r   r"   r"   r#   do_workbookpr  s    
zX12Book.do_workbookpr)ZdefinedNamesZ
workbookPrr   N)r4   r   r   DLFr   U_CPru   U_DC	U_DCTERMSr   r   staticmethodr   r   r   r   r   r   r   rC   U_SSML12r"   r"   r"   r#   r     s.       
#r   c                   @   s.   e Zd ZedfddZd	ddZd
ddZdS )X12SSTr   c                 C   s,   || _ || _|| _tr | j| _n| j| _d S r>   )r   r6   r5   r,   process_stream_iterparser   process_stream_findallr   r"   r"   r#   r     s    
zX12SST.__init__Nc                 C   s   | j dkr |d k	r t| jd| td }d}| jj}t|D ]Z\}}|j|krRq>|d }| j dkr|t| jd| | 	| t
| |}|| |  q>| j dkr| dt| | j dkrt|D ]\}	}
t| jd	|	|
 qd S )
Nr9   r   sirF   r   r   element #%d
Entries in SST: %dzSST x=%d s=%r
)r5   r   r6   r   r   _sharedstringsr   r   r;   r   rp   rk   clearr   r   	enumerate)rf   r   r   si_tagelemnossteventrg   r   rB   r]   r"   r"   r#   r     s(    
 






zX12SST.process_stream_iterparsec                 C   s   | j dkr |d k	r t| jd| t|| _td }d}| jj}| j	|D ]B}|d }| j dkrzt| jd| | 
| t| |}|| qL| j dkr| dt| d S )	Nr9   r   r   rF   r   r   r   r   )r5   r   r6   r   r   r   r   r   r   r   r   rp   rk   r   r   )rf   r   r   r   r   r   rg   r   r"   r"   r#   r     s    



zX12SST.process_stream_findall)N)N)r4   r   r   r   r   r   r   r"   r"   r"   r#   r     s   	
r   c                   @   sR   e Zd ZedfddZdd Zdd Zdd	 Zd
d ZeeeedZ	e
e	e dS )	X12Stylesr   c                 C   sd   || _ || _|| _ddg| _d | _i | _ttddttdd D ]}d| j|< qDd| j jd< d S )Nr         -   0   r   r9   )	r   r6   r5   	xf_countsxf_typefmt_is_dater?   range_xf_index_to_xl_type_map)rf   r   r6   r5   rB   r"   r"   r#   r     s    
 zX12Styles.__init__c                 C   s
   d| _ d S rv   r   r   r"   r"   r#   do_cellstylexfs  s    zX12Styles.do_cellstylexfsc                 C   s
   d| _ d S )Nr   r  r   r"   r"   r#   
do_cellxfs  s    zX12Styles.do_cellxfsc                 C   sl   t |d}t|d}t| j|}|| j|< t||d |}|| jj|< | jdkrh| 	d||| d S )N
formatCodenumFmtIdr9   r   z$numFmtId=%d formatCode=%r is_date=%d)
re   ra   rK   r   r   r   r   
format_mapr5   r   )rf   rg   r  r  is_dateZfmt_objr"   r"   r#   	do_numfmt  s    

zX12Styles.do_numfmtc                 C   s   | j dkrd S | j| j  }|d | j| j < t }| jj| | j jd7  _t|dd}||_	| j
|d}|d | jj|< | jdkr| d|| | t| jj d S )Nr   r  r|   r   r9   r   zxfx=%d numFmtId=%d)r   r   r   r   Zxf_listrk   ZxfcountrK   ra   Z
format_keyr   r  r5   r   r/   )rf   rg   Zxfxxfr  r	  r"   r"   r#   do_xf  s    

zX12Styles.do_xf)ZcellStyleXfsZcellXfsZnumFmtr  N)r4   r   r   r   r   r  r  r
  r  r   rC   r   r"   r"   r"   r#   r     s   
r   c                   @   s^   e Zd ZedfddZdddZdd Zd	d
 Zdd Zdd Z	dd Z
de
iZeee dS )X12Sheetr   c                 C   sZ   || _ || _|| _d| _|j| _| jj| _i | _i | _	|j
| _
d| _d| _trV| j| _d S )NrF   r   )r   r6   r5   rS   bookr   r   r   r   r   merged_cellswarned_no_cell_namewarned_no_row_numr,   own_process_streamr   )rf   r   r6   r5   r"   r"   r#   r     s    
zX12Sheet.__init__Nc                 C   s   | j dkr |d k	r t| jd| td }| j}t|D ]V\}}|j|kr\|| |  q8|jtd krv| 	| q8|jtd kr8| 
| q8|   d S )Nr9   r   row	dimensionZ	mergeCell)r5   r   r6   r   do_rowr   r   r;   r   do_dimensiondo_merge_cellr   )rf   r   r   Zrow_tagZself_do_rowr   rg   r"   r"   r#   r    s    

zX12Sheet.own_process_streamc                 C   s   | j dkrt| jd t|}td }||D ]d}|d}|d}|ddd }| j dkrx| 	d	||| || j
|< ttd
|| j|< q2d S )Nr9   z
=== Sheet Relationships ===
r   r   r   r   r   rF   r   zxl/worksheets)r5   r   r6   r   r   r   r   ra   r   r   r   r   r   r   r   r"   r"   r#   r   .  s    





zX12Sheet.process_relsc                 C   s2  t | }|d }|jtd ks(tdd |D }|d }|jtd ksPt| jj}ddlm} td }td	 }	td
 }
|	td D ]}|	d| d |
 }||	d| d |	 d |
 7 }|
d}| }|t|
d |_t| \|_|_}d|_|D ]}| jt| |7  _q|||< qd S )Nr   authorsc                 S   s   g | ]
}|j qS r"   )r`   )r    rg   r"   r"   r#   r$   @  s     z4X12Sheet.process_comments_stream.<locals>.<listcomp>r   ZcommentList)Noter`   rj   rh   r   z./r   refZauthorIdr   )r   r   Zgetrootr;   r   rI   r   cell_note_mapr  r   ra   rK   authorrT   rS   rO   r`   ri   )rf   r   rootZauthor_listr  Zcomment_listr  r  Ztext_tagrl   rm   rg   tsr  ZnoteZcoordsrh   r"   r"   r#   process_comments_stream<  s,    "
z X12Sheet.process_comments_streamc                 C   sP   | d}|rL|dd }t|dd\}}|d | j_|d k	rL|d | j_d S )Nr  :rF   T)rN   r   )ra   r   rT   r   Z	_dimnrowsZ	_dimncols)rf   rg   r  last_cell_refrS   rO   r"   r"   r#   r  T  s    
 
zX12Sheet.do_dimensionc           	      C   sv   | d}|rrz|d\}}W n tk
r<   |}|}Y nX t|\}}t|\}}| j||d ||d f d S )Nr  r   r   )ra   r   r   rT   r  rk   )	rf   rg   r  Zfirst_cell_refr!  Z
first_rowxZ
first_colxZ	last_rowxZ	last_colxr"   r"   r#   r  _  s    

 zX12Sheet.do_merge_cellc              	      s   fdd}| d}|d krV|  jd7  _d}| jrh| jsh| d| j d| _nt|d | _d}d| j  kr~tk sn t| jd| jdkr| d	|| j| t}|D ]}| d}|d krd7 | jr| j	s| d
 d| _	ndd}zn|D ]d}	|d7 }|	dkrq||	 }
|
r8d |
 n,d d  krXt
k s^n t qhqW n& tk
r   td|	|f Y nX |r||d  |krtd||f t| dd}| dd d } dkr`|D ]6}|j}|tkr|j}n|tkrntd| q|sF| jjr^| jtd| n| jd t|| q dkr|D ]2}|j}|tkr|j}n|tkrn|| qn|s| jjr| jtd| n"| jt| }| jt|| q dkrH|D ]6}|j}|tkrt| |}n|tkr&n|| q| jt|| q dkr|D ]2}|j}|tkrr|j}n|tkr~n|| qV| jtt|| q dkrd}|D ]2}|j}|tkr|j}n|tkrn|| qt| }| jt|| q dkr|D ]H}|j}|tkr6t| |}n&|tkrH|j}n|tkrTn|| q|s| jjr| jtd| n| jt|| qtd f qd S )Nc                    s   t d | f d S )Nz9cell type %s has unexpected child <%s> at rowx=%r colx=%r)r*   )	child_tagZ	cell_typerO   rS   r"   r#   bad_child_tagp  s    z&X12Sheet.do_row.<locals>.bad_child_tagrj   r   r   zno row number; assuming rowx=%drF   r   z'<row> row_number=%r rowx=%d explicit=%dz%no cellname; assuming rowx=%d colx=%d$rD   rG   z!cell name %r but row number is %rr]   r|   rh   nzunexpected tag %rr   strbez#N/AZ	inlineStrz'Unknown cell type %r in rowx=%d colx=%d) ra   rS   r5   r  r   rK   r   rI   _UPPERCASE_1_REL_INDEXr  rH   rJ   r*   r;   V_TAGr`   F_TAGr   formatting_infor   Zput_cellr   floatr   r
   ri   r   r   error_code_from_textr	   IS_TAGrp   )rf   Zrow_elemr$  Z
row_numberZexplicit_row_numberrM   Z	cell_elemrL   rP   rQ   rR   Zxf_indexZtvaluero   r"  rw   r"   r#  r#   r  n  s    

  
























zX12Sheet.do_rowr  )N)r4   r   r   r   r   r  r   r  r  r  r  r   rC   r   r"   r"   r"   r#   r    s   
  r  c                 C   s  t || t }||_||_||_|r.tdd|_||_|rV|rPtd|jd d|_||_	t
|||}	| |d }
|	|
 ~
| |d }
|	|
d ~
d}||kr| || }
|	|
 t|||}d	|kr| |d	 }
||
d
 ~
n d}t|||}||kr*| || }
||
d ~
t|jD ]}|	j| }| || }
|j| }t|||}d|j||f }||
| ~
d|ddd  }||kr| |}|| ~|j D ]F\}}|dkr|j|}|r||kr| |}|| ~q|  q4|S )Nz(formatting_info=True not yet implementedFzEWARNING *** on_demand=True not yet implemented; falling back to Falser%   zxl/_rels/workbook.xml.relszxl/workbook.xmlZWorkbookzdocprops/core.xmlzxl/styles.xmlstyleszxl/sharedstrings.xmlZSSTzSheet %r (sheetx=%d) from %rzxl/worksheets/_rels/%s.relsr   r   rF   comments)r7   r   r6   r5   r-  r-   use_mmap	on_demandr2   ragged_rowsr   openr   r   r   r   r   r  r   r   r   r  r   rsplitr   itemsr   ra   r  Ztidy_dimensions)zfZcomponent_namesr6   r5   r3  r-  r4  r5  r   Zx12bookZzfloZ
props_nameZx12styZ	sst_fnameZx12sstr   fnamer   Zx12sheetr   Z
rels_fnameZzfrelsZrelidr   Zcomments_fnameZcomments_streamr"   r"   r#   open_workbook_2007_xml  st    











r;  )J
__future__r   r   rer'   os.pathr   r   Zbiffhr   r   r	   r
   r   r   r  r   r   Z
formattingr   r   r   r   r   ZtimemachineDEBUGstdoutr   r   r,   r.   r7   r=   rC   r*  r   Z_xrT   r/  r8  _code_textr   r   r   r   r   r   rb   rd   r   rH   r+  r,  r0  compileUNICODEsubr_   ri   rp   rs   ru   rx   r   r   r   objectr   r   r   r   r  r;  r"   r"   r"   r#   <module>   s    &



 18  