
    Mf                     6   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dS )    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 ]7}| |         }|t          |          t          d          z
  dz   |z  z  }|dz  }8|dz
  S )z)'A' -> 0, 'Z' -> 25, 'AA' -> 26, etc
    r   r   A   )r   lenord)colnamecolpowerichs        I/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/xlwt/Utils.pycol_by_namer      su     CECLLNB++  QZB#c(("Q&%//7N    c                 >   t                               |           }|st          d| z            |                                \  }}}}t	          |          }t	          |          }t          |          dz
  }t          |                                          }||||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#      s     	$A G>EFFF!"GS'37mmG7mmG
c((Q,C
ciikk
"
"CWg%%r   c                     t                               |           }|st          d          |                                \  }}}}t	          |          dz
  }t          |                                          }||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%   .   ss     	$A 0.///!"GS'3 c((Q,C
ciikk
"
"C8Or   Fc                 X   d| cxk    rt           k     sn J d|cxk    rt          k     sn J |dz  }|dz  }d}|rd}nd}|rd}nd}|dk    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  1uu3s88a<1$%%s3xx!|DT>D 7*Sq\\99r   c                 r    | |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   sR     4<<<<4<<<<tT8X66
	
tXx
8
8	9
r   c                    |                                  } t                              |           }|rTt          |                    d                    dz
  }d}t          |                    d                    dz
  }d}||||fS t
                              |           }|rrt          |                    d                                                     }d}t          |                    d                                                     }d}||||fS t                              |           }|rPt          |                    d                    \  }}t          |                    d                    \  }}||||fS t                              |           }|r+t          |                    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   s    !!I


i
(
(C
 &399Q<<  1$399Q<<  1$T4%% 

i
(
(C
 &399Q<<--//00399Q<<--//00T4%%


y
)
)C
 &$SYYq\\22
d$SYYq\\22
dT4%%


Y
'
'C
 &$SYYq\\2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!5Cgw
g~~>EFFF
g~~;tWoMNNN37{r!!C37{r!!C8Or   c                 l    | dk    s| d         dk    st          |           dk    rdS | D ]	}|dv r dS 
dS )Nr'   r   '   Fz[]:\?/* T)r   )
sheet_namecs     r   valid_sheet_namerM      s[    SJqMT11S__r5I5Iu  55  4r   c                 |    t          |           st          d| z            d|                     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      sS    /00 S;>QQS 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      sK  
 
			 ( ( ( ( ( ( ( (      bj8"-HH
/00
?OOLbm\\rz3R]CC	 	 	& & &$  $: : : :2 >C
 
 
 
$? $? $?N	 	 	  B B B B Br   