Out-GridView显示空列:CSV表头末尾空格问题及解决方案问询
几种解决办法(按需选择)
1. 不修改原文件,动态修正属性名
这个方法最稳妥,不用动你的原始CSV文件,导入后直接修正属性名:
# 先正常导入CSV $csvData = Import-Csv "C:\x\Journal\Capsule\CapsulePoste.csv" -Delimiter ";" # 遍历所有属性,去掉末尾空格后重命名 $fixedData = $csvData | Select-Object @( $csvData[0].PSObject.Properties.Name | ForEach-Object { @{ Name = $_.TrimEnd() Expression = [scriptblock]::Create("`$_.'$_'") } } ) # 现在就能正常显示和排序了 $fixedData | Sort-Object Date -Descending | Out-GridView
2. 预处理CSV(你找到的方法,优化版)
你用Get-Content去除行尾空格的思路是对的,但可以优化成只处理表头行,避免误删数据行里的合法空格:
$content = Get-Content "C:\x\Journal\Capsule\CapsulePoste.csv" # 只处理第一行(表头),去掉末尾空格,其他行原样保留 $content[0] = $content[0].TrimEnd() $content | Set-Content "C:\x\Journal\Capsule\CapsulePoste.csv" # 之后正常操作即可 Import-Csv "C:\x\Journal\Capsule\CapsulePoste.csv" -Delimiter ";" | Sort-Object Date -Descending | Out-GridView
⚠️ 注意:这个方法会修改原始文件,如果源文件需要保留原始状态,建议用第一种方法。
3. 导入时直接指定正确表头
如果你明确知道所有列的正确名称,可以直接在导入时覆盖原始表头:
# 替换成你实际的所有列名(顺序要和CSV一致) $correctHeaders = "Date", "Terminaison", "Colonne3", "Colonne4" Import-Csv "C:\x\Journal\Capsule\CapsulePoste.csv" -Delimiter ";" -Header $correctHeaders | Select-Object -Skip 1 | # 跳过原始的表头行(因为-Header会把它当成数据行) Sort-Object Date -Descending | Out-GridView
内容的提问来源于stack exchange,提问作者Rakha
相关产品推荐
相关产品推荐

