【问题标题】:Excel/Powershell start a loop from row 2Excel/Powershell 从第 2 行开始循环
【发布时间】:2021-12-11 20:37:08
【问题描述】:

其实我有这个循环:

foreach($line in Get-Content .\script2.csv) 
{ $firstname = $line.split(';')[0] 
 $lastname = $line.split(';')[1]
 $email = $line.split(';')[2]
 $newLine = "$firstname,""$lastname"",""$email"""
 $newLine >> newCSV.csv }

我用它来提取数据并以正确的格式粘贴。

我想知道从第 2 行开始而不是拿走我所有的工作表的正确语法是什么?

谢谢!

【问题讨论】:

  • 为什么要手动处理 CSV 而不是使用Import-CSV
  • 所以基本上,你想从;分隔的CSV文件中删除标题并写出一个新的,分隔的csv,只有第一行数据?
  • 没错!我是脚本新手,这是我写的第一个脚本,我相信还有更好的东西,但我尝试了解它是如何工作的。
  • 但是.. 为什么要删除标题行?
  • 我真的不想删除它。我只想保留标题,就像从我提取数据的 Excel 中一样。

标签: excel powershell foreach


【解决方案1】:

使用Select -Skip $N 跳过集合的第一个$N 项:

foreach($line in Get-Content .\script2.csv |Select -Skip 1)
{
  $firstname = $line.split(';')[0] 
  $lastname = $line.split(';')[1]
  $email = $line.split(';')[2]
  $newLine = "$firstname,""$lastname"",""$email"""
  $newLine >> newCSV.csv
}

【讨论】:

    【解决方案2】:

    如果您想要将使用分号 ; 作为分隔符的 CSV 文件转换为使用逗号 , 作为分隔符的新 Csv 文件,并在此过程中从它,你可以这样做:

    Import-Csv -Path 'D:\Test\blah.csv' -Delimiter ';' | ConvertTo-Csv -NoTypeInformation | 
    Out-String -Stream | Select-Object -Skip 1 | Set-Content -Path 'D:\Test\newCSV.csv'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 2022-01-23
      • 1970-01-01
      • 2016-05-20
      相关资源
      最近更新 更多