Búsqueda de sitios web

¿Cómo importar un archivo de Excel en un script de PowerShell?


Millones de personas utilizan Microsoft Excel para almacenar, organizar y analizar datos. Los archivos de Excel (.xlsx, .xls) contienen una gran cantidad de datos útiles como informes, listas, cálculos, etc. Como programador de secuencias de comandos de PowerShell, es posible que a menudo necesite extraer datos de archivos de Excel para utilizarlos en sus secuencias de comandos. Con PowerShell, puede importar y exportar directamente archivos de Excel a sus scripts y trabajar con los datos mediante programación. En esta guía para principiantes, le presentaré el cmdlet PowerShell Import-Excel y le mostraré cómo usarlo para importar datos desde archivos de Excel.

También cubriremos cómo instalar el módulo, leer hojas de trabajo y rangos de celdas específicos, acceder y filtrar datos de Excel e incluso actualizar archivos de Excel existentes, ¡todo desde PowerShell! Ya sea que necesite automatizar informes, procesar cálculos o extraer datos para análisis, este tutorial le mostrará cómo PowerShell proporciona una fácil integración y automatización de Excel. ¡Siga leyendo para descubrir el poder de crear scripts en Excel con PowerShell!

Introducción al módulo ImportExcel de PowerShell

El módulo ImportExcel es un módulo de PowerShell que proporciona cmdlets para importar y exportar datos hacia y desde hojas de cálculo de Excel. Este módulo ofrece una integración perfecta y simplifica el proceso de trabajo con archivos de Excel. Proporciona una variedad de cmdlets que permiten a los usuarios leer, manipular y exportar datos desde archivos de Excel con facilidad. Esto es particularmente útil para automatizar tareas de gestión de datos que de otro modo serían tediosas y consumirían mucho tiempo.

El módulo ImportExcel no está incluido con PowerShell de forma predeterminada, por lo que deberá instalarlo por separado. Una vez instalado, puede utilizar los cmdlets proporcionados por el módulo para interactuar con hojas de cálculo de Excel desde PowerShell.

Instalación del módulo ImportExcel en PowerShell

La forma más sencilla de importar archivos de Excel en PowerShell es utilizar el módulo ImportExcel. Este práctico módulo está disponible para instalación gratuita desde la Galería de PowerShell. Para instalar el módulo Import-Excel, simplemente abra PowerShell y ejecute el siguiente comando:


Install-Module -Name ImportExcel

Esto descargará e instalará la última versión del módulo ImportExcel y sus dependencias. Necesita ejecutar PowerShell como administrador para instalar módulos, ¡por cierto! De lo contrario, puede utilizar el parámetro "Alcance" para instalar para el usuario actual sin derechos de administrador.


Install-Module -Name ImportExcel -Scope CurrentUser

Una vez instalado, puede importar el módulo a sus scripts usando lo siguiente:


Import-Module ImportExcel

¡Ahora estamos listos para importar datos de Excel a PowerShell!

Importar datos desde Excel usando PowerShell

Importar datos de Excel usando PowerShell es un proceso sencillo. Una vez que tenga instalado el módulo ImportExcel, puede usar el cmdlet Import-Excel para obtener datos de una hoja de cálculo de Excel.

Para importar un archivo de Excel, siga estos pasos:

  1. Inicie una sesión de PowerShell abriendo la consola de PowerShell o PowerShell ISE.
  2. Importe el módulo Import-Excel ejecutando el siguiente comando: Import-Module -Name ImportExcel
  3. Utilice el cmdlet Import-Excel para importar el archivo de Excel. Por ejemplo: Importar-Excel -Ruta C:\Ruta\A\Excel\Archivo.xlsx
  4. El archivo de Excel se importará como un objeto de PowerShell, lo que permitirá a los usuarios acceder y manipular sus datos mediante cmdlets y sintaxis de PowerShell.

El cmdlet toma una ruta a un archivo de Excel como argumento y devuelve un objeto de PowerShell que contiene los datos de la hoja de cálculo.

Por ejemplo, para importar datos desde una hoja de cálculo de Excel ubicada en “C:\Reports\EmpData.xlsx”, ejecutaría el siguiente comando:


# File Path variable
$FilePath = "C:\Reports\EmpData.xlsx"

# Read the Excel file and store its data into the variable
$ExcelData = Import-Excel -Path $FilePath

El cmdlet Import-Excel lee el archivo de Excel y lo almacena en la variable $ExcelData.

Aquí está mi archivo de Excel:

Acceda a datos de Excel desde PowerShell

Los datos de Excel importados se almacenan como PSObject dentro de la variable. Puede acceder a él como a cualquier otro objeto de PowerShell. Aquí hay unos ejemplos:

Leer hoja de trabajo específica

Para leer una hoja de trabajo específica del archivo de Excel, use el parámetro -WorkSheetName:


$Sheet1Data = Import-Excel -Path $FilePath -WorksheetName "Sheet1"

Esto importará solo los datos de la hoja de trabajo "Hoja1".

Puede importar columnas específicas desde la hoja de cálculo de Excel usando:


$data = Import-Excel -Path "C:\Temp\EmpData.xlsx" -HeaderName 'Employee Name', 'Designation'

Leer rango de celdas

También puede leer un rango de celdas específico de una hoja de trabajo usando los parámetros -StartRow y -StartColumn:


Import-Excel -Path $FilePath -WorksheetName "Sheet1" -StartRow 1 -StartColumn 1 -EndRow 5 -EndColumn 2

En este ejemplo, importamos datos de la hoja de trabajo "Hoja1", centrándonos en las filas 1 a 5 y las columnas 1 y 2.

Técnicas avanzadas de gestión de datos con PowerShell Import-Excel

PowerShell Import-Excel proporciona una amplia gama de técnicas avanzadas de administración de datos que pueden ayudarlo a automatizar sus tareas de administración de datos. Algunas de las técnicas más útiles incluyen filtrar, ordenar y agrupar datos.

Filtrar datos

Para filtrar datos, puede utilizar el cmdlet Where-Object. Este cmdlet le permite especificar una condición que debe cumplirse para cada fila de los datos. Las filas que no cumplen la condición se filtran.


$SalesData = Import-Excel -Path $FilePath -WorksheetName "Sales"

$USSales = $SalesData | Where-Object {$_.Region -eq "US"}

Esto filtrará la hoja de trabajo de Ventas solo para registros de la región de EE. UU. También puedes filtrar usando:


$FilteredData = Import-Excel -Path $FilePath | Where-Object {$_.Designation -eq 'Software Engineer'}

En este ejemplo, importamos datos de la hoja de trabajo "SalesData", centrándonos en las filas 2 a 10.

  • Para ordenar datos, puede utilizar el cmdlet Sort-Object. Este cmdlet le permite especificar una o más columnas para ordenar y el orden en el que ordenarlas.
  • Para agrupar datos, puede utilizar el cmdlet Group-Object. Este cmdlet le permite agrupar datos por una o más columnas y realizar cálculos en cada grupo.

Actualice el archivo de Excel usando PowerShell

También puede utilizar el módulo ImportExcel para actualizar o agregar datos a un archivo de Excel existente.

Primero, importe el archivo de Excel:


#Import Excel File
$ExcelData = Import-Excel -Path "C:\Temp\EmpData.xlsx" -WorksheetName "Sheet1"

Realice cambios en la variable $ExcelData, como agregar una nueva fila:


#Add New Row
$NewRow = [PSCustomObject]@{
    "Employee Name" = "Ada Lovelace" 
    "Designation" = "Software Engineer"
    "Region" = "US"
}

$ExcelData += $NewRow

Finalmente, guarde los datos actualizados en el archivo de Excel original:


#Save the Excel File
Export-Excel -Path $FilePath -InputObject $ExcelData -ClearSheet

El parámetro -ClearSheet borra primero los datos existentes antes de exportar los datos actualizados.

De manera similar, puede actualizar, eliminar o agregar nuevas hojas de trabajo modificando $ExcelData en consecuencia.

Alternativa: interoperabilidad COM para leer datos de Excel

Una forma alternativa de importar archivos de Excel en PowerShell sin ningún módulo externo es utilizar COM Interop. Necesitará tener Excel instalado para crear o acceder a archivos de Excel con este método.

Primero, cree un objeto COM de Excel:


$Excel = New-Object -ComObject Excel.Application

Luego abra el archivo de Excel deseado:


$Workbook = $Excel.Workbooks.Open("C:\Reports\data.xlsx")

Ahora puedes leer valores de celda como:


$Value = $Workbook.Worksheets["Sheet1"].Cells.Item(1,1).Value()

El método COM Interop le brinda un control detallado sobre la aplicación Excel. Aquí tienes un ejemplo completo:


# Create COM Excel object 
$Excel = New-Object -ComObject Excel.Application

# Open Excel file
$Workbook = $Excel.Workbooks.Open("C:\Temp\EmpData.xlsx") 

#Get the Worksheet
$Worksheet = $Workbook.Worksheets["Sheet1"]

# Read specific cells
$cellValue1 = $worksheet.Cells.Item(1, 1).Value()
$cellValue2 = $worksheet.Cells.Item(1, 2).Value()

# Display value
Write-Host "Cell A1 Value: " $cellValue1
Write-Host "Cell B1 Value: " $cellValue2

# Close Excel
$workbook.Close($false)
$Excel.Quit()

Errores comunes y solución de problemas con PowerShell Import-Excel

Como ocurre con cualquier herramienta, pueden producirse errores al utilizar PowerShell Import-Excel. Algunos de los errores más comunes incluyen problemas con el formato, las rutas de los archivos y los permisos.

Error: "ImportExcel: el término 'ImportExcel' no se reconoce como el nombre de un cmdlet, función, archivo de script o programa ejecutable".

Solución: Instale el módulo ImportExcel ejecutando: Install-Module -Name ImportExcel

Error: ruta de archivo incorrecta

Mensaje de error: No se pudo encontrar el archivo 'C:\wrong\path\to\file.xlsx'. Para solucionarlo, asegúrese de que la ruta del archivo sea correcta. Si la ruta contiene espacios, envuélvala entre comillas.

Error: "No se pudo cargar el libro de Excel".

Esto normalmente significa que la ruta o el nombre del archivo es incorrecto. Vuelva a verificar la ruta y el nombre del archivo y asegúrese de que el archivo exista. Intente también calificar completamente la ruta en lugar de utilizar una ruta relativa. También puede utilizar el cmdlet Test-Path que le permite probar si un archivo o directorio existe en una ruta especificada.

Error: no se pudo encontrar la hoja 'WrongSheetName' en el libro de trabajo

Solución: asegúrese de que el nombre de la hoja de trabajo sea correcto. Los nombres de las hojas de trabajo distinguen entre mayúsculas y minúsculas.

Error: "Documento no abierto".

Esto ocurre si intenta manipular o guardar un libro sin abrirlo primero. Asegúrese de utilizar el cmdlet Open-ExcelPackage para abrir el libro antes de realizar cualquier otra operación.

Error: "El libro de trabajo ya está abierto".

Solo puede tener un ExcelPackage abierto en un proceso de PowerShell a la vez. Asegúrese de cerrar completamente los libros con Close-ExcelPackage antes de volver a abrirlos.

Error: "la hoja de trabajo 'Hoja1' no existe".

El nombre de la hoja de trabajo especificada no coincide con el nombre real de la hoja de trabajo en el archivo de Excel. Vuelva a verificar el nombre o use Get-ExcelSheetInfo para enumerar todas las hojas.

Error: "El número de filas no es válido".

Si importa un rango de filas específico, asegúrese de que el número de fila final sea válido para la hoja. Get-ExcelSheetInfo se puede utilizar para comprobar el total de filas.

Para evitar errores, verifique las rutas de los libros, los nombres de las hojas, los números de filas y abra/cierre los libros correctamente. Utilice -ErrorAction Stop para detectar errores. Consulte la documentación del módulo para obtener orientación adicional.

Importación de recursos de PowerShell-Excel y aprendizaje adicional

Si está interesado en obtener más información sobre PowerShell Import-Excel, hay varios recursos disponibles para ayudarlo a comenzar. El módulo ImportExcel en PowerShell Gallery o GitHub es un excelente lugar para encontrar módulos y cmdlets adicionales que se pueden usar junto con PowerShell Import-Excel.

Conclusión

Importar y automatizar archivos de Excel en PowerShell es fácil y potente con la ayuda del módulo ImportExcel. En este artículo, cubrimos cómo instalar y usar el módulo ImportExcel para leer datos de Excel en objetos de PowerShell. Aprendió a importar hojas de trabajo específicas, rangos de celdas, filtrar y procesar datos de Excel usando la sintaxis de PowerShell. También vimos cómo actualizar y exportar archivos de Excel directamente desde sus scripts. Con las técnicas y mejores prácticas descritas en esta guía, podrá aprovechar al máximo esta herramienta y convertirse en un analista de datos más eficiente.

Importar archivos de Excel en PowerShell es bastante fácil usando el módulo gratuito ImportExcel. Los pasos clave son:

  • Instalar el módulo ImportExcel
  • Utilice el cmdlet Import-Excel para leer el archivo Excel
  • Acceda a los datos de la hoja de cálculo como objetos de PowerShell
  • Filtrar y procesar datos de Excel usando la sintaxis de PowerShell
  • Actualizar y exportar archivos de Excel desde PowerShell

Con estas técnicas, puede automatizar informes de Excel, procesamiento de datos y mucho más directamente dentro de los scripts de PowerShell. Ya sea que recién esté comenzando con PowerShell Import-Excel o sea un usuario experimentado, siempre hay algo nuevo que aprender y explorar. Imagínese el ahorro de tiempo y el aumento de productividad que puede lograr. ¡Comience a crear scripts en Excel con PowerShell hoy y lleve su procesamiento de datos al siguiente nivel!

Artículos relacionados