Do CSV ao Relatório HTML sem Escrever Código — aula do módulo Primeiro Resultado em 10 Minutos, na trilha Começando com Antigravity: do Zero ao Primeiro…
Leitura de aproximadamente 4 minutos.
Módulo: Primeiro Resultado em 10 Minutos · Curso: Começando com Antigravity: do Zero ao Primeiro Resultado · Formação: Formação Nível Zero: Ferramentas Essenciais e Gratuitas de IA e Código
CSV é o formato que sai de todo sistema: vendas, extrato bancário, horas trabalhadas, despesas, exportação de ERP. E é ilegível. Aberto no Bloco de Notas, são 180 linhas de texto separado por vírgula ou ponto e vírgula. Aberto no Excel, vira uma planilha crua que alguém precisa transformar em relatório à mão — todo mês, duas horas, sempre a mesma coisa.
O objetivo desta aula é fazer esse arquivo virar um relatório apresentável que abre com dois cliques, funciona sem internet e você reenvia por e-mail ou WhatsApp.
Com a pasta demo aberta e o vendas.csv dentro dela, cole no painel do agente:
Nesta pasta existe um arquivo vendas.csv. Escreva um script PowerShell chamado
relatorio-csv.ps1 que leia esse CSV e gere um único arquivo HTML com: total, número
de registros, média, menor e maior valor; uma seção por coluna de agrupamento com tabela
e barra proporcional; e um gráfico de barras por mês. O HTML precisa ser autossuficiente
— CSS e gráficos embutidos, nenhum link externo, funciona sem internet.
O script descobre sozinho qual é a coluna de valor, qual é a de data e quais servem de
agrupamento; eu não quero informar nome de coluna.
Regras: rode em Windows com o PowerShell que já vem no sistema, sem instalar nada, sem
pip, semnpm, sem conta e sem chave de API.
"Um único arquivo HTML." Sem isso, é comum sair uma pasta com HTML, CSS, JavaScript e imagens. Aí você não consegue mandar por WhatsApp, e o relatório quebra assim que alguém move um arquivo de lugar.
"Autossuficiente, funciona sem internet." Bibliotecas de gráfico carregadas de um site externo funcionam hoje e quebram quando o site sai do ar, muda de versão ou você está num avião. O gráfico desenhado dentro do próprio arquivo dura.
"Descobre sozinho a coluna." Esta é a diferença entre um script que serve para o CSV do vídeo e um que serve para o seu CSV. Se você tivesse dito "a coluna de valor se chama Valor", o script morreria no primeiro arquivo que chamasse a coluna de Faturamento.
As restrições de ambiente. Sem elas, uma resposta perfeitamente razoável seria um script Python usando pandas — e aí você tem meia hora de instalação pela frente antes de ver qualquer coisa na tela.
powershell -NoProfile -ExecutionPolicy Bypass -File .\relatorio-csv.ps1 -Csv .\vendas.csv
Saída medida: 180 linhas | valor: Valor | data: Data | grupos: Regiao, Produto, Vendedor.
Essa linha de resumo vale mais do que parece. Ela diz o que o script entendeu do seu arquivo antes de gerar qualquer número. Se ele tivesse escolhido a coluna errada como valor, você descobriria aqui, e não depois de mandar o relatório para o cliente.
Dê dois cliques no HTML gerado. O navegador abre com cinco cartões de número no topo, um gráfico de barras por mês e as tabelas por Região, Produto e Vendedor, cada linha com uma barra proporcional.
| Item | Medido | |---|---| | Leitura e geração, 180 linhas | 2,68 s | | Tamanho do HTML final | 7.373 bytes | | Total apurado no relatório | 868.141,17 |
Guarde esse total: 868.141,17. Ele volta em outras aulas desta trilha como referência de conferência — quando um relatório novo, feito por outro caminho, chega ao mesmo número, você tem motivo para confiar nos dois. Quando não chega, um dos dois está mentindo.
Referência de tamanho, para calibrar expectativa: esse script saiu com cerca de 250 linhas, em três rodadas — a primeira versão e dois ajustes. Os dois ajustes são o conteúdo da próxima aula.
O ponto da automação não é o CSV do exercício. Copie um CSV seu para a pasta e rode:
powershell -NoProfile -ExecutionPolicy Bypass -File .\relatorio-csv.ps1 -Csv .\meu-arquivo.csv
Confira a linha de resumo. Se as colunas detectadas fizerem sentido, o relatório também vai fazer. Se não fizerem, você tem um pedido de uma linha para o agente — e é exatamente esse tipo de conversa que a aula 4 trata.