コード例 #1
0
ファイル: xlsx.py プロジェクト: 1217720084/andes
def write(system, outfile, skip_empty=True, overwrite=None, add_sheet=None):
    """
    Write loaded ANDES system data into an xlsx file

    Parameters
    ----------
    system : System
        A loaded system with parameters
    outfile : str
        Path to the output file
    skip_empty : bool
        Skip output of empty models (n = 0)
    overwrite : bool
        None to prompt for overwrite selection; True to overwrite; False to not overwrite
    add_sheet : str, optional
        An optional model to be added to the output spreadsheet

    Returns
    -------
    bool
        True if file written; False otherwise
    """
    if os.path.isfile(outfile):
        if overwrite is None:
            choice = input(
                f'xlsx file {outfile} already exist. Overwrite? [y/N]').lower(
                )
            if len(choice) == 0 or choice[0] != 'y':
                logger.info('No ANDES xlsx file overwritten.')
                return False
        elif overwrite is False:
            return False

    writer = pd.ExcelWriter(outfile, engine='xlsxwriter')

    for name, instance in system.models.items():
        if skip_empty and instance.n == 0:
            continue
        instance.cache.df_in.to_excel(writer,
                                      sheet_name=name,
                                      freeze_panes=(1, 0))

    if add_sheet is not None:
        if ',' in add_sheet:
            add_sheet = add_sheet.split(',')
        else:
            add_sheet = [add_sheet]

        for item in add_sheet:
            if item in system.models:
                system.models[item].cache.df_in.to_excel(writer,
                                                         sheet_name=item,
                                                         freeze_panes=(1, 0))
                logger.info(f'<{item}> template sheet added.')
            else:
                logger.error(f'<{item}> is not a valid model name.')

    writer.save()
    logger.info(f'xlsx file written to <{outfile}>')
    return True
コード例 #2
0
ファイル: xlsx.py プロジェクト: treymingee/andes
def write(system, outfile, skip_empty=True, overwrite=None, add_book=None, **kwargs):
    """
    Write loaded ANDES system data into an xlsx file

    Parameters
    ----------
    system : System
        A loaded system with parameters
    outfile : str
        Path to the output file
    skip_empty : bool
        Skip output of empty models (n = 0)
    overwrite : bool, optional
        None to prompt for overwrite selection; True to overwrite; False to not overwrite
    add_book : str, optional
        An optional model to be added to the output spreadsheet

    Returns
    -------
    bool
        True if file written; False otherwise
    """
    if not confirm_overwrite(outfile, overwrite=overwrite):
        return False

    writer = pd.ExcelWriter(outfile, engine='xlsxwriter')
    writer = _write_system(system, writer, skip_empty)
    writer = _add_book(system, writer, add_book)

    writer.save()
    logger.info(f'xlsx file written to "{outfile}"')
    return True
コード例 #3
0
ファイル: xlsx.py プロジェクト: JiweiTian/andes
def write(system, outfile, skip_empty=True, overwrite=None, add_book=None):
    """
    Write loaded ANDES system data into an xlsx file

    Parameters
    ----------
    system : System
        A loaded system with parameters
    outfile : str
        Path to the output file
    skip_empty : bool
        Skip output of empty models (n = 0)
    overwrite : bool
        None to prompt for overwrite selection; True to overwrite; False to not overwrite
    add_book : str, optional
        An optional model to be added to the output spreadsheet

    Returns
    -------
    bool
        True if file written; False otherwise
    """
    if os.path.isfile(outfile):
        if overwrite is None:
            choice = input(f'xlsx file {outfile} already exist. Overwrite? [y/N]').lower()
            if len(choice) == 0 or choice[0] != 'y':
                logger.info('No ANDES xlsx file overwritten.')
                return False
        elif overwrite is False:
            return False

    writer = pd.ExcelWriter(outfile, engine='xlsxwriter')
    writer = _write_system(system, writer, skip_empty)
    writer = _add_book(system, writer, add_book)

    writer.save()
    logger.info(f'xlsx file written to <{outfile}>')
    return True