Sistema para processar arquivos CSV com correção automática de codificação e geração de relatórios PDF formatados.
📁 projeto/
├── 📄 process_csv_generate_pdf.py # Script principal
├── 📄 csv_processor.py # Processamento de CSV
├── 📄 pdf_generator.py # Geração de PDF
├── 📄 utils.py # Funções utilitárias
├── 📄 requirements.txt # Dependências
├── 📄 .gitignore # Arquivos ignorados pelo Git
├── 📄 README.md # Esta documentação
├── 📄 LICENSE # Licença do projeto
├── 📁 csv/ # Pasta para arquivos CSV
│ ├── 📄 arquivo1.csv # Arquivos CSV de entrada
│ ├── 📄 arquivo2.csv # Mais arquivos CSV
│ └── 📁 corrigidos/ # CSVs corrigidos (auto-gerados)
│ ├── 📄 arquivo1_corrigido.csv
│ └── 📄 arquivo2_corrigido.csv
└── 📁 relatorios/ # Relatórios PDF gerados
├── 📄 Relatorio_arquivo1.pdf
└── 📄 Relatorio_arquivo2.pdf
- Detecção automática de codificação (UTF-8, Latin-1, CP1252, etc.)
- Correção de mojibake UTF-8 malformado
- Detecção automática de separadores CSV (vírgula, ponto e vírgula, tab)
- Análise de estrutura dos dados (tipos de coluna, estatísticas)
- Exportação de CSV corrigido
- Layout adaptativo baseado no número de colunas
- Cálculo inteligente de larguras de colunas
- Formatação especial para emails e datas
- Quebra automática de texto em células
- Busca automática de arquivos CSV
- Geração de nomes de arquivos de saída
- Criação de títulos baseados no nome do arquivo
- Interface de linha de comando (argparse)
- Coordenação entre módulos
- Fluxo principal de processamento
- Python 3.9+
- Dependências listadas em
requirements.txt
# (Opcional) Criar ambiente virtual
python -m venv .venv
.\.venv\Scripts\Activate.ps1
# Instalar dependências
pip install -r requirements.txt
- Crie a pasta
csv/
(caso não exista) na raiz do projeto - Coloque seus arquivos CSV na pasta
csv/
- Execute o script (detecta automaticamente os arquivos)
- PDFs são gerados na pasta
relatorios/
- CSVs corrigidos vão para
csv/corrigidos/
python process_csv_generate_pdf.py
O sistema automaticamente:
- Detecta arquivos CSV na pasta
csv/
- Escolhe automaticamente se houver apenas um
- Processa com configurações otimizadas
# Busca arquivo na pasta csv/ automaticamente
python process_csv_generate_pdf.py --input "dados.csv"
# Ou especifica o caminho completo
python process_csv_generate_pdf.py --input "csv/dados.csv"
python process_csv_generate_pdf.py -i "csv/entrada.csv" -o "relatorio.pdf" -c "custom/saida.csv"
Parâmetro | Abreviação | Descrição | Obrigatório |
---|---|---|---|
--input |
-i |
Arquivo CSV de entrada | ❌ (detecção automática) |
--output-pdf |
-o |
Nome do PDF de saída | ❌ (nome automático) |
--output-csv |
-c |
Nome do CSV corrigido | ❌ (nome automático) |
- Codificação: UTF-8 (com/sem BOM), Latin-1, CP1252, ISO-8859-1, CP850, ANSI
- Separadores: Vírgula, ponto e vírgula, tab, pipe
- Cabeçalhos: Localiza automaticamente linhas de cabeçalho válidas
- Arquivos: Busca automática na pasta
csv/
- Mojibake: Corrige
Informação
→Informação
- Unicode: Normalização NFC para acentuação consistente
- Linhas vazias: Remove automaticamente
- Espaços: Limpa espaços desnecessários
- Orientação adaptativa: Portrait (≤5 colunas) / Landscape (>5 colunas)
- Larguras proporcionais: Baseadas no comprimento real do conteúdo
- Formatação especial:
- Emails: Trunca endereços longos
- Datas: Remove informações de timezone desnecessárias
- Quebra automática: Texto longo quebrado em múltiplas linhas
O sistema gera automaticamente os seguintes arquivos organizados:
relatorios/Relatorio_{nome_arquivo}.pdf
: Relatório formatado com layout adaptativocsv/corrigidos/{nome_arquivo}_corrigido.csv
: CSV com codificação e caracteres corrigidos
Entrada: "csv/dados_usuarios.csv"
Saídas:
├── relatorios/Relatorio_dados_usuarios.pdf # PDF formatado
└── csv/corrigidos/dados_usuarios_corrigido.csv # CSV limpo
Biblioteca | Propósito |
---|---|
ReportLab | Geração de PDFs profissionais |
chardet | Detecção automática de codificação |
csv | Processamento de arquivos CSV |
unicodedata | Normalização de caracteres Unicode |
Este repositório está licenciado sob a licença MIT. Consulte o arquivo LICENSE
para mais detalhes.
Projeto desenvolvido por Michel Alexandrino de Souza