pf-csv.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function Get-CSV_Matrix ($path, $colPropName = 'ColumnHeader', $rowPropName = 'RowHeader', $dataPropName= 'Cell')  {
    
    function unquote {
        process {
            $_ | Update-Prefix -prefix '"' | Update-Suffix -Suffix '"'
        }
    }
    
    $path = get-path $path
    $rows = Get-Content -Path $path
    $colheaders = $rows[0] -split ',' | unquote
    $rows = $rows[1..($rows.Count)]
    foreach ($row in $rows) {
        $data = $row | ForEach-Object { $_ -split ',' }
        $rowHeader = $data[0] | unquote
        $colPos = 0;
        foreach ($cell in $data[1..($data.Count)] ) {
            $colPos = $colPos + 1
            [PsCustomObject]@{ 
                $colPropName = $colheaders[$colPos]
                $rowPropName = $rowHeader
                $dataPropName = $cell | unquote
            }
        }
    }
}
function Get-CSV_Matrix:::Example {
    Get-CSV_Matrix -path C:\temp\HRTestAccountsXX.csv
}