Get-ExcelSheetInfo.ps1

Function Get-ExcelSheetInfo {
    <#
    .SYNOPSIS
        Get worksheet names and their indices of an Excel workbook.
 
    .DESCRIPTION
        The Get-ExcelSheetInfo cmdlet gets worksheet names and their indices of an Excel workbook.
 
    .PARAMETER Path
        Specifies the path to the Excel file. This parameter is required.
 
    .EXAMPLE
        Get-ExcelSheetInfo .\Test.xlsx
 
    .NOTES
        CHANGELOG
        2016/01/07 Added Created by Johan Akerstrom (https://github.com/CosmosKey)
 
    .LINK
        https://github.com/dfinke/ImportExcel
 
    #>


    [CmdletBinding()]
    param(
        [Alias("FullName")]
        [Parameter(ValueFromPipelineByPropertyName=$true, ValueFromPipeline=$true, Mandatory=$true)]
        $Path
    )
    process {
        $Path = (Resolve-Path $Path).ProviderPath
        write-debug "target excel file $Path"
        $stream = New-Object -TypeName System.IO.FileStream -ArgumentList $Path,"Open","Read","ReadWrite"
        $xl = New-Object -TypeName OfficeOpenXml.ExcelPackage -ArgumentList $stream
        $workbook  = $xl.Workbook
        if($workbook -and $workbook.Worksheets) {
            $workbook.Worksheets |
                Select-Object -Property name,index,hidden,@{
                    Label = "Path"
                    Expression = {$Path}
                }
        }
    }
}