
    nhQ                       d dl m Z  d dlmZmZ ddl ddlmZmZ ddlm	Z	m
Z
mZmZmZ ddl d Zd ZdZ G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Zd Zeeeeeeeee eiZ!e"de#dedede$de%de&diZ' G d de      Z( e(e"d      Z) G d d e      Z*dZ+ G d! d"e      Z,y#)$    )array)calcsizeunpack   )*)Formatnearest_colour_index)FMLA_TYPE_CELLFMLA_TYPE_SHAREDdecompile_formuladump_formularangename2d))show_formulasr   )show_grid_linesr   )show_sheet_headersr   )panes_are_frozenr   )show_zero_valuesr   )automatic_grid_line_colourr   )columns_from_right_to_leftr   )show_outline_symbolsr   )'remove_splits_if_pane_freeze_is_removedr   )sheet_selectedr   )sheet_visibler   )show_in_page_break_previewr   c                   n   e Zd ZdZdZdZdZdZi Zi Z	g Z
g Zg Zi ZdZdZdZdZdZdZdZdZdZg Zi Zi ZdZdZdZdZdZdZg Z g Z!d Z"d Z#d Z$d	 Z%d
 Z&d Z'd Z(d Z)d Z*e*Z+d(dZ,d(dZ-d(dZ.d(dZ/d(dZ0d(dZ1e/Z2d Z3d Z4d Z5d Z6d Z7d Z8d)dZ9d*dZ:d*dZ;d Z<d Z=d  Z>d! Z?d" Z@d# ZAd$ ZBd% ZCd& ZDd' ZEy)+Sheetap  
    Contains the data for one worksheet.

    In the cell access functions, ``rowx`` is a row index, counting from
    zero, and ``colx`` is a column index, counting from zero.
    Negative values for row/column indexes and slice positions are supported in
    the expected fashion.

    For information about cell types and cell values, refer to the documentation
    of the :class:`Cell` class.

    .. warning::

      You don't instantiate this class yourself. You access :class:`Sheet`
      objects via the :class:`~excelrd.book.Book` object that
      was returned when you called :func:`excelrd.open_workbook`.
     Nr   (   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                    || _         |j                  | _        || _        |j                  | _        t	        dt
        g      | _        t	        ddg      | _        || _        || _	        |j                  | _
        |j                  | _        |j                  | _        | j                  r| j                  | _        n| j                  | _        |j                   | _        d| _        d| _        d| _        d| _        d| _        d| _        g | _        g | _        g | _        d | _        d | _        d | _        d| _        d| _        d| _        d| _         i | _!        i | _"        g | _#        g | _$        g | _%        i | _&        g | _'        g | _(        g d| _)        |jT                  |   | _+        tX        D ]  \  }}t[        | ||        d| _.        d| _/        d| _0        d | _1        g | _2        i | _3        i | _4        d| _5        d| _6        d| _7        d| _8        d | _9        d | _:        i | _;        | j                  d	k\  rd
| _<        nd| _<        d| _=        d| _>        y )NBhr   )r   r   r   r   @   <   d   P   i    @     )?bookbiff_version	_positionlogfiler   XL_CELL_EMPTYbtbfnamenumber	verbosityformatting_inforagged_rowsput_cell_raggedput_cellput_cell_unragged_xf_index_to_xl_type_mapnrowsncols_maxdatarowx_maxdatacolx	_dimnrows	_dimncols_cell_values_cell_types_cell_xf_indexesdefcolwidthstandardwidthdefault_row_heightdefault_row_height_mismatchdefault_row_hiddendefault_additional_space_abovedefault_additional_space_belowcolinfo_maprowinfo_mapcol_label_rangesrow_label_rangesmerged_cellsrich_text_runlist_maphorizontal_page_breaksvertical_page_breaks_xf_index_stats_sheet_visibility
visibility_WINDOW2_optionssetattrfirst_visible_rowxfirst_visible_colxgridline_colour_indexgridline_colour_rgbhyperlink_listhyperlink_mapcell_note_map$cooked_page_break_preview_mag_factorcooked_normal_view_mag_factor$cached_page_break_preview_mag_factorcached_normal_view_mag_factorscl_mag_factor_ixfe_cell_attr_to_xfxutter_max_rowsutter_max_cols_first_full_rowx)selfr(   positionr/   r0   attrdefvals          s/var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/venv/lib/python3.12/site-packages/excelrd/sheet.py__init__zSheet.__init__9  sE   	 --!||m_-bT"	#33++ 00DM 22DM(,(E(E%

 "!"&+,("#./+./+ " "%'"&(#$&!+008, 	(LD&D$'	("#"#%)"#'   571-0* 561-.*"
!#""'D"'D! "    c                     | j                   r| j                  ||      }nd}t        | j                  |   |   | j                  |   |   |      S )zC
        :class:`Cell` object in the given row and column.
        N)r2   cell_xf_indexCellr?   r>   rf   rowxcolxxfxs       rj   cellz
Sheet.cell  sZ     $$T40CCT"4(d#D)
 	
rl   c                 &    | j                   |   |   S )z.Value of the cell in the given row and column.r>   rf   rq   rr   s      rj   
cell_valuezSheet.cell_value  s      &t,,rl   c                 &    | j                   |   |   S )z
        Type of the cell in the given row and column.

        Refer to the documentation of the :class:`Cell` class.
        r?   rw   s      rj   	cell_typezSheet.cell_type  s     %d++rl   c                    | j                          | j                  |   |   }|dkD  r| j                  dxx   dz  cc<   |S 	 | j                  |   j                  }|dkD  r| j                  dxx   dz  cc<   |S 	 	 | j                  |   j                  }|dk(  rd}| j                  dxx   dz  cc<   |S # t
        $ r Y Ew xY w# t
        $ r | j                  dxx   dz  cc<   Y yw xY w)z
        XF index of the cell in the given row and column.
        This is an index into :attr:`~excelrd.book.Book.xf_list`.

        .. versionadded:: 0.6.1
        r!   r   r            )req_fmt_infor@   rP   rI   xf_indexKeyErrorrH   rp   s       rj   rn   zSheet.cell_xf_index  s    	##D)$/8  #q(#J	""4(11CRx$$Q'1,'
 		""4(11Cby  #q(#J  		  	  #q(#	s$   6B4 ;8C 4	C ?C  C&%C&c                 2    t        | j                  |         S )z
        Returns the effective number of cells in the given row. For use with
        ``open_workbook(ragged_rows=True)`` which is likely to produce rows
        with fewer than :attr:`~Sheet.ncols` cells.

        .. versionadded:: 0.7.2
        )lenr>   )rf   rq   s     rj   row_lenzSheet.row_len  s     4$$T*++rl   c                     t        t        | j                  |               D cg c]  }| j                  ||       c}S c c}w )zS
        Returns a sequence of the :class:`Cell` objects in the given row.
        )ranger   r>   rt   rw   s      rj   rowz	Sheet.row  s8     38D<M<Md<S8T2UV$		$%VVVs   A c                 r    	 |\  }}| j                  ||      S # t        $ r | j                  |      cY S w xY w)z
        Takes either rowindex or (rowindex, colindex) as an index,
        and returns either row or cell respectively.
        )rt   	TypeErrorr   )rf   itemrowixcolixs       rj   __getitem__zSheet.__getitem__  sD    
	+LE5 99UE**  	" 88D>!	"s    66c                 @      fdt         j                        D        S )z3Returns a generator for iterating through each row.c              3   @   K   | ]  }j                  |        y wN)r   ).0indexrf   s     rj   	<genexpr>z!Sheet.get_rows.<locals>.<genexpr>  s     ?E?s   )r   r8   rf   s   `rj   get_rowszSheet.get_rows  s    ?U4::->??rl   c                 N    || j                   |   |d S | j                   |   || S )zM
        Returns a slice of the types of the cells in the given row.
        Nrz   rf   rq   
start_colxend_colxs       rj   	row_typeszSheet.row_types  s:     ##D)*+66%j::rl   c                 N    || j                   |   |d S | j                   |   || S )zN
        Returns a slice of the values of the cells in the given row.
        Nrv   r   s       rj   
row_valueszSheet.row_values  s:     $$T*:;77  &z(;;rl   c                     t        | j                  |         }|dk  r||z  }|dk  rd}|||kD  r|}n
|dk  r||z  }t        ||      D cg c]  }| j                  ||       c}S c c}w )zP
        Returns a slice of the :class:`Cell` objects in the given row.
        r   )r   r>   r   rt   )rf   rq   r   r   ncrr   s         rj   	row_slicezSheet.row_slice  s}     ""4()>"JA~
x"}H\NH27
H2MN$		$%NNNs   A(c                     | j                   }|dk  r||z  }|dk  rd}|||kD  r|}n
|dk  r||z  }t        ||      D cg c]  }| j                  ||       c}S c c}w )zS
        Returns a slice of the :class:`Cell` objects in the given column.
        r   )r8   r   rt   rf   rr   
start_rowxend_rowxnrrq   s         rj   	col_slicezSheet.col_slice  sq     ZZ>"JA~
x"}H\NH27
H2MN$		$%NNN    Ac                     | j                   }|dk  r||z  }|dk  rd}|||kD  r|}n
|dk  r||z  }t        ||      D cg c]  }| j                  |   |    c}S c c}w )zQ
        Returns a slice of the values of the cells in the given column.
        r   )r8   r   r>   r   s         rj   
col_valueszSheet.col_values  sv     ZZ>"JA~
x"}H\NH:?
H:UV$!!$'-VVVr   c                     | j                   }|dk  r||z  }|dk  rd}|||kD  r|}n
|dk  r||z  }t        ||      D cg c]  }| j                  |   |    c}S c c}w )zP
        Returns a slice of the types of the cells in the given column.
        r   )r8   r   r?   r   s         rj   	col_typeszSheet.col_types)  sv     ZZ>"JA~
x"}H\NH9>z89TU  &t,UUUr   c           
      &   | j                   dk\  r,t        | j                  d| j                  | j                         | j
                  rdx}}| j                  }| j                  }| j
                  D ]l  }|\  }}}}	d|cxk  r|cxk  r|k  rn nd|cxk  r|	cxk  r|k  s/n t        | j                  d| j                  | j                  |       ||kD  r|}|	|kD  sk|	}n || j                  kD  r|| _        d| _
        || j                  kD  r| j                  |dz
  dt        dd       | j                   dk\  r| j                  | j                  k7  s| j                  | j                  k7  rXt        | j                  d	| j                  | j                  | j                  | j                  | j                  | j                         | j                  s| j                  }
| j                   }| j"                  }| j$                  }| j&                  }| j                  dk(  r| j                  }n| j                  }t)        |      D ]S  }||   }t+        |      }|
|z
  }|dkD  sdg|z  ||   |d  | j,                  |z  ||d  |s?| j.                  |z  ||   |d  U y y )
Nr   z$tidy_dimensions: nrows=%d ncols=%d 
r   r   z6*** WARNING: sheet #%d (%r), MERGEDCELLS bad range %r
r   r!   z?NOTE *** sheet %d (%r): DIMENSIONS R,C = %d,%d should be %d,%d
)r1   fprintfr+   r8   r9   rL   rc   rd   r0   r/   re   r5   r,   r<   r=   r3   r?   r>   r@   r2   r   r   r-   r.   )rf   r   r   umaxrowsumaxcolscrangerlorhiclochir9   s_cell_typess_cell_valuess_cell_xf_indexes
s_fmt_infouboundrq   trowrlennextras                       rj   tidy_dimensionszSheet.tidy_dimensions=  sn   >>Q7



	 ""KB**H**H++ %+"S#sS232(2A<Vs<Vh<VQ		 8B8B DJJ
(*%DJJ b1faB?>>QDJJ$..$@DJJRVR`R`D`R		



	 JJE++L --M $ 5 5--J$$*..f J#D)4yA:24M$'."&''F"2DK!9=69I)$/6J  rl   c                    || j                   |   }d|cxk  r| j                  k  sJ  J d|cxk  r| j                  k  sJ  J | j                  }	 |dz   }| j                  |k  r| j
                  j                  }| j                  j                  }	| j                  j                  }
| j                  }| j                  }t        | j                  |      D ]#  } ||dz          |	g        |s |
|dz         % || _        | j
                  |   }| j                  |   }|r| j                  |   }t        |      }|| j                  k\  r
|dz   | _        ||z
  }|s6|j                  |       |j                  |       |rj                  |       y |dkD  r4|dz  }| j                  |z  ||d  dg|z  ||d  |r| j                  |z  |d  |||<   |||<   |r||<   y y #  t        d||| j                          xY w)Nr   r   r   r5   file)r7   rd   rc   r2   r8   r?   appendr>   r@   r-   r.   r   r   r9   printr+   )rf   rq   rr   ctypevaluer   fmt_infor   sctascvascxar-   r.   _unused	types_row
values_rowfmt_rowltr	num_emptys                      rj   r4   zSheet.put_cell_ragged  s    =11(;ED.4.......D.4.......''0	BzzB''..((//,,33WWWW$TZZ4 %GaLHR!V	%
  
((.I**40J//5i.Ctzz!!AX
s
I   '!!%(NN8,1}Q	 #'''I"5	#$$&4)#3
34 $(GGi$7GCDM#IdO$Jt ( 	*dDt||<s   BG  0B#G  A
G   G<c                    || j                   |   }	 || j                  |   |<   || j                  |   |<   | j                  r|| j                  |   |<   y y # t
        $ r^ |dz   }|dz   }d|cxk  r| j                  k  sJ  J d|cxk  r| j                  k  sJ  J || j                  kD  r=|| _        || j                  k  rd| _
        n|| j                  cxkD  rdkD  r
n n|| _
        || j                  k  r| j                  |   }| j                  t        |      z
  }	|	dkD  r1|j                  | j                  |	z         | j                  r+| j                  |   j                  | j                  |	z         | j                  |   j                  dg|	z         n| j                  j                  }
| j                  j                  }| j                  j                  }| j                  }| j                  }| j                  }| j                  }t!        | j                  |      D ]'  } |
||z          |dg|z         |s |||z         ) || _	        	 || j                  |   |<   || j                  |   |<   | j                  r|| j                  |   |<   Y y Y y #  t#        d||| j$                          xY w t#        d||| j$                          xY w)Nr   r   r   r   r5   r   )r7   r?   r>   r2   r@   
IndexErrorrd   rc   r9   r8   re   r   extendr-   r.   r   r   r   r+   )rf   rq   rr   r   r   r   r   r   r   r   r   r   r   r   r-   r.   r   s                    rj   r6   zSheet.put_cell_unragged  s   =11(;E@	+0DT"4(,1Dd#D)##4<%%d+D1 $ 8	 BB1d11111111d1111111DJJ

 

? -/D)D116B6,0D)TZZ ''-c$i/A:KK& 01++--d3::477V;KL%%d+22B4&=A''..((//,,33//ZZWWWW$TZZ4 &GbM"OR"W&  
/4  &t,05!!$'-''8@D))$/5 (j$4<<@	*dDt||<s&   AA G,KKAJJ;;Kc                 5   d}|xs | j                   dk\  }|xs | j                   dk\  }d}d}|j                  }| j                  |_        t        t        t        t
        t        t        f}| j                  }	t        }
|j                  }| j                  }| j                  }|xr |j                  }i }i }d}	  |       \  }}}|t        k(  r |
d|d d       \  }}}} |	||d ||       n|t        k(  r_ |
d|      \  }}}} |	||t         |j"                  |   |       |r|j                  j%                  |      }|re|| j&                  ||f<   nR|t(        k(  re |
d|dd	       \  }}}|t*        k  r,t-        |d	|j.                  xs |j1                         d
      }nt3        |d	d
      } |	||t         ||       n|t4        k(  r8 |
d|dd	       \  }}}|t*        k  rt7        |d	|j.                  xs |j1                         d
      \  }}t9        ||         }|dz  }g }t;        |      D ](  }|j=                  t        d|||dz                 |dz  }* |t?        |      k(  suJ tA        |d	d
      \  }}t        d|||dz          d   }|dz  }g }t;        |      D ](  }|j=                  t        d|||dz                 |dz  }* |t?        |      k(  sJ  |	||t         ||       || j&                  ||f<   n|tB        k(  r, |
d|d d	       \  }}}tE        |d	d       } |	||d ||       nm|tF        k(  rk |
d|dd       \  }}  |
d|dd        \  }!d}t;        | |!dz         D ]8  } |
d|||dz          \  }tE        ||dz   |d	z          }|d	z  } |	||d ||       : n|tH        k(  rc|s |
d|dd       \  }}"}#d|cxk  r| jJ                  k  s*n tM        d|| jJ                  fz  | jN                         R|"|#f}$|j%                  |$      }%|%tQ               x||$<   }%|"dz  |%_)        |"dz	  dz  |%_*        |#dz  |%_+        |#dz	  dz  |%_,        |#dz	  dz  |%_-        |#d	z	  dz  |%_.        |#dz	  dz  |%_/        |#dz	  dz  |%_0        |#dz	  dz  |%_1        |#dz	  dz  |%_2        |%j^                  sd|%_0        |%| jf                  |<   	 |rtM        d||"|#| jN                         |%jm                  | jN                  d| jj                  |fz         n|tn        v rh|dk\  r |
d |dd       \  }}}}&}'n=|d!k\  r |
d |dd       \  }}}}&}'n% |
d"|dd       \  }}}(}&}'| jq                  |(||      }|rAti        | jN                  d#||        |
d|d$d%       d   })ts        ||d%d  |)tt        ||d|&       |&d	d' d(k(  rt9        |&d         }*|*dk(  r*d}+	 |j                         \  },}-}.|,tv        k(  s	|,tx        k(  rd}+n|,t        k(  r1 |
d)|.d d       \  }/}0}1}2}3}4|rti        | jN                  d*|/|0|1|2|3       nf|,t        k(  rK |
d+|.d d       \  }/}0}1}2}5}4|rHti        | jN                  d,|/|0|1|2|5       ts        ||.dd  |4tz        d|||-       n|,|vrt}        d.|,z        |+s0|j                         \  },}6}.|,tv        tx        fvrt}        d/|,z        | j                  |.      }| j                  ||t         ||       n|*dk(  r t9        |&d         }7 |	||t        |7|       n|*dk(  r t9        |&d         }7 |	||t        |7|       nZ|*d0k(  r |	||t         d1|       nCt}        d2|*z         |
d3|&      d   } |	||d ||       n|t        k(  r/ |
d4|d d'       \  }}}}7}8t        t        f|8   }9 |	|||9|7|       n|t        k(  r|st               }: |
d5|d d       \  };}<|:_E        |:_0        }'d|;cxk  r|<cxk  rd6k  s!n tM        d7|;|<fz  | jN                         ~:pt        |:|'d8       t;        |;|<dz         D ]  }|d9kD  r n|:| j                  |<    |rDti        | jN                  d:| jj                  |;|<|:j                  |:j`                  |'       |:jm                  | jN                  d;       n|t        k(  r |
d|d d       \  | _I        n|t        k(  r<|dk7  r"tM        d<|t        |      | jN                          |
d|d d       \  | _L        n|t        k(  rh|ss|d=k(  sJ |dd d>k(  sJ t        d?|dd=       }=g }>|=D ]+  }?t;        d@      D ]  }@|>j=                  |?dz         |?dz  }? - t        |>      | _O        n|t        k(  r&|s |
d|d d	       \  }}} |	||t        d1|       n|t        k(  r_|s	|dz	  }C |
dA|Cz  |      }D|Dd d \  }}E|Dd   }F|C|Fdz   |Ez
  k(  sJ d}t;        EFdz         D ]  } |	||t        d1D|          |dz  } n|t        k(  s	|t        k(  r|dk(  r	|dBk  r |
dC|dd'       }Gn |
dD|ddE       }GdF\  | _X        | _Y        G\  | _Z        | _[        |dGv rF| j                  j                  r0| j                  j                  s| j                  j                          |rti        | jN                  dH| jj                  | j                  | j                  | j                         n|t        k(  r| j                  |       n~|t        k(  r| j                  |       nb|t        k(  rd}|rtM        dI| jN                         d}n<|t        k(  r%| j                  |      }H|HrHj                  }Ind }In|t        k(  r| j                  |||       n|t        k(  r | j                  |      }J|JrIrJ|I<   d }In|t        k(  r| j                  ||       n|t        k(  r| j                  |       n|t        v r~ |
d|dd       \  }K}L|Ld@k7  r.tM        dJ||j                  |z
  dz
  KLfz  | jN                         	 |j                         \  }M}}|Mt        k(  rn|rtM        dK| jN                         n|t        k(  r|j                  |       n|t        k(  r>d}t        | j                  |||d'L      }t        | j                  |||d'L      }||k(  sJ |t        k(  r4 |
d)|d d       \  }/}0}1}2}3}4|rtM        dM|/|0|1|2|3| jN                         nf|t        k(  rN |
d+|d d       \  }/}0}1}2}5}4|rGtM        dN|/|0|1|2|5| jN                         ts        ||dd  |4tz        d|-       n|t        k(  r|s|dBk\  sJ t        dO|ddE       \  }N}O}P}Q}R}S| j                   dk\  rAti        | jN                  dP| jj                  | j                  NOt        PQdz   RSdz                g }Tt        |T|dE|d'L      }| j                   dk\  rsti        | jN                  dQt?        T      dRj                  dS |TD                     n:|t        k(  r\|st        dT|dd       \  }U}V}W}X}'|'dUz	  dz  }Y|'dz	  dz  }Z|'dz	  dz  }[| j                   dk\  rti        | jN                  dVUVWX|'YZ[
       dE}Yrqt        dW|||dXz          \	  }\}]}^}_}`}a}b}c}d|bdkD  dz  }e|]dkD  dz  }f|bdkD  dz  }g|]dkD  dz  }h| j                   dk\  r!ti        | jN                  dY\^_`acdefgh       |dXz  }Zr|d'z  }[r|dz  }|||Wz    }i||Wz  }|r)Wr'ti        | jN                  dZ       t        |iW|dd[       |||Xz    }j||Xz  }||k(  sJ |r X
rti        | jN                  d\       t        |jX|dd[       
n|t        k(  r|dk(  rt        d|d d       \  }?| _}        nJ|dk(  r,t        d|      \  | _}        d}?ti        | jN                  d]       nd}?ti        | jN                  d^|       |?dz  | _~        |?dz	  dz  | _        |?dz	  dz  | _        |?d0z	  dz  | _        
n1|t        k(  rP|st        | j                  |d|d'L      }|rti        | jN                  d_|dz
  d'z         ||k(  	sJ d`||fz         |t        k(  r|dBk\  r5|dk\  r0t        da|d d       \  }k| _        | _        | _        | _        | _        nl|d!k\  sJ t        d|d d	       \  }k| _        | _        t        db|d	dc       | _        t        | j                  j                  | j                  dd      | _        t        D ]  \  }l}mt        | |lkdz         |kdz  }k 	n |t        k(  rkt        d|      \  }n}od}D|orndez  oz  }DdDcxk  rdfk  s<n |s| j                   dk\  r'tM        dg| jj                  nofz  | jN                         de}DD| _        n|t"        k(  r7t        dh|d dc       \  | _        | _        | _        | _        | _        d| _        nJ|t0        k(  r|s |
d|d d       \  }p|pdd|dBk\  z  z   z  dz   |k(  sJ d}|dBk  rB||k  r| j2                  j=                   |
d|||dz          d   dd9f       |dz  }||k  r:n||k  r| j2                  j=                   |
d|||d	z                 |d	z  }||k  r4n|t4        k(  r|si |
d|d d       \  }p|pdd|dBk\  z  z   z  dz   |k(  sJ d}|dBk  rB||k  rT| j6                  j=                   |
d|||dz          d   ddif       |dz  }||k  r:n||k  r| j6                  j=                   |
d|||d	z                 |d	z  }||k  r4n|djk  r|t8        k(  s
|t:        k(  r|j=                  ||       n|t>        k(  s
|t@        k(  r|jC                  |       n|tD        k(  rD| j                  j                  s| j                  j                          |jG                  |       n7|tH        k(  r|jK                  |       n|tL        k(  r|jO                  |       n|tP        k(  s|tR        k(  s
|tT        k(  r|jW                  |       n|tX        k(  r|j[                  |       n|t\        k(  r|j_                  |       n|t`        k(  r|jc                  |       no|td        k(  r|jg                  |       nQ|th        k(  r |
d|      d   | _        n4|tl        k(  r- |
dk|      \  }}}(} |	||d || jq                  |(||             n|tn        k(  r7 |
dl|      \  }}}(} |	||d tq        |      | jq                  |(||             n|tr        k(  r^ |
dm|dd       \  }}}(t-        |d|j.                  xs |j1                         d
      } |	||t         || jq                  |(||             nT|tt        k(  r= |
dn|      \  }}}(}7}8t        t        f|8   }9 |	|||9|7| jq                  |(||             n|tv        k(  r7|s |
dm|d d       \  }}}( |	||t        d1| jq                  |(||             n|tx        k(  r|j{                  |       n|t|        k(  rG|sO |
do|ddp       \  }}"}#d|cxk  r| jJ                  k  s*n tM        dq|| jJ                  fz  | jN                         |#dz  sd}nC|drk(  r% |
d|ddr       d   }q| jq                  d |d|qs      }n|dtd }(| jq                  |(|du      }|"|#|f}$|j%                  |$      }%|%7tQ               x||$<   }%|"dz  |%_)        |"dz	  dz  |%_*        |#dz  |%_/        ||%_0        |%| jf                  |<   	 |rtM        dv||"| jN                         |%jm                  | jN                  d| jj                  |fz         n\|t~        k(  r|s |
dw|d d       \  };}<}r|;|<k  stM        dx|;|<fz  | jN                         t;        |;|<dz         D ]@  }|| j                  v r| j                  |   }:nt               }:|:| j                  |<   r|:_E        B |rti        | jN                  dy| jj                  |;|<r       n|t        k(  r|s\ |
d|d d       \  };}<|r#ti        | jN                  dz| jj                  |;|<       d|;cxk  r|<cxk  rd6k  s+n tM        d{|;|<fz  | jN                         t        |<d6      }<t;        |;|<      D ]g  }dd0||;z
  z  z   }s||s|sd0z    }(| jq                  |(d||      }|| j                  v r| j                  |   }:nt               }:|:| j                  |<   ||:_0        i n|t        k(  rd}}tt        |t|dd       D ]   \  }l}ut        | |lt        |ud~k7               " t        d|dd       \  | _        | _        | _        t        db|ddt       | _        t        | j                  j                  | j                  dd      | _        n	 |s$t}        d| jj                  | j                  fz        | j                          | j                          ||_        y)Nr   r~      r   z<HHHd   z<HHHi<HHH   lenlenz<BBz<H<HH
   r   z<H4xH4xi   zT*** NOTE: ROW record has row index %d; should have 0 <= rowx < %d -- record ignored!r   i  r}                 r!   ROWz--- sh #%d, rowx=%d ---header2   z<HHH8sH   z<HH3s8sBzFORMULA: rowx=%d colx=%d
      )browxbcolxblahr1c1   s   z<HHBBBxxxxxHzARRAY: %d %d %d %d %d
z<HHBBxBHzSHRFMLA (sub): %d %d %d %d %d
)r   r   r   r   z@Expected SHRFMLA, ARRAY, TABLEOP* or STRING record; found 0x%04xz$Expected STRING record; found 0x%04xr   r   z+unexpected special case (0x%02x) in FORMULA<dz<HHHBBz<HHHHHr'   zr*** NOTE: COLINFO record has first col index %d, last %d; should have 0 <= first <= last <= 255 -- record ignored!))r   r   hidden)r   r~   	bit1_flag)r   i   outline_level)   i   	collapsed   z>COLINFO sheet #%d cols %d-%d: wid=%d xf_index=%d flags=0x%04x
z===z*** ERROR *** STANDARDWIDTH"   s     z<8i    z<%dHr%   z<HxxHz<ixxHr   r   r   )   r   (   z+sheet %d(%r) DIMENSIONS: ncols=%d nrows=%d
zSHEET.READ: EOFzM*** Unexpected embedded BOF (0x%04x) at offset %d: version=0x%04x type=0x%04xz---> found EOF)	addr_sizezARRAY:zSHRFMLA (main):z<6Hz
*** WARNING: Ignoring CONDFMT (conditional formatting) record
*** in Sheet %d (%r).
*** %d CF record(s); needs_recalc_or_redraw = %d
*** Bounding box is %s
z#*** %d individual range(s):
*** %s
z, c              3   ,   K   | ]  }t        |   y wr   )r   )r   coordss     rj   r   zSheet.read.<locals>.<genexpr>  s     !K6+v"6!Ks   z<BBHHi   z
*** WARNING: Ignoring CF (conditional formatting) sub-record.
*** cf_type=%d, cmp_op=%d, sz1=%d, sz2=%d, flags=0x%08x
*** optional data blocks: font=%d, border=%d, pattern=%d
z <64x i i H H B 3x i 4x i i i 18xv   z*** Font info: height=%d, weight=%d, escapement=%d,
*** underline=%d, colour_index=%d, esc=%d, underl=%d,
*** style=%d, posture=%d, canc=%d, cancellation=%d
z*** formula 1:
)reldeltar   z*** formula 2:
zR*** WARNING: DEFAULTROWHEIGHT record len is 2, should be 4; assuming BIFF2 format
zR*** WARNING: DEFAULTROWHEIGHT record len is %d, should be 4; ignoring this record
zMERGEDCELLS: %d ranges
zMERGEDCELLS: pos=%d data_len=%dz	<HHHHxxHH<BBB	   )debugr$     zHWARNING *** SCL rcd sheet %d: should have 0.1 <= num/den <= 4; got %d/%dz<HHHHB  -   z<HH3sdz<HH3sHz<HH3sz<HH3sBBz<H4xH2xB   zW*** NOTE: ROW_B2 record has row index %d; should have 0 <= rowx < %d -- record ignored!   )	cell_attrrq   rr   true_xfx   )rr   ROW_B2z<BBHzg*** NOTE: COLWIDTH record has first col index %d, last %d; should have first <= last -- record ignored!z&COLWIDTH sheet #%d cols %d-%d: wid=%d
z.COLUMNDEFAULT sheet #%d cols in range(%d, %d)
zd*** NOTE: COLUMNDEFAULT record has first col index %d, last %d; should have 0 <= first < last <= 256)rq   rr   )r   r   r   r   r       z<HHBz Sheet %d (%r) missing EOF record)r1   r*   
XL_SHRFMLAXL_ARRAY
XL_TABLEOPXL_TABLEOP2	XL_ARRAY2XL_TABLEOP_B2r5   r   get_record_partsr)   r2   _rich_text_runlist_map	XL_NUMBERXL_LABELSSTXL_CELL_TEXT_sharedstringsgetrM   XL_LABELBIFF_FIRST_UNICODEunpack_stringencodingderive_encodingunpack_unicode
XL_RSTRINGunpack_string_update_pos	BYTES_ORDr   r   r   unpack_unicode_update_posXL_RK	unpack_RKXL_MULRKXL_ROWrc   r   r+   Rowinfoheighthas_default_heightr   outline_group_starts_endsr   height_mismatchhas_default_xf_indexr   additional_space_aboveadditional_space_belowrI   r   r0   dumpXL_FORMULA_OPCODESfixed_BIFF2_xfindexr   r
   	XL_STRINGXL_STRING_B2r   	XLRDErrorstring_record_contentsXL_CELL_BOOLEANXL_CELL_ERROR
XL_BOOLERR
XL_COLINFOColinfowidthupkbitsrH   XL_DEFCOLWIDTHrA   XL_STANDARDWIDTHreprrB   XL_GCWtuplegcwjoinrstripreplaceXL_BLANKXL_CELL_BLANKXL_MULBLANKXL_DIMENSIONXL_DIMENSION2r8   r9   r<   r=   r(   xf_list_xf_epilogue_donexf_epiloguer/   XL_HLINKhandle_hlinkXL_QUICKTIPhandle_quicktipXL_EOFXL_OBJ
handle_objidXL_MSO_DRAWINGhandle_msodrawingetcXL_TXO
handle_txoXL_NOTEhandle_note	XL_FEAT11handle_feat11bofcodes
XL_COUNTRYhandle_countryXL_LABELRANGES)unpack_cell_range_address_list_update_posrK   rJ   
XL_CONDFMTr   XL_CFr   XL_DEFAULTROWHEIGHTrC   rD   rE   rF   rG   XL_MERGEDCELLSrL   
XL_WINDOW2rU   rV   rW   r^   r_   rX   r	   
colour_maprS   rT   XL_SCLr`   XL_PANEvert_split_poshorz_split_poshorz_split_first_visiblevert_split_first_visiblesplit_active_panehas_pane_recordXL_HORIZONTALPAGEBREAKSrN   XL_VERTICALPAGEBREAKSrO   	XL_FORMAT
XL_FORMAT2handle_formatXL_FONTXL_FONT_B3B4handle_fontXL_STYLEhandle_style
XL_PALETTEhandle_paletteXL_BUILTINFMTCOUNThandle_builtinfmtcountXL_XF4XL_XF3XL_XF2	handle_xfXL_DATEMODEhandle_datemodeXL_CODEPAGEhandle_codepageXL_FILEPASShandle_filepassXL_WRITEACCESShandle_writeaccessXL_IXFEra   XL_NUMBER_B2
XL_INTEGERfloatXL_LABEL_B2XL_BOOLERR_B2XL_BLANK_B2XL_EFONThandle_efont	XL_ROW_B2XL_COLWIDTHXL_COLUMNDEFAULTminXL_WINDOW2_B2zipintr   r   update_cooked_mag_factors)vrf   bkDEBUGr   	blah_rowsblah_formulasr   oldposXL_SHRFMLA_ETC_ETCself_put_celllocal_unpackbk_get_record_partsbvr   do_sst_rich_textrowinfo_sharing_dicttxos	eof_foundrcdata_lendatarq   rr   r   dsstindexrunliststrgposnrtr   	mulrk_rowmulrk_first
mulrk_lastbits1bits2keyr
result_strflagsr  fmlalen
first_byte	gotstringrc2	data2_lendata2row1xrownxcol1xcolnxarray_flagstokslennfmlas_unused_lenr   is_errcelltyc
first_colx	last_colxiguffrC  bitsjxshowgcwnitemsresult	mul_firstmul_last	dim_tuple	saved_objsaved_obj_idtxoversionboftypecodenum_CFsneeds_recalcbrowx1browx2bcolx1bcolx2olistcf_typecmp_opsz1sz2
font_block
bord_block
patt_blockfont_heightfont_optionsweight
escapement	underlinefont_colour_indextwo_bitsfont_escfont_underl
font_styleposture	font_canccancellationfmla1fmla2optionsrh   _unused_defvalnumden
num_breaksrs   r<  offset
attr_namescharsv                                                                                                                         rj   readz
Sheet.read  s'   +!+0T^^q0	~~
  11''#A(A(A!	!4!6B$ Y +7wSb	*J'dHa dD$8<{"1=gt1L.dHhdD,8I8I(8SU]^# 77;;HEGCJ22D$<@x'3FD1I'F$dH**(q"++2UASASAU^_`D)$!<DdD,hGz!'3FD1I'F$dH** 8a!D0B0B0DQ!ID# $DI.C1HC G#(: !veT#a5H'IJq! #d)+++ 9$! LID# tC#'':;A>C1HC G#(: !veT#a5H'IJq! #d)+++dD,hG;B**D$<8u'3FD!H'E$dHd1Rj)dD$8<x)5eT!AY)G&	; ,T49 =!+zA~> FD".tT#a5H"IKX!$sQwq"9:A1HC!)T4HE	F
 v  %1*d1Rj%I"eUT7D$7$77H!4!456 "\\	 en(,,S194;I=(-$  %v~AH,1RK1+<A(&+aiAO38A:2BA/ %
a/AH).!q(8A%.3qjA-=A*"'2+!6AJ05q/@A,05q/@A,11%'
)*  &%ue$,,GFF4<<0IT[[Z^L_0_F`)) 8>J9VZ[\]_V`>a;D$*e2X>J9VZ[\]_V`>a;D$*e?KJX\]^_aXb?c<D$	:u#77	4NH DLL*FdS*4b=a@G%RS	&""!	 a?k1!*:a=!9J!Q$%	464G4G4I1CE"i/3,3F,-	!$S_$2E#2JT" PueUK $1$+(,(A(-(-(-(-(3%& "%
!2NZ$.cr
O" KueUFG $1$+(,(I(-(-(-(-(.%& %6(*(-bc
(/(8-..2.2-1	%& "%,>!>&/$f&)%*'" !"  )686I6I6K3Ce"9l*CC&/0VY\0\&] ]#::5AdD,hO#q )*Q- 8%dD/5(S#q )*Q- 8%dD-Q#q%dD,HM'(UXb(bcc %T:6q9A!$dAx@z!6B8TRTSTX6V3dHeV *=9&AdD&%Bz!IDPd3BiEA
Iqw
E
 Z;9;; S%y12 "\\	  "*i!m< aDcz-.D$$T*	a Y"!

	 FF4<<F6~%&24bq&B#!''q=74:TXT`T`a(4T48(D%#v2~%~AayK///ud1Rj1! #D"2Y #

4!8,
## !: x'3FD!H'E$dHdD-XF{"!Q%fvot<"(!*i!":A	!9999!)X\: D!$mRM1HC |#r]':q= 7 ,Wd1Qi @I ,Wd1Rj AI)-&
DJ1:.%$))*;*;DIID_D_II))+F		 x!!$'{"$$T*v+$,,?	v OOD1	#,<<L#'L~%))"h=vood+<),D&#'Lw  t,y""4(x#/tAay#A d?gr||h6:GWMN!\\
 +-+>+>+@(D(Dv~  *>z!!!$'~%?)) @)) h&xCO"D"ID@ueUK !(E5%RVR^R^_z!>J:W[\_]_W`>a;ueUFG +UE5%VZVbVbc%RS	(""!	 z!RxxHNuVZ[\]_V`HaEvvvv>>Q&3 		$#FFQJ
K ?tRQS_`a>>Q&BE
		!KU!KK	 u39(D2J3O0c5#rkQ.
#rkQ.
#rkQ.
>>Q&U  """  A4cTWiCXY
#$"!)  #"*Q,!!3J+a/14G!)A 2I$01$4#9L~~* LLS ("&%-$'&#%(" 3JC1HC1HCS39-s
CDLL*<= UCaaHS39-s
h&CDLL*<= UCaaH**q=4:5$r(4K1D$1]17d1C.T,D? D> 	 48!80+/19/'7;qyAo37;qyAo3~%?%%tQa DLL*DsQwSTnUh[(ISRZO([[z!8B {D"I6//2A: 8O8
 vtBQx0	///5fd1Qi/HD,1E		,,d.F.Fa2D." -= "(D.D$!4MG" v!%.S!CiC/Ff++! 3f#{{C56!%
 !F&,#w 8T"1X.''11*'($.. ,T48 <!QbBh%781<HHH7.33::)$S370CDQGCP q	 . .33::(cC!G1DE q	 .
 ,, ,T48 <!QbBh%781<HHH7.1188)$S370CDQGER q	 . .1188fdSVY\_`Y`Na9bcq . r?bJ&6$$T2.7]bL&8NN4(8^9966		--/OOD):%%%d+----d36\R6\R6\LL&;&&&t,;&&&t,;&&&t,>)))$/7]!-dD!9!!<DJ<'/;Hd/K,D$	1!dD!T-E-EiQUW[-\ :%/;Hd/K,D$	1!dD%(D4L4LYX\^b4c ;&,8$q),L)D$	(q"++2UASASAU^_`D!$00D$G =(;G	SW;X8D$	5&-}=fEF!dFE43K3KIW[]a3b ;&# ,8$r(,K)D$	!%00D$G 8^OOD)9_# )5j$q*)M&D%;(;(;;L#T%8%89: "&	 !!AI#%!R*4b=a@#'#;#;&*B $< $ %)BK	#'#;#;ItRT#;#U %2C,005Ay8?	A,S1A#(6>05q/@,16.%-
 ./D$$T* he$,,Gt||4MQUQ\Q\^bPc4cd;&# 3?Ra3Q0J	5&)3K)956 "&	 ! %j)a- @ (4#3#33 $ 0 0 6A '	A56D,,T2"'(  LLE KK&%! ++# ,8Ra,I)J	 LLM KK&% >i>3>CFPR[E\]!%
 %(	3$7	 %j) < 	.!"Q$*;%<!<$(&1*$=	#'#;#;IBUY#;#Z4#3#33 $ 0 0 6A '	A56D,,T2%-
	. =("J '**d1Qi&@ @
ddC,>?@ vtAbz2	//7/5fd2bk/JD,1E		,,d.F.Fa2D.
 g h >$++tyyAYYZZ&&(rl   c                    | j                   }| j                  }|dk\  dz   }t        dd|dz
     z   |d |       d   }|}|dk  r|j                  xs |j	                         }d}d}		 |dk\  rt        ||         dz  }
d|
   }|dz  }t        ||d        }|	|z  }	|t        |      z  }||k(  r|	S ||kD  rd	||fz  }t        |      |j                         \  }}}|t        k7  rt        d
|z        d})Nr   r   <BHr   r%   r   )latin_1	utf_16_lez,STRING/CONTINUE: expected %d chars, found %dz2Expected CONTINUE record; found record-type 0x%04X)r)   r(   r   r  r  r"  strr   r5  r  XL_CONTINUE)rf   r  r  r  r   nchars_expectedr  encnchars_foundr  flagchunkmsgr  r  s                  rj   r6  zSheet.string_record_contentsy  s>   YY(a tFQJ'7!7gvGJ7++5!3!3!5CRx f.2.t4!VWs+EeOFCJ&L.o-D# H   n$$&$7$7$9!BT[  TWY YZZF' rl   c                 d   t         xs | j                  dkD  }| j                  r| j                  d| _        n| j                  | _        | j
                  }d|cxk  rdk  s@n |r0t        d| j                  | j
                  fz  | j                         | j                  }|| _	        y | j                  d| _	        n| j                  | _	        | j                  }|sd}nLd|cxk  rdk  sAn |r1t        d| j                  d	| j                  | j                         | j                  }|| _        y )
Nr   r$   r   r  zGWARNING *** WINDOW2 rcd sheet %d: Bad cached_normal_view_mag_factor: %dr   r#   zWARNING *** WINDOW2 rcd sheet z,: Bad cached_page_break_preview_mag_factor: )r  r1   r   r`   r\   r_   r   r0   r+   r]   r^   )rf   r   zooms      rj   r  zSheet.update_cooked_mag_factors  s    ****""*<?9<@<O<O955D$%#%a;;(J(JKL!\\
 @@15D. ""*582595H5H2<<DD'C';;(Q(QS!\\
 998<D5rl   c                 j   d}|xs | j                   dk\  }| j                  dk(  rn| j                  j                  r@||}nt	        |d         dz  }|dk(  r#| j
                  t        d      | j
                  }|S dx| _        | j                  _        t	        |d         dz  }|dk(  sJ | j                  j                  |      }||S |rt        | j                  d|||       | j                  j                  s&t        d      D ]  }| j                  d	|d
k          | j                  |      }|S )Nr   r~   r   ?   z?BIFF2 cell record has XF index 63 but no preceding IXFE record.r   zNew cell_attr %r at (%r, %r)
r   s   @  r}   )r  style)r  )r1   r)   r(   rL  r"  ra   r5  rb   r  r   r+   r   insert_new_BIFF20_xf)	rf   r  rq   rr   r	  r  r   rs   xfx_slots	            rj   r2  zSheet.fixed_BIFF2_xfindex  sD   +!+"yy  '"C#IaL1D8C$;zz)']  **C
 
9;;D		 6Yq\*T11}}$$((3?JDLL"BItUYZyy  Ry U))O3QS8)TU'')'<
rl   c           
         d}|xs | j                   dk\  }| j                  }t        |j                        }| j	                  ||      }||_        |j                  j                  |       |r!|j                  | j                  d|z  d       |j                  |j                  vr|j                  r9d}t        | j                  ||j
                  |j                  |j                         t        |j                  t        d      }	|	|j                  |j                  <   |j                  j                  |	       t        t         t        t         t"        t         t$        t&        t(        t         i}
|j                  |j                     }	|
|	j*                     }|| j,                  |j
                  <   || j.                  |<   |S )Nr   r~   z=== Faked XF %d ===z======r   footerz1ERROR *** XF[%d] unknown format key (%d, 0x%04x)
General)r1   r(   r   rL  fake_XF_from_BIFF20_cell_attrr   r   r0  r+   
format_key
format_mapr   r   FUNformat_listFNUXL_CELL_NUMBERFGEFDTXL_CELL_DATEFTXtyper7   rb   )rf   r  r  r  r   r(   rs   xfr  fmtcellty_from_fmttyr  s               rj   r  zSheet.insert_new_BIFF20_xf  s[   +!+yy$,,//	5ABGGDLL)>)DXGV==/}}Jc2;;r}}UY7C-0DOOBMM*##C(
 oobmm,"388,5;%%bkk2,/y)
rl   c                    ddl m}m}m}m}m}  |       } |       |_        d|j                  _        d|j                  _        d|j                  _	         |       |_
        d|j                  _        d|j                  _        d|j                  _        d|j                  _         |       |_         |       |_        t#        d|      \  }	}
}|
dz  |_        |
dz  dz	  |_        t)        |j                   |	d       |d	z  |j                  _        d
D ]I  \  }}||z  rd\  }}nd\  }}t-        |j                  |dz   |       t-        |j                  |dz   |       K |j                  }|dz  rd|_        nd|_        d|_        d|_        d|   |_        d|j                  _        d|j                  _        g d}|D ]  }d|z   dz   }t-        ||d        |S )Nr   )XFXFAlignmentXFBackgroundXFBorderXFProtectionr   r   r     r   ))r   r"   cell_locked)r      formula_hiddenr   ))r   left)r   right)r   top)r"   bottom)r   r   r   _colour_index_line_styler5     r  r   )r   r   r~   )formatfont	alignmentborder
background
protection__flag)
formattingr.  r/  r0  r1  r2  r@  indent_levelshrink_to_fittext_directionrA  diag_up	diag_downdiag_colour_indexdiag_line_stylerB  rC  r   r  
font_indexr=  	hor_alignrT   fill_patternbackground_colour_indexpattern_colour_indexparent_style_index
vert_alignrotation)rf   r  r  r.  r/  r0  r1  r2  r*  	prot_bitsfont_and_format
halign_etcmasksidecolour_index
line_stylebg
attr_stems	attr_stemrh   s                       rj   r  z#Sheet.fake_XF_from_BIFF20_cell_attr  s   UUT"}$%!%&"&'#J					&'		#$%		!$$39&)3L0OZ'$.(4/A5MM	
 ",d!2\ 	AJD$D +/(j+/(jBIIto5|DBIItm3Z@	A ]] BOBO%&""# +E 2"# !

 $ 	!I?W,DBa 	! 	rl   c                 2    | j                   st        d      y )Nz9Feature requires open_workbook(..., formatting_info=True))r2   r5  r   s    rj   r   zSheet.req_fmt_info@  s    ##WXX $rl   c                 .   | j                          | j                  dk\  rB| j                  j                  |d      }||j                  S | j
                  | j
                  S | j                  dk\  rQ| j                  |   r| j
                  o| j
                  S | j                  j                  |d      }|E|j                  S | j                  dk(  r*| j                  j                  |d      }||j                  S | j                  | j                  dz  S y)a  
        Determine column display width.

        :param colx:
          Index of the queried column, range 0 to 255.
          Note that it is possible to find out the width that will be used to
          display columns with no cell information e.g. column IV (colx=255).

        :return:
          The column width that will be used for displaying
          the given column by Excel, in units of 1/256th of the width of a
          standard character (the digit zero in the first font).

        .. versionadded:: 0.6.1
        r%   Nr   r   r'   i   )r   r)   rH   r  r<  rB   rC  rA   )rf   rr   colinfos      rj   computed_column_widthzSheet.computed_column_widthD  s     	"&&**46G"}}$!!-)))"$xx~%%1---**..tT:&"==("$&&**46G"}}$'##c))rl   c                    t         rt        d| j                         t        |      }t	               }t        d|d d       \  |_        |_        |_        |_	        }}}|dk(  sJ |dk(  sJ t         rt        d|z  | j                         d}d }|d	z  r |||      \  |_
        }|d
z  r |||      \  |_        }|dz  rN|dz  sHt        d|||dz          \  }	t         rt        | j                  d|	       |dz  }|	dk(  rd|_        t        d|||dz          d   }
|dz  }t        ||||
z    d      |_        t         r5t        | j                  d|j                  t        |j                               |j                  j!                  d      }t         rt        d|z  | j                         |j                  d | |_        d|dz   z  }||z  }|
|z
  }||||z    }||z  }t         r%t        | j                  d|j                  ||
||       |dv s3J |	dk(  rd|_        t        d|||dz          \  }}
|dz  }d |z  ||||
z   dz
   z   }t         rt        | j                  d!||       ||
z  }|d"z  }t        d#|||dz          d   }t         rt        d$|z  | j                         |dz  }|r>t        d#|||dz          d   }|dz  }|dz  }t        ||||z    d      }||z  }||_        nX||_        nPt        | j                  d%|	       n8|d&z  d'k(  rd(|_         |||      \  |_        }n|d)z  d*k(  rd+|_        nd,|_        |d*z  r |||      \  |_        }t         r"|j%                  d-.       t        d/||fz         ||z
  }|dkD  rBt        | j                  d0|j                  dz   |j                  dz   |t'        || d               n|dk  rt)        d1      | j*                  j-                  |       t/        |j                  |j                  dz         D ];  }t/        |j                  |j                  dz         D ]  }|| j0                  ||f<    = y )2Nz
=== hyperlink ===r   z<HHHH16s4sir   s   y  Ks      zoptions: %08Xc                 x    t        d| ||dz          d   dz  }|dz  }t        | |||z    d      d d }||z  }||fS )N<Lr   r   r~   UTF-16ler!   )r   r  )bufofsnbucs       rj   get_nul_terminated_unicodez6Sheet.handle_hlink.<locals>.get_nul_terminated_unicodey  s\    c#a01!4q8B1HCSsRx(*5cr:B2ICs7Nrl   r   r5  r   r'   z<16sr   z	clsid=%r
s   y  Kurlrf  r   r   rg  zinitial url=%r len=%d
 z	endpos=%dr~   z9url=%r
extra=%r
nbytes=%d true_nbytes=%d extra_nbytes=%d
)   r   s               Fz
local filez<Hir   s   ..\zuplevels=%d shortpath=%r
ro  <izsz=%dz*** unknown clsid %r
ic  i  uncik  r   workbookunknownz... object dump ...r   zoffset=%d record_size=%dz=*** WARNING: hyperlink at R%dC%d has %d extra data bytes: %s
z:Bug or corrupt file, send copy of input file for debugging)r  r   r+   r   	Hyperlinkr   frowxlrowxfcolxlcolxdesctargetr   r)  r  url_or_pathfindtextmarkr0  REPRr5  rY   r   r   rZ   )rf   r  record_sizer    guid0dummyr  r  rl  clsidnbytesendpostrue_nbytesextra_nbytes
extra_datauplevels	shortpathszxlextended_pathrq   rr   s                         rj   rP  zSheet.handle_hlinkl  s   'dll;$iKDJ=Z^_b`bZcDdA!'17E5'[[[[++++/G+$,,?	 T>7fENAFFT>9$GAHfaK'E/fd6FRK&@AHUlE:bLF[[ d6FQJ&?@C! #D&6/$BJ O&?PSTUTaTaPb ++F3+.T\\B !gv 66A:.+%%3!&6L+@A
,&V"#$ $w...]]%#)%fvz1J#K &!h&fv7J)KK  DLL*FR[\& "D$v
";<Q?'B,T\\:!d6FQJ&?@CBaKFaKF$'Vfrk2J%M bLF$1AM$-AM &>Fu_%AF$>tV$L!AM6u_!AFAFS=!;D&!IAJFF/F0,/DDE"V+!P!!T<-.)* AXYY""1%!''177Q;/ 	3Daggqww{3 312""4:.3	3rl   c                 (   t        d|d d       \  }}}}}|t        k(  sJ | j                  sJ | j                  d   }||||f|j                  |j                  |j
                  |j                  fk(  sJ |dd  dk(  sJ t        |dd d      |_        y )N<5Hr   r!   r   s     r
  )	r   rQ  rY   ru  rv  rw  rx  r  quicktip)rf   r  rcxru  rv  rw  rx  r    s           rj   rR  zSheet.handle_quicktip  s    *0Sb	*B'UE5%k!!!""""#ueU+!''177/SSSSBCyK'''bk2
rl   c           	      H   t         sy d}| j                  dk  ry t               }d}||k  rt        d|||dz          \  }}}	|dz  }
|dz	  dz  }|
dk(  rd}n|	}|r8t	        |||dz   d| j
                  	       t        | j
                  d
|||
|	|	       |dk(  r?|dk(  sJ t        d||dz   |dz   |z          \  |_        |_        |_	        |_
        |_        n|dk(  r|	dk(  sJ |dz   |k(  sJ 	 ||dz   z  }||k  r||k(  sJ |r|j                  | j
                  dd       y y )Nr   r%   r   z<HHIr   r}   r   r   basefoutz.fbt:0x%04X  inst:%d  ver:0x%X  cb:%d (0x%04X)
i  r  z<Hiiiii  z=== MSODrawing === r  )OBJ_MSO_DEBUGr)   
MSODrawingr   hex_char_dumpr+   r   
anchor_unkanchor_colx_loanchor_rowx_loanchor_colx_hianchor_rowx_hir0  )rf   recidr  r  r  or  tmpfbtcbverinstndbs                rj   rX  zSheet.handle_msodrawingetc  st   r!LHn!&$sS1W*=>LCb)C1H%DczdCqqt||LLLE f}by y 8T#'C!GcM%BCL$$$$QwwQw(***37NCE HnJ (?"?FF4<<(<SFI rl   c                    | j                   dk  ry t               }t        |      }d}t        rt	        | j
                  d|       ||k  rt        d|||dz          \  }}t        r6t	        | j
                  d|||       t        |||dz   d| j
                         |dk(  r-|dk(  r|d	k(  s#| j                  rt	        | j
                  d
       y |dk(  r8|dk(  sJ t        d||dz   |dz          \  |_	        |_
        }t        ||d       n|dk(  rR||| d||z
  z  k(  rnd}t	        | j
                  d|z         t        ||||z
  d| j
                         t        |      |dk(  r:t        d||dz   |d	z          }	t        |	d      D ]  \  }
}t        |d|z   |
        n5|dk(  rt        r*t	        | j
                  d       n|dk(  r|j                  rn	 ||dz   z  }||k  r	 t        r|j!                  | j
                  dd       |S )Nr%   r   z... OBJ record len=%d...
r   r   zpos=%d ft=0x%04X cb=%d
r  r   r  z6*** WARNING Ignoring antique or corrupt OBJECT record
r   r   ))r   r   locked)r   r   	printable)r   r'   
autofilter)r     scrollbar_flag)r
  i    autofill)r   r&   autoliner  z'Unexpected data at end of OBJECT recordz*** ERROR %s
r   r  r   )r   r  maxincpage
scrollbar_r
  z.*** OBJ record has ft==0x0D 'notes' structure
   z=== MSOBj ===r  r  )r)   MSObjr   r  r   r+   r   r  r1   r)  rV  r=  r5  r  rT   r  r0  )rf   r  r  r  r  ftr  option_flagsr  valuesr   tags               rj   rU  zSheet.handle_obj'  s   r!Gt9DLL">IHnE4cAg#67FB&@#r2NdCaadllKaxtb>>DLL*cdTzaxx-3FDq3QS8<T-U*l  tH%(S.)AA?&6&<=dCCadllSn$ttC!GcBh'?@"%f.T"U :JE3A|c159:t DLL*[\t<<26MC[ Hn` FF4<<FDrl   c                 ^   t         r9t        | j                  d       t        |dt	        |      d| j                         t               }t	        |      }| j                  dk  rWt        d|d d       \  |_        |_	        }t	        |      dz
  }||k  sJ |dd  g}||z  }|dkD  rk| j                  j                         \  }}	}
|t        k(  sJ t        d|
d d       \  }}|dk(  sJ ||	dz
  k(  sJ |j                  |
dd         ||z  }|dkD  rk|dk(  sJ | j                  j                  xs | j                  j                         }t!        d	j#                  |      |      |_        d
g|_        d|_        d|_        d|_        d|_        d |_        || j2                  |j                  |j                  f<   y t        d|d d       \  |_        |_	        }|_        |dz	  dz  |_        |dz	  dz  |_        |dz	  dz  |_        t5        |dd      \  |_        }||z
  dv sJ t         r|j7                  | j                  dd       |j9                  |j0                        }|rH|j$                  |_        |j&                  |_        || j2                  |j                  |j                  f<   y y )Nz... NOTE record ...
r   r  r%   r   r   z<H2xHr  rl   r   r   z<4Hr   r   r   r~   r   )r   r   z=== Note ===r  r  )r  r   r+   r  r   Noter)   r   rq   rr   r(   r  r[  r   r  r  r  rD  textrich_text_runlistshow
row_hidden
col_hiddenauthor
_object_idr[   r#  r0  r  )rf   r  r  r  r  expected_bytesrj  piecesr  r  r  
dummy_rowxr  r  r  r  s                   rj   r\  zSheet.handle_noted  s   DLL"9:$3t914<<HFt9r!-3FD!H-E*AFAFNTQB'''12hZFb N 1$(,		(B(B(D%Yg~%~!'r!;
B!V+++Y]***eABi("$ !1$ "Q&&&))$$C		(A(A(CC&)3/AF#)(AAFALALAHAL12Dqvvqvv~.5;E485L2al!#q($)Q.$)Q. 5T1QG& 6!f,,,FF4<<sFChhq||$XXAF"%"7"7A12Dqvvqvv~. rl   c                 h   | j                   dk  ry t               }d}t        |      }t        ||d |       \  }|_        }}}|_        ||d  |_        t        ||d       d}	d|_        |	|k  r| j                  j                         \  }
}}|
t        k(  sJ t        rt        |d|d| j                         t        |d         }|dz
  }|r|dz  dk(  sJ |dz  }t!        |d|	      \  }}||k(  sJ |xj                  |z  c_        |	|z  }	|	|k  rg |_        d}||k  r}| j                  j                         \  }}}|t        k(  sJ |d
z  dk(  sJ t%        d|d
      D ]4  }t        d|||d
z          }|j"                  j'                  |       |d
z  }6 ||k  r}|j"                  rD|j"                  d   d   |k(  r/|j"                  d= |j"                  r|j"                  d   d   |k(  r/t        r?|j)                  | j                  dd       t+        |j"                  | j                         |S )Nr%   z<HH6sHHH))r   r   
horz_align)r   p   rT  )r  r  	lock_text)r   r&   	just_last)r}   i   secret_editr   r   r  r   r~   )	known_lenr   z<HH4xr!   z=== MSTxo ===r  r  r   )r)   MSTxor   r   rot	ifntEmptyfmlar=  r  r(   r  r  r  r  r+   r"  r#  r  r   r   r0  r   )rf   r  r  r+  fmtsizer  controlInfocchTextcbRunstotcharsr  r  r  rj  ncharsutextr  totrunsrc3	data3_lendata3r  runs                          rj   rZ  zSheet.handle_txo  sb   r!G3-IOPSUYZb[bUcIdFae['61;gh
	
  $(II$>$>$@!CE+%%%eQ	M58$B]FzQ&15eQ&QME6Y&&&FFeOFH   !$(II$>$>$@!CE+%%%q=A%%%Q	1- WeC#'&:;##**3/1  !!a&9&9"&=a&@G&K##B' !!a&9&9"&=a&@G&KFF4<<FD!%%DLL9rl   c                 ^   t         sy t        d|dd       \
  }}}}}}}}	}
}|dk(  sJ |
dk(  sJ |dk(  sJ |dk(  sJ |dk(  sJ ||k(  sJ t        | j                  d||||	       t        d|dd       \  }}}}}}}}}}}}}}}t        d	|||||||||||||||fz  | j                  
       y )Nz<HH8sHBiHiH8sr   #   r   ir  z3FEAT11: grbitFrt=%d  Ref0=%r cref=%d cbFeatData=%d
z<iiiiiiHHiiiii16sHe   zlt=%d  idList=%d crwHeader=%d  crwTotals=%d  idFieldNext=%d cbFSData=%d
rupBuild=%d  unusedShort=%d listFlags=%04X  lPosStmCache=%d  cbStmCache=%d
cchStmCache=%d  lem=%d  rgbHashParam=%r  cchName=%dr   )r  r   r   r+   )rf   r  rtgrbitFrtRef0isffHdr	reserved0cref
cbFeatData	reserved1Ref1ltidList	crwHeader	crwTotalsidFieldNextcbFSDatarupBuildunusedShort	listFlagslPosStmCache
cbStmCachecchStmCachelemrgbHashParamcchNames                              rj   r^  zSheet.handle_feat11  s5    W]T!BZW
SHdCy$
It A~~A~~axxU{{qyyt||LLB	
R 'b7);<!	
B ( +	
rl   c                 >    d| j                   dd| j                   dS )NzSheet z>2z:<>)r0   r/   r   s    rj   __repr__zSheet.__repr__%	  s"    B'r$))A66rl   )r   Nr   )r   )F__name__
__module____qualname____doc__r/   r(   r8   r9   rH   rI   rJ   rK   rL   rM   rA   rB   rC   rD   rE   rF   rG   rR   rC  rY   rZ   r[   rl  rm  rn  ro  rp  rq  rN   rO   rk   rt   rx   r{   rn   r   r   r   r   __iter__r   r   r   r   r   r   colr   r4   r6   r  r6  r  r2  r  r  r   rc  rP  rR  rX  rU  r\  rZ  r^  r   rl   rj   r   r   -   s   & D D E E K K"  6 L0   K M
 
 #'
 
 &*"
 &*" J C N M M N N  !  !  O   M#h
-,@,W+@
 H;<OOWV C
AJF8tFTsj>+=Z"H<7rY&P3B3/Jb;z13f4lV
p7rl   r   c                       e Zd Zy)r  Nr  r  r  r   rl   rj   r  r  )	      rl   r  c                       e Zd Zy)r  Nr  r   rl   rj   r  r  -	  r  rl   r  c                       e Zd Zy)r  Nr  r   rl   rj   r  r  1	  r  rl   r  c                   0    e Zd ZdZdZdZdZdZdZdZ	dZ
dZy)r  z
    Represents a user "comment" or "note".
    Note objects are accessible through :attr:`Sheet.cell_note_map`.

    .. versionadded:: 0.7.2
    r   r   N)r  r  r  r  r  r  rr   r  r  rq   r  r  r   rl   rj   r  r  5	  s@     F J D
  J D D Drl   r  c                   8    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Zy)rt  z
    Contains the attributes of a hyperlink.
    Hyperlink objects are accessible through :attr:`Sheet.hyperlink_list`
    and :attr:`Sheet.hyperlink_map`.

    .. versionadded:: 0.7.2
    N)r  r  r  r  ru  rv  rw  rx  r)  r{  ry  rz  r}  r  r   rl   rj   rt  rt  X	  sM     E E E E D K D F
 H Hrl   rt  c           
          t        | d         }|dz  r(t        d|       \  }|dz  }|dz  r|dz  S t        |      S t        ddt        t	        |dz              z   | dd	 z         \  }|dz  r|dz  S |S )
Nr   r~   rp  r   g      Y@r   s          r   )r"  r   r  BYTES_LITERALchr)rk_strr  ir  s       rj   r%  r%  	  s    fQi EqydF#	a19u9Qx dK-ECK8H*IIFSTUVKWX19u9rl   emptyr  r0   xldateboolerrorblankc                   &    e Zd ZdZg dZddZd Zy)ro   a  
    Contains the data for one cell.

    .. warning::
      You don't call this class yourself. You access :class:`Cell` objects
      via methods of the :class:`Sheet` object(s) that you found in the
      :class:`~excelrd.book.Book` object that was returned when you called
      :func:`~excelrd.open_workbook`

    Cell objects have three attributes: ``ctype`` is an int, ``value``
    (which depends on ``ctype``) and ``xf_index``.
    If ``formatting_info`` is not enabled when the workbook is opened,
    ``xf_index`` will be ``None``.

    The following table describes the types of cells and how their values
    are represented in Python.

    .. raw:: html

        <table border="1" cellpadding="7">
        <tr>
        <th>Type symbol</th>
        <th>Type number</th>
        <th>Python value</th>
        </tr>
        <tr>
        <td>XL_CELL_EMPTY</td>
        <td align="center">0</td>
        <td>empty string ''</td>
        </tr>
        <tr>
        <td>XL_CELL_TEXT</td>
        <td align="center">1</td>
        <td>a Unicode string</td>
        </tr>
        <tr>
        <td>XL_CELL_NUMBER</td>
        <td align="center">2</td>
        <td>float</td>
        </tr>
        <tr>
        <td>XL_CELL_DATE</td>
        <td align="center">3</td>
        <td>float</td>
        </tr>
        <tr>
        <td>XL_CELL_BOOLEAN</td>
        <td align="center">4</td>
        <td>int; 1 means TRUE, 0 means FALSE</td>
        </tr>
        <tr>
        <td>XL_CELL_ERROR</td>
        <td align="center">5</td>
        <td>int representing internal Excel codes; for a text representation,
        refer to the supplied dictionary error_text_from_code</td>
        </tr>
        <tr>
        <td>XL_CELL_BLANK</td>
        <td align="center">6</td>
        <td>empty string ''. Note: this type will appear only when
        open_workbook(..., formatting_info=True) is used.</td>
        </tr>
        </table>
    r   r   r   Nc                 .    || _         || _        || _        y r   r  )rf   r   r   r   s       rj   rk   zCell.__init__	  s    

 rl   c                     | j                   "t        | j                      d| j                  S t        | j                      d| j                  d| j                   dS )N:z (XF:))r   
ctype_textr   r   r   s    rj   r  zCell.__repr__
  sX    ==  ,-Qtzzn== ,-QtzznE$--ARRSTTrl   r   )r  r  r  r  	__slots__rk   r  r   rl   rj   ro   ro   	  s    ?B /I!
Url   ro   r   c                   (    e Zd ZdZdZdZdZdZdZdZ	y)r;  aU  
    Width and default formatting information that applies to one or
    more columns in a sheet. Derived from ``COLINFO`` records.

    Here is the default hierarchy for width, according to the OOo docs:

      In BIFF3, if a ``COLINFO`` record is missing for a column,
      the width specified in the record ``DEFCOLWIDTH`` is used instead.

      In BIFF4-BIFF7, the width set in this ``COLINFO`` record is only used,
      if the corresponding bit for this column is cleared in the ``GCW``
      record, otherwise the column width set in the ``DEFCOLWIDTH`` record
      is used (the ``STANDARDWIDTH`` record is always ignored in this case [#f1]_).

      In BIFF8, if a ``COLINFO`` record is missing for a column,
      the width specified in the record ``STANDARDWIDTH`` is used.
      If this ``STANDARDWIDTH`` record is also missing,
      the column width of the record ``DEFCOLWIDTH`` is used instead.

    .. [#f1] The docs on the ``GCW`` record say this:

      If a bit is set, the corresponding column uses the width set in the
      ``STANDARDWIDTH`` record. If a bit is cleared, the corresponding column
      uses the width set in the ``COLINFO`` record for this column.

      If a bit is set, and the worksheet does not contain the ``STANDARDWIDTH``
      record, or if the bit is cleared, and the worksheet does not contain the
      ``COLINFO`` record, the ``DEFCOLWIDTH`` record of the worksheet will be
      used instead.

    excelrd goes with the GCW version of the story.
    Reference to the source may be useful: see
    :meth:`Sheet.computed_column_width`.

    .. versionadded:: 0.6.1
    r   r!   N)
r  r  r  r  r<  r   r   r   r   r   r   rl   rj   r;  r;  
  s2    #N E H F I M Irl   r;  c                   *    e Zd ZdZerdZd Zd Zd Zy)r(  z
    Height and default formatting information that applies to a row in a sheet.
    Derived from ``ROW`` records.

    .. versionadded:: 0.6.1
    
r)  r*  r   r+  r   r,  r-  r   r.  r/  c                     d | _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        y r   r  r   s    rj   rk   zRowinfo.__init__b
  sa     #' "
 *.&   $ %)!  '+# '+#rl   c           
          | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  f
S r   r  r   s    rj   __getstate__zRowinfo.__getstate__
  s`    KK##**KK  %%MM''''
 	
rl   c                     |\
  | _         | _        | _        | _        | _        | _        | _        | _        | _        | _	        y r   r  )rf   states     rj   __setstate__zRowinfo.__setstate__
  sE     	
K#*K %M''rl   N)	r  r  r  r  
_USE_SLOTSr  rk   r   r#  r   rl   rj   r(  r(  L
  s#     
	&+P
rl   r(  N)-r   structr   r   biffhrF  r   r	   formular
   r   r   r   r   timemachiner  r  rS   
BaseObjectr   r  r  r  r  rt  r%  r#  r$  r!  r%  r&  r'  r(  r,  r,   r  r7  r8  rH  r  ro   
empty_cellr;  r$  r(  r   rl   rj   <module>r+     s    #  4 c c  	
 6y#7J y#7xG	 		J 		J 	 :  F4
 4t(   7&H(V77
MU: MU` -$

9j 9x 
Xj Xrl   