从CSV读取列数据

时间:2015-06-03 14:09:03

标签: powershell csv

我有一个CSV文件

Name,Age,Data
Test,22,Yes
Test2,23,No
Test3,43,Yes

如何使用PowerShell处理此文件,以便我可以复制此功能:

foreach(var HeaderName in CSV.HeaderName)
{
   //Sample value Name

   foreach(var data in HeaderColumn.Data)
   {
      //Do Something with data 
      //Sample values as we loop through will be
      //Test,Test2,Test3
   }
}

CSV.HeaderName应该包含值NameAgeData的位置 在我们处理标题时,HeaderColumn.Data将包含NameAgeData的列数据。

1 个答案:

答案 0 :(得分:0)

PowerShell等效的伪代码将是这样的:

$csv = Import-Csv 'C:\path\to\your.csv'

$headers = $csv | Get-Member -MemberType NoteProperty | select -Expand Name

foreach ($header in $headers) {
  foreach ($data in $csv.$header) {
    # do stuff with $data
  }
}

为了获得更好的答案,请退后一步,描述您尝试解决的实际问题,而不是您认为的解决方案。

演示:

PS C:\> $csvfile = 'C:\temp\test.csv'
PS C:\> Get-Content $csvfile
Name,Age,Data
Test,22,Yes
Test2,23,No
Test3,43,Yes
PS C:\> $csv = Import-Csv $csvfile
PS C:\> $csv | Format-Table -AutoSize

Name  Age Data
----  --- ----
Test  22  Yes
Test2 23  No
Test3 43  Yes

PS C:\> $headers = $csv | Get-Member -MemberType NoteProperty | select -Expand Name
PS C:\> $headers
Age
Data
Name
PS C:\> foreach ($header in $headers) {
>>   foreach ($data in $csv.$header) {
>>     Write-Host $data
>>   }
>> }
>>
22
23
43
Yes
No
Yes
Test
Test2
Test3