Cómo leer y escribir archivos XLSX con PowerShell

Introducir y extraer datos de Excel con PowerShell es bastante práctico, sobre todo si estás automatizando informes o simplemente intentando evitar estar todo el día revisando hojas de cálculo. Pero no todo el mundo tiene Excel instalado en todas partes, como en un servidor o en Windows Core. Por eso, un problema común es descubrir cómo trabajar con archivos de Excel sin Office. Resulta que existe un módulo bastante bueno llamado ImportExcel que facilita todo esto y lo hace bastante divertido, incluso si no eres un experto en scripting. Después de configurarlo, podrás leer, escribir y modificar archivos de Excel directamente desde PowerShell, sin complicaciones.

Esto resulta especialmente útil si trabajas con exportaciones de Active Directory, informes de estado del servidor o registros de inventario, y quieres automatizar un poco las tareas en lugar de abrir y editar hojas manualmente. Al principio, todo el proceso es un poco extraño, pero funciona, a veces mejor de lo esperado. Recuerda que deberás ejecutar PowerShell como administrador para instalar módulos y necesitarás acceso a internet para descargar ImportExcel desde la Galería de PowerShell. Después, solo tendrás que ejecutar unos pocos comandos para que tus datos entren y salgan de Excel, incluso en un equipo sin Office.

Cómo usar PowerShell para Excel sin instalar Microsoft Office

Instalar el módulo ImportExcel (porque, por supuesto, Windows tiene que hacerlo más difícil de lo necesario).

  • Ejecutar en PowerShell:Install-Module ImportExcel

Esto descarga el módulo necesario para todo el proceso. A veces, recibirás un mensaje solicitando que confíes en el repositorio; simplemente responde que sí y continúa. Si estás en un servidor restrictivo, quizás debas configurar primero la política de ejecución en Firma Remota o Bypass, pero eso es otra cuestión.

Exportar datos de PowerShell directamente a un archivo de Excel

Supongamos que tiene una lista de procesos o usuarios y desea un informe rápido. Use Export-Excel[Nombre del usuario]: crea el archivo e incluso formatea las columnas. Por ejemplo:

Get-Process | Export-Excel -Path "C:\ps\list_processes.xlsx" -AutoSize -TableName "WindowsProcesses" -WorksheetName "Procs"

Esto vuelca todos los procesos en ejecución en una hoja de Excel ordenada, ajustando automáticamente el tamaño de las columnas y añadiendo formato a las tablas. Prácticamente en piloto automático.

Leer datos desde Excel: es como abrir un CSV pero con un formato más elegante

Si ha preparado una hoja con información o configuraciones del usuario, puede importarla fácilmente:

$oldData = Import-Excel -Path "C:\ps\ad_users.xlsx" -WorkSheetName "AD_User_List" -HeaderName UserName, FullName

Esto convierte la hoja en un objeto de PowerShell, con encabezados que usted define. Ya no tiene que limitarse a usar solo archivos CSV: ahora obtiene datos estructurados que puede ajustar, filtrar o actualizar.

Modificar valores dentro de una hoja de Excel

¿Quieres cambiar los datos de una celda? No hay problema. Aquí tienes una forma rápida:

$excel = Open-ExcelPackage -Path "C:\ps\ad_users.xlsx" $worksheet = $excel. Workbook. Worksheets['AD_User_List'] # Check current value $worksheet. Cells['C3'].Value # Change it $worksheet. Cells['C3'].Value = 'DevOps' # Save changes Close-ExcelPackage $excel

Es un poco raro, pero funciona. La biblioteca gestiona los detalles de las referencias de celda, así que simplemente especifica la celda que quieres editar y pulsa «Guardar».

Agregar nuevas filas, ya que es posible que desee agregar nueva información de usuario o registros

# Read existing data $existing = Import-Excel -Path "C:\ps\ad_users.xlsx" # Create new object $newUser = [PSCustomObject]@{ UserName = "lukas.shumacher" FullName = "Lukas Schumacher" JobTitle = "Junior Software Developer" } # Add it to existing data $existing += $newUser # Export everything back Export-Excel -Path "C:\ps\ad_users.xlsx" -WorksheetName "AD_User_List" -InputObject $existing

En realidad, puedes convertir estos fragmentos en scripts que generen informes, actualicen la información de los usuarios o monitoreen el estado de tus servidores sin necesidad de instalar Excel. No sé por qué funciona, pero en una configuración falló al principio, pero tras reiniciar o hacer algunos ajustes, volvió a funcionar perfectamente.

Resumen

Usar ImportExcel es revolucionario para ejecutar scripts en servidores o laboratorios sin interfaz gráfica, sin necesidad de instalar Office. Es muy sencillo de usar y ofrece la flexibilidad necesaria para la mayoría de las necesidades de automatización. Solo recuerda que se trata de importar, exportar y ajustar datos dentro de esas hojas de cálculo sin las complicaciones habituales.

Resumen

  • Instalar ImportExcel conInstall-Module
  • Úselo Export-Excelpara guardar datos en archivos
  • Ingerir datos conImport-Excel
  • Modificar celdas directamente con Open-ExcelPackageyClose-ExcelPackage
  • Anexar nuevos datos combinando objetos y exportándolos nuevamente

Solo algo que funcionó en varias máquinas. Cruzo los dedos para que esto ayude.