
    /+"g                         d Z ddlZddlZddlmZ ddlmZmZ g dZdZ	 G d de
          Z G d	 d
e          Zd Z G d de          Z G d de          Z G d de          Z G d de          Zd ZdS )z
    pyexcel_xlsr
    ~~~~~~~~~~~~~~~~~~~

    The lower level xls/xlsm file format handler using xlrd

    :copyright: (c) 2016-2021 by Onni Software Ltd
    :license: New BSD License
    N)has_no_digits_in_float)ISheetIReader)	filenamelogfile	verbosityuse_mmapfile_contentsencoding_overrideformatting_info	on_demandragged_rowsz#N/Ac                       e Zd Zd Zd ZdS )
MergedCellc                 L    || _         || _        || _        || _        d | _        d S N)_MergedCell__rl_MergedCell__rh_MergedCell__cl_MergedCell__chvalue)selfrow_lowrow_high
column_lowcolumn_highs        R/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel_xls/xlsr.py__init__zMergedCell.__init__   s)    				


    c                     t          | j        | j                  D ]+}t          | j        | j                  D ]}|d|}| ||<   ,d S )N-)ranger   r   r   r   )r   registryrowxcolxkeys        r   register_cellszMergedCell.register_cells&   sf    $)TY// 	% 	%Ddi33 % %!%tt, $%	% 	%r   N)__name__
__module____qualname__r   r'    r   r   r   r      s2          % % % % %r   r   c                   H    e Zd ZdZddZed             Zd Zd Zd Z	d	 Z
d
S )XLSheetzZ
    xls, xlsx, xlsm sheet reader

    Currently only support first sheet in the file
    Tr   c                 F   || _         g | _        g | _        i | _        || _        || _        || _        |                    d          du r-|j        D ]%}t          | }|
                    | j                   &|                    d          du r| j        j                                        D ]*\  }}|j        dk    r| j                            |           +| j        j                                        D ],\  }	}|j        dk    r| j                            |	           +d S d S )Ndetect_merged_cellsTskip_hidden_row_and_column   )_XLSheet__auto_detect_int_XLSheet__hidden_cols_XLSheet__hidden_rows_XLSheet__merged_cells_book_date_mode	xls_sheet	_keywordsgetmerged_cellsr   r'   colinfo_mapitemshiddenappendrowinfo_map)
r   sheetauto_detect_int	date_modekeywordsmerged_cell_rangesr:   	col_indexinfo	row_indexs
             r   r   zXLSheet.__init__4   sF   !0 (!<<-..$66&+&8 A A")+=>++D,?@@@@<<455==#'>#=#C#C#E#E 9 9	4;!##&--i888#'>#=#C#C#E#E 9 9	4;!##&--i888 >=9 9r   c                     | j         j        S r   )r7   namer   s    r   rI   zXLSheet.nameH   s    ~""r   c                 b    | j         j        t          | j                  z
  }t	          |          S r   )r7   nrowslenr4   r"   )r   number_of_rowss     r   row_iteratorzXLSheet.row_iteratorL   s*    -D4F0G0GG^$$$r   c              #      K   | j         j        t          | j                  z
  }t	          |          D ]}|                     ||          V  d S r   )r7   ncolsrM   r3   r"   
cell_value)r   rownumber_of_columnscolumns       r   column_iteratorzXLSheet.column_iteratorP   s`       N03t7I3J3JJ-.. 	/ 	/F//#v......	/ 	/r   c                 >   | j                             d          du r|                     ||          \  }}| j                            ||          }| j                            ||          }|t          j        k    rt          || j	                  }nM|t          j
        k    r&| j        rt          |          rt          |          }n|t          j        k    rt          }| j        r7| j                            |d|          }|r|j        r|j        }n||_        |S )z0
        Random access to the xls cells
        r0   Tr!   )r8   r9   _offset_hidden_indicesr7   	cell_typerR   xlrdXL_CELL_DATExldate_to_python_dater6   XL_CELL_NUMBERr2   r   intXL_CELL_ERRORDEFAULT_ERROR_VALUEr5   r   )r   rS   rU   rY   r   merged_cells         r   rR   zXLSheet.cell_valueU   s$    >:;;tCC55c6BBKCN,,S&99	))#v66))))%1EFFEE$---$2H-%e,, #E

$,,,'E 	.-11SSS&&2IJJK .$ .'-EE(-K%r   c                 ^    t          || j                  }t          || j                  }||fS r   )calculate_offsetsr4   r3   )r   rS   rU   s      r   rX   zXLSheet._offset_hidden_indiceso   s0    T%788"64+=>>F{r   N)Tr   )r(   r)   r*   __doc__r   propertyrI   rO   rV   rR   rX   r+   r   r   r-   r-   -   s         9 9 9 9( # # X#% % %/ / /
  4    r   r-   c                 6    d}|D ]}|| |z   k    r|dz  }| |z   S )Nr   r1   r+   )incoming_indexhidden_indicesoffsetindexs       r   rc   rc   u   s;    F  ^f,--aKFF""r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )	XLSReaderz@
    XLSBook reader

    It reads xls, xlsm, xlsx work book
    c                    |                     dd          | _        |                     dd          | _        |                     dd          | _        || _        |                                 }| j        r|dk    rd|d<   | j        rd|d<   g | _         | j        d	i || _        | j        	                                D ]/}| j        r|j
        dk    r| j                            |           0d S )
Nskip_hidden_sheetsTr0   r/   Fxlsr   r   r+   )r9   _XLSReader__skip_hidden_sheets"_XLSReader__skip_hidden_row_column_XLSReader__detect_merged_cellsr8   _extract_xlrd_paramscontent_arrayget_xls_bookxls_booksheets
visibilityr>   )r   	file_typerC   xlrd_paramsr@   s        r   r   zXLSReader.__init__   s   $,LL1Et$L$L!(0($)
 )
% &.\\2G%O%O"!//11( 	2Y%-?-?-1K)*% 	2-1K)*))88K88]))++ 	- 	-E( U-=-B-B%%e,,,,	- 	-r   c                 \    | j         |         }t          |fd| j        j        i| j        }|S )NrB   )rt   r-   rv   datemoder8   )r   rj   native_sheetr@   s       r   
read_sheetzXLSReader.read_sheet   sD    )%0
 
$(M$:
>Bn
 
 r   c                 X    | j         r"| j                                          d | _         d S d S r   )rv   release_resourcesrJ   s    r   closezXLSReader.close   s5    = 	!M++--- DMMM	! 	!r   c                 (    t          j        di |}|S )Nr+   )rZ   open_workbook)r   rz   rv   s      r   ru   zXLSReader.get_xls_book   s    %4444r   c                     i }| j         Ot          | j                                                   D ](}|t          v r| j                             |          ||<   )|S r   )r8   listkeysXLS_KEYWORDSpop)r   paramsr&   s      r   rs   zXLSReader._extract_xlrd_params   s^    >%DN//1122 : :,&&"&."4"4S"9"9F3Kr   N)	r(   r)   r*   rd   r   r~   r   ru   rs   r+   r   r   rl   rl   }   si         - - -(  ! ! !
      r   rl   c                        e Zd Z fdZ xZS )	XLSInFilec                 @     t                      j        |fd|i| d S )Nr   superr   )r   	file_namery   rC   	__class__s       r   r   zXLSInFile.__init__   s-    CCYC(CCCCCr   r(   r)   r*   r   __classcell__r   s   @r   r   r      sA        D D D D D D D D Dr   r   c                        e Zd Z fdZ xZS )XLSInContentc                 @     t                      j        |fd|i| d S )Nr
   r   )r   file_contentry   rC   r   s       r   r   zXLSInContent.__init__   s-    KK,K(KKKKKr   r   r   s   @r   r   r      sA        L L L L L L L L Lr   r   c                        e Zd Z fdZ xZS )XLSInMemoryc                     |                     d            t                      j        |fd|                                i| d S )Nr   r
   )seekr   r   read)r   file_streamry   rC   r   s       r   r   zXLSInMemory.__init__   s`    	
 	
%0%5%5%7%7	
;C	
 	
 	
 	
 	
r   r   r   s   @r   r   r      s8        
 
 
 
 
 
 
 
 
r   r   c           	         t          j        | |          }d}|dk    rt          j        dddddd          }n|dd         dk    r)t          j        |d         |d         |d	                   }nt|dd
         dk    r)t          j        |d         |d         |d                   }n=t          j        |d         |d         |d         |d         |d         |d	                   }|S )z(
    convert xl date to python date
    N)r   r   r   r   r   r   il  r1   r      )r   r   r               )rZ   xldate_as_tupledatetimetimedate)r   rB   
date_tuplerets       r   r\   r\      s     %eY77J
C'''aAq!44	AaCI	%	%mJqM:a=*Q-HH	AaCI	%	%mJqM:a=*Q-HHqMqMqMqMqMqM
 
 Jr   )rd   r   rZ   pyexcel_io.servicer   pyexcel_io.plugin_apir   r   r   r`   objectr   r-   rc   rl   r   r   r   r\   r+   r   r   <module>r      s      5 5 5 5 5 5 1 1 1 1 1 1 1 1
 
 
  % % % % % % % %E E E E Ef E E EP# # #1 1 1 1 1 1 1 1hD D D D D	 D D D
L L L L L9 L L L

 
 
 
 
) 
 
 
    r   