o
    e&                     @   s&   d dl Z ddlmZ G dd dZdS )    N   )xrangec                   @   sL   e Zd ZdZdZdZdZdZdZdd Z	d	d
 Z
dd Zdd Zdd ZdS )XlsDoci      c                 C   s:   g | _ d| _g | _d| _g | _d| _d| _g | _d| _d S )N )	book_stream_sect
dir_streamdir_stream_sect
packed_SATSAT_sectpacked_MSAT_1stpacked_MSAT_2ndMSAT_sect_2ndheader)self r   C/var/www/html/venv/lib/python3.10/site-packages/xlwt/CompoundDoc.py__init__   s   
zXlsDoc.__init__c                 C   sr  d| _ dd}t|}dd|  }d}d}d}d}d}d	}	d
}
|  j td|| ||||||d
d
d
d
d
d
d
d
d
|	|
d
7  _ dd}t|}dd|  }d}d}d}d}d}d
}	| j}
|  j td|| ||||||d
d
d
d
d
d
d
d
d
|	|
d
7  _ d}t|}dd|  }d
}d}d}d}d}d	}	d
}
|  j td|| ||||||d
d
d
d
d
d
d
d
d
|	|
d
d 7  _ d S )N    zRoot Entry z	utf-16-le    @      r   r   r   r   z<64s H 2B 3l 9L l L Lz	Workbook    )r   encodelenstructpackbook_stream_len)r   dentry_namedentry_name_szdentry_name_paddentry_typedentry_colourdentry_did_leftdentry_did_rightdentry_did_rootdentry_start_siddentry_stream_szr   r   r   _build_directory,   s   

zXlsDoc._build_directoryc                 C   s  | j d? }t| jd? }|| }d}d}d}|d| ks ||krB|d7 }|d7 }||kr8|d7 }|d7 }|d7 }|d| ks ||ks | jgd | }d}||d k rh| j| |d ||< |d7 }||d k sR| j| | j||< |d7 }||| k r| j| | j||< |d7 }||| k s}||| | k r| j	| | j
||< |d7 }||| | k s||| | | d k r| j| |d ||< |d7 }||| | | d k s| j| | j||< |d7 }tjd|d  g|R  | _| jgd }	ttdd| j	D ]	\}
}||	|
< qtjdg|	R  | _| jgd | }|dkr+| j|d	< d}
d}d}|
|k rg|d d dkrS|d7 }|t| jk rR| j| ||< n| j	|
 ||< |
d7 }
|d7 }|
|k s6tjd|d  g|R  | _d S )
N	   r   m      r      z<%dlz<109lr   )r!   r   r   SID_FREE_SECTORr   appendSID_END_OF_CHAINr   SID_USED_BY_MSATr   SID_USED_BY_SATr   r   r    r   zipranger   r   )r   book_sect_countdir_sect_counttotal_sect_countSAT_sect_countMSAT_sect_countSAT_sect_count_limitSATsectMSAT_1stiSAT_sect_numMSAT_2nd	msat_sectsid_numr   r   r   
_build_sat{   s   
	







 zXlsDoc._build_satc                 C   s   d}d}d}d}d}t dd}t dd}d	}t d
t| j}	t d| jd }
d}t d
d}t dd}t d
d}t| jdkrLt dd}n	t d| jd }t d
t| j}d|||||||||	|
||||||g| _d S )Ns   ࡱs                   s   > s    s   z<Hr-      s
             z<Lz<lr   s       r   r   r   )r   r    r   r   r   r   joinr   )r   	doc_magicfile_uidrev_numver_num
byte_orderlog_sect_sizelog_short_sect_size	not_used0total_sat_sectorsdir_start_sid	not_used1min_stream_sizessat_start_sidtotal_ssat_sectorsmsat_start_sidtotal_msat_sectorsr   r   r   _build_header   sF   zXlsDoc._build_headerc           	   
   C   s"  ddt |d   }t |t | | _|   |   |   |}t|d }|r.t|d}|| j || j	 z|| W n. t
yo } z"|jdkrO d}tdt ||D ]}|t||| qYW Y d }~nd }~ww || || j || j || j |r|  d S d S )Nr   r   writezw+b   i  @ r   )r   r!   r,   rF   rY   hasattropenrZ   r   r   IOErrorerrnor   bufferr   r   r   close)	r   file_name_or_filelike_objstreampaddingf	we_own_ite
chunk_sizeoffsetr   r   r   save   s:   


zXlsDoc.saveN)__name__
__module____qualname__SECTOR_SIZE	MIN_LIMITr1   r3   r5   r4   r   r,   rF   rY   rj   r   r   r   r   r      s    OU*r   )r   compatr   r   r   r   r   r   <module>   s   