Cómo exportar datos a Excel en PowerShell sin Office
Exportar datos a Excel en PowerShell es una de las tareas más útiles para quien crea informes y automatiza rutinas de datos. Con el módulo ImportExcel puedes generar archivos .xlsx ya formateados directamente a partir de tus objetos, sin tener Microsoft Excel ni Office instalado en la máquina — ideal para compartir resultados con compañeros que trabajan siempre en hojas de cálculo. Aquí tienes cómo hacerlo, paso a paso y con ejemplos listos para copiar.
Requisitos previos
- PowerShell 5.1 o PowerShell 7 (Windows, macOS o Linux).
- Conexión a Internet para instalar el módulo desde la PowerShell Gallery.
- Permiso para instalar módulos en el ámbito del usuario (no necesitas administrador).
Paso 1: Instalar el módulo ImportExcel
El primer paso para exportar datos a Excel en PowerShell es instalar el módulo, disponible de forma gratuita en la PowerShell Gallery. Usa -Scope CurrentUser para no necesitar privilegios de administrador:
Install-Module -Name ImportExcel -Scope CurrentUser
# Confirmar que ficou instalado
Get-Module -ListAvailable ImportExcel
Si es la primera vez que instalas módulos, PowerShell puede pedirte que confíes en el repositorio; responde Sí o añade -Force. No necesitas ejecutar Import-Module manualmente: el módulo se carga automáticamente en cuanto usas uno de sus comandos.
Paso 2: Preparar los datos a exportar
Cualquier colección de objetos sirve como fuente: el resultado de un Get-Process, las filas de un archivo CSV, registros de una base de datos o una lista creada a mano. Cada propiedad del objeto se convierte en una columna y cada objeto en una fila. Para este ejemplo, vamos a crear una pequeña lista de productos:
$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 }
)
Paso 3: Crear el archivo Excel con Export-Excel
El comando central es Export-Excel. Solo tienes que enviar los datos por la pipeline e indicar la ruta del archivo de destino:
$dados | Export-Excel -Path "C:/Relatorios/produtos.xlsx" -WorksheetName "Produtos" -AutoSize
-AutoSize ajusta el ancho de las columnas al contenido y -WorksheetName da nombre a la hoja. Si la carpeta de destino todavía no existe, créala primero con New-Item -ItemType Directory -Path "C:/Relatorios"; de lo contrario obtendrás un error de ruta no encontrada. Al ejecutar el comando de nuevo sobre el mismo archivo, la hoja se actualiza con los datos más recientes.
Consejo: para escribir varias tablas en el mismo archivo, repiteExport-Excelcon un-WorksheetNamedistinto. Cada nombre crea (o actualiza) una hoja, manteniendo todo ordenado en un único .xlsx.
Paso 4: Dar formato de tabla y resaltar el encabezado
Para un resultado más profesional y fácil de leer, convierte los datos en una tabla de Excel, ponle un título y fija la primera fila. Usar una tabla de opciones (splatting) mantiene el comando legible:
$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
Aquí -TableName y -TableStyle aplican un estilo de tabla con filtros automáticos; -Title escribe un título encima de los datos; -BoldTopRow resalta el encabezado y -FreezeTopRow lo mantiene visible al desplazarte por muchas filas. Por último, -Show abre el archivo al final (siempre que tengas Excel u otra aplicación de hojas de cálculo instalada).
Paso 5: Leer los datos de vuelta con Import-Excel
El módulo no sirve solo para escribir: Import-Excel lee archivos .xlsx y devuelve objetos que puedes filtrar, ordenar o reutilizar como cualquier otro en PowerShell — de nuevo, sin necesitar Excel instalado:
$lidos = Import-Excel -Path "C:/Relatorios/produtos.xlsx" -WorksheetName "Produtos"
$lidos | Where-Object { $_.Quantidade -gt 5 }
En este ejemplo nos quedamos solo con los productos cuya cantidad es mayor que 5. Es la forma más sencilla de conectar hojas de cálculo con el resto de tu automatización.
Verificar el resultado
Abre el archivo produtos.xlsx en la carpeta que elegiste: deberías ver las tres filas en una tabla con formato, con el encabezado en negrita y las columnas ajustadas. Si prefieres comprobarlo sin abrir Excel, ejecuta Import-Excel -Path "C:/Relatorios/produtos.xlsx" | Format-Table y confirma que aparecen los mismos datos en la consola.
Conclusión
Con apenas unas líneas has pasado de objetos de PowerShell a un informe de Excel con formato, sin depender de Office. A partir de aquí puedes programar el script para generar informes automáticos, combinar varias hojas en un archivo con -Append o añadir gráficos. ¿Cuál será el primer informe que automatices de esta manera?