Add-Type -Path "$($PSScriptRoot)\EPPlus.dll" function Import-Excel { param( [Parameter(ValueFromPipelineByPropertyName)] $FullName, $Sheet=1, [string[]]$Header ) Process { $FullName = (Resolve-Path $FullName).Path write-debug "target excel file $($FullName)" $xl = New-Object OfficeOpenXml.ExcelPackage $FullName $workbook = $xl.Workbook $worksheet=$workbook.Worksheets[$Sheet] $dimension=$worksheet.Dimension $Rows=$dimension.Rows $Columns=$dimension.Columns if(!$Header) { $Header = foreach ($Column in 1..$Columns) { $worksheet.Cells[1,$Column].Text } } foreach ($Row in 2..$Rows) { $h=[Ordered]@{} foreach ($Column in 0..($Columns-1)) { $Name = $Header[$Column] $h.$Name = $worksheet.Cells[$Row,($Column+1)].Text } [PSCustomObject]$h } $xl.Dispose() $xl = $null } }