Skip to content
This repository was archived by the owner on Jun 19, 2024. It is now read-only.

Commit

Permalink
Incluído Writer para MS Excel no formato XLSX
Browse files Browse the repository at this point in the history
  • Loading branch information
everton3x committed Jan 16, 2023
1 parent dacfe6d commit 898030b
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 2 deletions.
4 changes: 3 additions & 1 deletion convert.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,11 @@ def main():
wcpickle = writer.PickleWriter(logger, path.join(current_base_dir, 'pickle')) # Pickle writer
wparquet = writer.ParquetWriter(logger, path.join(output_dir, 'parquet')) # Parquet writer
wcparquet = writer.ParquetWriter(logger, path.join(current_base_dir, 'parquet')) # Parquet writer
wxlsx = writer.XlsxWriter(logger, path.join(output_dir, 'excel')) # Xlsx writer
wcxlsx = writer.XlsxWriter(logger, path.join(current_base_dir, 'excel')) # Xlsx writer

# Executa o módulo principal do programa
running = app.App(logger, [pm_input_dir, cm_input_dir], [wcsv, wccsv, wpickle, wcpickle, wparquet, wcparquet], mes, ano)
running = app.App(logger, [pm_input_dir, cm_input_dir], [wparquet, wcparquet, wxlsx, wcxlsx], mes, ano)
running.run()


Expand Down
31 changes: 30 additions & 1 deletion pad/converter/writer/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,33 @@ def write(self, df, filename):
"""
destination = path.join(self._dir, f'{filename}.parquet')
self._logger.debug(f'Escrevendo {len(df)} linhas para {destination} ...')
df.to_parquet(destination)
df.to_parquet(destination)

class XlsxWriter:
"""Writer para arquivos Excel xlsx.
"""
_logger = None # Objeto logger
_dir = '' # Diretório onde os arquivos xlsx serão salvos.

def __init__(self, logger, dirname: str) -> None:
"""Construtor do writer
:param logger: Objeto logger
:param dirname: Diretório onde os arquivos xlsx serão salvos.
"""
self._logger = logger
self._dir = dirname
# Verifica se o diretório existe, se não, cria ele.
if not path.exists(dirname):
logger.warn(f'{dirname} não existe e será criado...')
makedirs(dirname)

def write(self, df, filename):
"""Salva um pandas.DataFrame para um arquivo xlsx.
:param df pandas.DataFrame
:param filename Um nome de arquivo sem a extensão.
"""
destination = path.join(self._dir, f'{filename}.xlsx')
self._logger.debug(f'Escrevendo {len(df)} linhas para {destination} ...')
df.to_excel(destination, sheet_name=filename, index=False)

0 comments on commit 898030b

Please sign in to comment.