U
    [e                     @   s   d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZ dZdZd	Zdd
dZdddZefddZefddZefddZefddZefddZefddZd ddZd!ddZdS )"z
    pyexcel.cookbook
    ~~~~~~~~~~~~~~~~~~~

    Cookbook for pyexcel

    :copyright: (c) 2014-2022 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
    N)Book)save_asget_book	get_sheet)OrderedDict)MESSAGE_WARNINGzpyexcel_merged.csvz
merged.xlsz
pyexcel_%sc                 C   sp   t |  }|r|}tj|r$ttt| dd}|j}| D ]"}|	t
|}||||  q>|| dS )aZ  Update one or more columns of a data file with series

    The data structure of column_dicts should be:
    key should be first row of the column
    the rest of the value should an array
    :param str infilename: an accessible file name
    :param dict column_dicts: dictionaries of columns
    :param str outfilename: save the sheet as


    r   )	file_nameZname_columns_by_rowN)OUT_FILE_FORMATTERospathexistsNotImplementedErrorr   r   ZcolnameskeysindexstrZset_column_atr   )
infilenameZcolumn_dictsoutfilenamedefault_out_filesheetserieskr    r   R/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pyexcel/cookbook.pyupdate_columns   s    r   c                 C   sp   t |  }|r|}tj|r$ttt| dd}|j}| D ]"}|	t
|}||||  q>|| dS )a3  Update one or more rows of a data file with series

    datastucture: key should an integer of the row to be updated
    value should be an array of the data
    :param str infilename: an accessible file name
    :param dict row_dicts: dictionaries of rows
    :param str outfilename: save the sheet as
    r   )r   Zname_rows_by_columnN)r	   r
   r   r   r   r   r   Zrownamesr   r   r   Z
set_row_atr   )r   Z	row_dictsr   r   r   r   r   r   r   r   r   update_rows/   s    	r   c                 C   s^   t j|rttg }| D ] }t|d}|t|  qt|d}|	  |
| |S )zdmerge many files horizontally column after column
    :param str outfilename: save the sheet as
    r   )array)r
   r   r   r   r   r   extendlistcolumnsZ	transposer   )Z
file_arrayr   contentr   r   Zmerged_sheetr   r   r   merge_filesE   s    


r!   c                 C   s*   t j|rtt| |g}t|| dS )zmerge two files

    :param str file1: an accessible file name
    :param str file2: an accessible file name
    :param str outfilename: save the sheet as
    N)r
   r   r   r   r   r!   )Zfile1Zfile2r   filesr   r   r   merge_two_filesU   s    r#   c                 C   s@   t j|rttt }| D ]}||j qt||d dS )zmerge many readers

    With FilterableReader and SeriesReader, you can do custom filtering
    :param str outfilename: save the sheet as
    )Zdest_file_nameadictN)	r
   r   r   r   r   r   updatedictr   )reader_arrayr   r    readerr   r   r   merge_readersb   s    r)   c                 C   s*   t j|rtt| |g}t|| dS )zFmerge two readers

    :param str outfilename: save the sheet as

    N)r
   r   r   r   r   r)   )Zreader1Zreader2r   r'   r   r   r   merge_two_readersp   s    r*   c                 C   sF   t  }| D ],}t|d}tj|\}}||_||7 }q
|| dS )zmerge a list of csv files into a excel book

    :param list filelist: a list of accessible file path
    :param str outfilename: save the sheet as
    r   N)r   r   r
   r   splitnamer   )filelistr   mergedr   r   _tailr   r   r   merge_csv_to_a_book|   s    

r1   c                 C   s,   t  }| D ]}|t|d7 }q
|| dS )zmerge a list of excel files into a excel book

    :param list filelist: a list of accessible file path
    :param str outfilename: save the sheet as
    r   N)r   r   r   )r-   r   r.   r   r   r   r   merge_all_to_a_book   s    r2   c                 C   s>   t | d}|r|}n| }|D ]}d|j|f }|| qdS )zSplit a file into separate sheets

    :param str file_name: an accessible file name
    :param str outfilename: save the sheets with file suffix
    r   %s_%sN)r   r,   r   )r   r   booksaveasr   filenamer   r   r   split_a_book   s    
r7   c                 C   s:   t | d}|r|}n| }|| }d||f } ||  dS )zExtract a sheet from a excel book

    :param str file_name: an accessible file name
    :param str sheetname: a valid sheet name
    :param str outfilename: save the sheet as
    r   r3   N)r   r   )r   Z	sheetnamer   r4   r5   r   r   r   r   extract_a_sheet_from_a_book   s    
r8   )N)N)N)N)__doc__r
   Zpyexcel.bookr   Zpyexcel.corer   r   r   Zpyexcel._compactr   Zpyexcel.constantsr   ZDEFAULT_OUT_FILEZDEFAULT_OUT_XLS_FILEr	   r   r   r!   r#   r)   r*   r1   r2   r7   r8   r   r   r   r   <module>   s$   	


