Public/ConvertFrom-ExcelData.ps1

function ConvertFrom-ExcelData {
    [alias("Use-ExcelData")]
    param(
        [Alias("FullName")]
        [Parameter(ValueFromPipelineByPropertyName = $true, ValueFromPipeline = $true, Mandatory = $true)]
        [ValidateScript( { Test-Path $_ -PathType Leaf })]
        $Path,
        [ScriptBlock]$ScriptBlock,
        [Alias("Sheet")]
        $WorksheetName = 1,
        [Alias('HeaderRow', 'TopRow')]
        [int]$StartRow = 1,
        [string[]]$Header,
        [switch]$NoHeader,
        [switch]$DataOnly
    )

    $null = $PSBoundParameters.Remove('ScriptBlock')
    $params = @{} + $PSBoundParameters

    $data = Import-Excel @params

    $PropertyNames = $data[0].psobject.Properties |
        Where-Object {$_.membertype -match 'property'} |
        Select-Object -ExpandProperty name

    foreach ($record in $data) {
        & $ScriptBlock $PropertyNames $record
    }
}