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
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
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