Get-OneFileFromZip.psm1

function Get-OneFileFromZip($Path,$File){
    $zip = [System.IO.Compression.ZipFile]::OpenRead($Path)
    $entry = $zip.entries | Where-Object{$_.Name -eq $File}
    $stream = $entry.Open()
    $reader = New-Object System.IO.StreamReader($stream)
    $reader.ReadToEnd()
    $null=$reader.Dispose()
    $null=$stream.Dispose()
    $null=$zip.Dispose()
}
function Get-SheetByName($Path,$SheetName){

    # see the following link for details on spreadsheetml structure
    # https://docs.microsoft.com/en-us/office/open-xml/structure-of-a-spreadsheetml-document
    
    # get internal files that hold sheet mappings
    [xml]$sheets = Get-OneFileFromZip $Path 'workbook.xml'
    [xml]$rels = Get-OneFileFromZip $Path 'workbook.xml.rels'
    #resolve internal file name for sheet by name
    $rid = ($sheets.workbook.sheets.sheet | Where-Object name -eq $SheetName).id

    $sheetfile = split-path -leaf ($rels.Relationships.Relationship | Where-Object id -eq $rid).Target
    Get-OneFileFromZip $Path $sheetfile
 }
Export-ModuleMember -Function Get-OneFileFromZip,Get-SheetByName