从 csv 文件中删除某些重复值

Remove certain duplicate values from csv file

我尝试导入一个 csv 文件,然后根据数据创建一个 xlsx 文件。我的目标是只显示一次 Column1 的值,而不是在每一行中。 csv 文件已经排序,因此可以检查 previous/next 行是否具有相同的值。

CSV

"Column1";"Column2";"Column3"
"Value1A";"Value1B";"Value1C"
"Value1A";"Value2B";"Value2C"
"Value1A";"Value3B";"Value3C"
"Value2A";"Value4B";"Value4C"

预期结果

"Column1";"Column2";"Column3"
"Value1A";"Value1B";"Value1C"
"";"Value2B";"Value2C"
"";"Value2B";"Value1C"
"Value2A";"Value4B";"Value4C"

结果

"Column1";"Column2";"Column3"
"Value1A";"Value1B";"Value1C"
"Value1A";"Value2B";"Value2C"
"Value1A";"Value2B";"Value1C"
"Value2A";"Value4B";"Value4C"

只有第 1 列重复单元格应为空。

我的代码导入并添加到 Excel

$csv = "C:\path\to\file.csv"
$i = 1
Import-Csv $csv | Select-Object -Property Column1,Column2,Column3 | ForEach-Object {
  $j = 1
  foreach ($prop in $_.PSObject.Properties) {
    if ($i -eq 1) {
      $serverInfoSheet.Cells.Item($i, $j++).Value = $prop.Name
    } else {
      $serverInfoSheet.Cells.Item($i, $j++).Value = $prop.Value
    }
  }
  $i++
}

为了提供更多上下文,将 Column1 想象成日期,Columns2 和 3 是员工。

预期结果示例

"12/01/2020";"Mark";"Tony"
"";"Mark";"Andrew"
"";"Tony;Vanessa"
"12/02/2020";"Tony";"Michael"

我不希望日期重复 2 次,因为 excel sheet 失去了清晰的视野。

$Csv = @'
"Column1";"Column2";"Column3"
"Value1A";"Value1B";"Value1C"
"Value1A";"Value2B";"Value2C"
"Value1A";"Value3B";"Value3C"
"Value2A";"Value4B";"Value4C"
'@

$Csv | ConvertFrom-Csv -Delimiter ';' |
    Foreach-Object -Begin { $Last1 = $Null } {
        if ( $_.Column1 -eq $Last1 ) { $_.Column1 = '' }
        else { $Last1 = $_.Column1 }
        $_
    } | ConvertTo-Csv -Delimiter ';'

"Column1";"Column2";"Column3"
"Value1A";"Value1B";"Value1C"
"";"Value2B";"Value2C"
"";"Value3B";"Value3C"
"Value2A";"Value4B";"Value4C"