
    g                     p   d dl Z ddlmZmZ ddlmZ  e j                  de j                        Z e j                  d      Z	 e j                  de j                        Z
 e j                  de j                        Z e j                  d	e j                        Zd
 Zd Zd ZddZ	 ddZd Zd Zd Zd Zy)    N   )MAX_ROWMAX_COL)xrangez(\$?)([A-I]?[A-Z])(\$?)(\d+)z\$?(\d+):\$?(\d+)z!\$?([A-I]?[A-Z]):\$?([A-I]?[A-Z])z-\$?([A-I]?[A-Z]\$?\d+):\$?([A-I]?[A-Z]\$?\d+)z\$?([A-I]?[A-Z]\$?\d+)c                     d}d}t        t        |       dz
  dd      D ],  }| |   }|t        |      t        d      z
  dz   |z  z  }|dz  }. |dz
  S )z)'A' -> 0, 'Z' -> 25, 'AA' -> 26, etc
    r   r   A   )r   lenord)colnamecolpowerichs        J/var/www/html/gmsbutik/gmsbutik/lib/python3.12/site-packages/xlwt/Utils.pycol_by_namer      sl     CECLNB+ QZB#c("Q&%// 7N    c                     t         j                  |       }|st        d| z        |j                         \  }}}}t	        |      }t	        |      }t        |      dz
  }t        |j                               }||||fS )zConvert an Excel cell reference string in A1 notation
    to numeric row/col notation.

    Returns: row, col, row_abs, col_abs

    z$Ill-formed single_cell reference: %sr   )_re_cell_exmatch	Exceptiongroupsboolintr   uppercellmcol_absr   row_absrows         r   cell_to_rowcolr#      sz     	$A>EFF!"GS'37mG7mG
c(Q,C
ciik
"CWg%%r   c                     t         j                  |       }|st        d      |j                         \  }}}}t	        |      dz
  }t        |j                               }||fS )zsConvert an Excel cell reference string in A1 notation
    to numeric row/col notation.

    Returns: row, col

    zError in cell formatr   )r   r   r   r   r   r   r   r   s         r   cell_to_rowcol2r%   .   s_     	$A.//!"GS'3 c(Q,C
ciik
"C8Or   c                 &   d| cxk  r
t         k  sJ  J d|cxk  r
t        k  sJ  J |dz  }|dz  }d}|rd}nd}|rd}nd}|dkD  rt        t        d      |z   dz
        }t        t        d      |z         }||z   |z   |z   t	        | dz         z   S )z\Convert numeric row/col notation to an Excel cell reference string in
    A1 notation.

    r   r
    $r	   r   )r   r   chrr   str)r"   r   r!   r    dr   chr1chr2s           r   rowcol_to_cellr.   @   s    
 ggr	AbAD1u3s8a<1$%s3x!|DT>D 7*Sq\99r   c                 ^    | |k  sJ ||k  sJ t        | |||      dz   t        ||||      z   S )zsConvert two (row,column) pairs
    into a cell range string in A1:B2 notation.

    Returns: cell range string
    :)r.   )row1col1row2col2row1_abscol1_absrow2_abscol2_abss           r   rowcol_pair_to_cellranger9   X   sJ     4<<4<<tT8X6
	
tXx
8	9
r   c                    | j                         } t        j                  |       }|rDt        |j	                  d            dz
  }d}t        |j	                  d            dz
  }d}||||fS t
        j                  |       }|rZt        |j	                  d      j                               }d}t        |j	                  d      j                               }d}||||fS t        j                  |       }|r@t        |j	                  d            \  }}t        |j	                  d            \  }}||||fS t        j                  |       }|r#t        |j	                  d            \  }}||||fS t        d| z        )zpConvert cell range string in A1 notation to numeric row/col
    pair.

    Returns: row1, col1, row2, col2

    r   r      r   zUnknown cell reference %s)r   _re_row_ranger   r   group_re_col_ranger   _re_cell_ranger%   _re_cell_refr   )	cellrangeresr1   r2   r3   r4   s         r   cellrange_to_rowcol_pairrC   g   se    !I


i
(C
399Q< 1$399Q< 1$T4%% 

i
(C
399Q<--/0399Q<--/0T4%%


y
)C
$SYYq\2
d$SYYq\2
dT4%%


Y
'C
$SYYq\2
dT4%%
/9=
>>r   c                     t        |       \  }}}}|t        k\  rt        d| z        |t        k\  rt        d| t        fz        |t	        |       dz  z  }|t	        |       dz  z  }||fS )z5 pack row and column into the required 4 byte format z$Column %s greater than IV in formulaz!Row %s greater than %d in formula      )r#   r   r   r   r   )r   r"   r   r!   r    s        r   cell_to_packed_rowcolrG      s~    !/!5Cgw
g~>EFF
g~;tWoMNN37{r!!C37{r!!C8Or   c                 V    | dk(  s| d   dk(  st        |       dkD  ry| D ]  }|dv s y y)Nr'   r   '   Fz[]:\?/* T)r   )
sheet_namecs     r   valid_sheet_namerM      sB    SJqMT1S_r5I  r   c                 d    t        |       st        d| z        d| j                  dd      z   dz   S )Nz-attempt to quote an invalid worksheet name %rrI   z'')rM   r   replace)unquoted_sheet_names    r   quote_sheet_namerQ      sA    /0;>QQS 	S%--dE::TAAr   )FF)FFFF)re
ExcelMagicr   r   compatr   compile
IGNORECASEr   r<   r>   r?   r@   r   r#   r%   r.   r9   rC   rG   rM   rQ    r   r   <module>rX      s   
 
 ( bjj8"--H

/0

?OLbmm\rzz3R]]C	&$$:2 >C
$?N	Br   