(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como exportar dados para Excel em PowerShell sem Office

João Barros 07 de July de 2026 4 min de leitura

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 o Export-Excel com um -WorksheetName diferente. 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?