【问题标题】:Add row to column to CSV from variable list从变量列表将行添加到列到 CSV
【发布时间】:2019-07-01 14:51:30
【问题描述】:

我已经为一件对我来说似乎很简单的事情奋斗了一个多小时……但我做不到

解释:

我导入一个像这样的 CSV,他是空的:

DAYS | PC1 | PC2

我有一个看起来像这样的变量“$Days”:

PS C:\Users> $Days
12/02/2019
13/02/2019
14/02/2019
15/02/2019
16/02/2019

我只想将每一行添加到“天”列...

喜欢:

   DAYS    | PC1 | PC2
12/02/2019 |     |
13/02/2019 |     |
14/02/2019 |     |
15/02/2019 |     |
16/02/2019 |     |

我尝试类似:

Foreach ($row in $Days){
    $CSV.Days = $row
}

但他告诉我没有找到属性“Days”。

我也尝试过这样的事情:

$CSV | Select-Object @{Name='Days';Expression={$forearch ($row in $Days){$row}}},*

但又没有结果,我不知道我做错了什么......

提前感谢您的帮助。

【问题讨论】:

  • 如果您的 CSV 真的看起来像这样,您的第一个问题可能是您需要使用 -delimiter '|' 和 Import-CSV
  • 不,没关系,实际上它看起来像:“days”;“pc1”;“pc2”,我使用 -Delimiter “;”
  • $Days| ForEach-Object{[PSCustomObject]@{DAYS=$_;PC1="";PC2=""}}
  • @LotPings 你能提出一个答案吗,因为如果没有,这个问题仍然没有答案,你写了一个解决方案;)

标签: list powershell csv append


【解决方案1】:

您的方法的问题是文件为空,因此没有为 $CSV 生成属性

一个简单的解决方案是通过迭代 $Days 并构建一个 [PSCustomObject] 来生成 $CSV

$Days = @'
12/02/2019
13/02/2019
14/02/2019
15/02/2019
16/02/2019
'@ -split '\r?\n'

$CSV = $Days | ForEach-Object{
    [PSCustomObject]@{
        DAYS = $_
        PC1  = $NULL
        PC2  = $NULL
    }
}

$CSV
$CSV | Export-Csv .\YouNameIt.csv -NoTypeInformation

【讨论】:

    【解决方案2】:

    或者,更短的版本:

    $CSV-out = $csv | ForEach-Object{[PSCustomObject]@{DAYS = $_}}|Select days, PC1, PC2
    

    $csv 是一个值列表。类似于

    $csv = @("12/02/2019","13/02/2019","14/02/2019","15/02/2019","16/02/2019")
    

    如果您随后执行 $CSV |金融时报

        DAYS       PC1 PC2
        ----       --- ---
    12/02/2019         
    13/02/2019
    14/02/2019
    15/02/2019
    16/02/2019
    

    您不必为了添加字段而包含自定义对象。你可以做一个

    选择

    它也会为您添加它们。

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多