发布此内容的道歉但我无法解决如何使用Windows PowerShell重命名csv文件中的列标题这样的基本操作。我可以添加新的,删除,填充,导出但无法找到如何更改标题。
我想也许可以导入CSV&导出时指定了标题但不起作用:
import-csv c:\tmp\test.csv | Select-Object first_name | Export-Csv -header "test" c:\tmp\test1.csv
我基本上需要重新格式化CSV文件,以便我可以选择我想要的数据&指定完美的新标题。
当然这应该是直截了当的我必须遗漏一些明显的东西......
答案 0 :(得分:11)
您可以Select-Object
使用calculated property来执行此操作。
Import-Csv test.csv |
Select-Object @{ expression={$_.first_name}; label='test' } |
Export-Csv -NoTypeInformation test1.csv
答案 1 :(得分:8)
你不能尝试像:
import-csv 'c:\tmp\test.csv' | select -Property @{name="test";expression={$($_.first_name)}}| Export-Csv c:\tmp\test1.csv
答案 2 :(得分:0)
我知道这已经回答了,但是这是另一种方法,用于需要更改一个(或几个)列而无需对每个列进行硬编码的情况。
function Convert-Object($rec){
$object = New-Object System.Object
$members = ($rec[0].psobject.Members | ?{$_.MemberType -match "Property"}).Name.Trim()
foreach($mem in $members){
if($mem -eq 'File Number'){
$object | Add-Member -MemberType NoteProperty -Name "FileNumber" -Value $rec.'File Number'
}else{
$object | Add-Member -MemberType NoteProperty -Name $mem -Value $rec.$mem
}
}
return $object
}
$convCSV = ($CSVs | ?{$_.Name -match "YourCsvName"}).FullName #multiple CSVs perhaps
$toConvert = Import-Csv $convCSV
$convObjs = New-Object System.Collections.ArrayList
$toConvert | foreach{$convObjs += Convert-Object -rec $_}
$convObjs | Export-Csv $convCSV -NoTypeInformation