Como exportar dados para Excel em PowerShell sem Office
Exportar dados para Excel em PowerShell é uma das tarefas mais úteis para quem cria relatórios e automatiza rotinas de dados. Com o módulo ImportExcel consegue gerar ficheiros .xlsx já formatados a partir dos seus objetos, sem ter o Microsoft Excel nem o Office instalado na máquina — ideal para partilhar resultados com colegas que trabalham sempre em folhas de cálculo. Veja como fazer, passo a passo e com exemplos prontos a copiar.
Pré-requisitos
- PowerShell 5.1 ou PowerShell 7 (Windows, macOS ou Linux).
- Ligação à Internet para instalar o módulo a partir da PowerShell Gallery.
- Permissão para instalar módulos no âmbito do utilizador (não precisa de administrador).
Passo 1: Instalar o módulo ImportExcel
O primeiro passo para exportar dados para Excel em PowerShell é instalar o módulo, que está disponível gratuitamente na PowerShell Gallery. Use o -Scope CurrentUser para não precisar de privilégios de administrador:
Install-Module -Name ImportExcel -Scope CurrentUser
# Confirmar que ficou instalado
Get-Module -ListAvailable ImportExcel
Se for a primeira vez que instala módulos, o PowerShell pode pedir para confiar no repositório; responda Sim ou acrescente -Force. Não precisa de correr Import-Module manualmente: o módulo é carregado de forma automática assim que usar um dos seus comandos.
Passo 2: Preparar os dados a exportar
Qualquer coleção de objetos serve como fonte: o resultado de um Get-Process, as linhas de um ficheiro CSV, registos de uma base de dados ou uma lista criada à mão. Cada propriedade do objeto passa a ser uma coluna e cada objeto passa a ser uma linha. Para este exemplo, vamos criar uma pequena lista de produtos:
$dados = @(
[PSCustomObject]@{ Produto = "Teclado"; Quantidade = 12; Preco = 19.90 }
[PSCustomObject]@{ Produto = "Rato"; Quantidade = 8; Preco = 12.50 }
[PSCustomObject]@{ Produto = "Monitor"; Quantidade = 4; Preco = 149.00 }
)
Passo 3: Criar o ficheiro Excel com Export-Excel
O comando central é o Export-Excel. Basta enviar os dados pela pipeline e indicar o caminho do ficheiro de destino:
$dados | Export-Excel -Path "C:/Relatorios/produtos.xlsx" -WorksheetName "Produtos" -AutoSize
O -AutoSize ajusta a largura das colunas ao conteúdo e o -WorksheetName dá um nome à folha. Se a pasta de destino ainda não existir, crie-a primeiro com New-Item -ItemType Directory -Path "C:/Relatorios", caso contrário recebe um erro de caminho não encontrado. Ao correr o comando de novo sobre o mesmo ficheiro, a folha é atualizada com os dados mais recentes.
Dica: para escrever várias tabelas no mesmo ficheiro, repita oExport-Excelcom um-WorksheetNamediferente. Cada nome cria (ou atualiza) uma folha, mantendo tudo organizado num único .xlsx.
Passo 4: Formatar como tabela e destacar o cabeçalho
Para um resultado mais profissional e fácil de ler, transforme os dados numa tabela do Excel, dê-lhe um título e fixe a primeira linha. Usar uma tabela de opções (splatting) mantém o comando legível:
$opcoes = @{
Path = "C:/Relatorios/produtos.xlsx"
WorksheetName = "Produtos"
AutoSize = $true
TableName = "Produtos"
TableStyle = "Medium6"
Title = "Relatório de Produtos"
BoldTopRow = $true
FreezeTopRow = $true
Show = $true
}
$dados | Export-Excel @opcoes
Aqui o -TableName e o -TableStyle aplicam um estilo de tabela com filtros automáticos; o -Title escreve um título por cima dos dados; o -BoldTopRow destaca o cabeçalho e o -FreezeTopRow mantém-no visível ao percorrer muitas linhas. Por fim, o -Show abre o ficheiro no final (desde que tenha o Excel ou outra aplicação de folhas de cálculo instalada).
Passo 5: Ler os dados de volta com Import-Excel
O módulo não serve só para escrever: o Import-Excel lê ficheiros .xlsx e devolve objetos que pode filtrar, ordenar ou reutilizar como qualquer outro no PowerShell — mais uma vez, sem precisar do Excel instalado:
$lidos = Import-Excel -Path "C:/Relatorios/produtos.xlsx" -WorksheetName "Produtos"
$lidos | Where-Object { $_.Quantidade -gt 5 }
Neste exemplo ficamos apenas com os produtos cuja quantidade é superior a 5. É a forma mais simples de ligar folhas de cálculo aos restantes passos da sua automação.
Verificar o resultado
Abra o ficheiro produtos.xlsx na pasta que escolheu: deve ver as três linhas numa tabela formatada, com o cabeçalho a negrito e as colunas ajustadas. Se preferir confirmar sem abrir o Excel, corra Import-Excel -Path "C:/Relatorios/produtos.xlsx" | Format-Table e verifique se aparecem os mesmos dados na consola.
Conclusão
Com poucas linhas passou de objetos do PowerShell para um relatório Excel formatado, sem depender do Office. A partir daqui pode agendar o script para gerar relatórios automáticos, juntar várias folhas no mesmo ficheiro com -Append ou acrescentar gráficos. Qual será o primeiro relatório que vai automatizar desta forma?