【问题标题】:How to export an array inside a hashtable to CSV?如何将哈希表中的数组导出为 CSV?
【发布时间】:2018-07-23 15:08:30
【问题描述】:

我有一个哈希表,其中包含字符串数组作为值,例如

名称 值 ---- ----- ID1 {SN1,IN1} ID2 {SN2,IN2} ID3 {SN3,IN3} ID4 {SN4,IN4} ……

SN#IN# 是字符串。

我想将此哈希表导出为具有以下格式的 CSV 文件:

序列号 |在 --------- SN1 | IN1 SN2 | IN2 SN3 | IN3 SN4 | IN4 ... 等等。

【问题讨论】:

    标签: powershell export-to-csv


    【解决方案1】:

    从每个嵌套数组构建自定义对象,然后将它们导出到 CSV:

    $ht.GetEnumerator() | ForEach-Object {
        New-Object -Type PSObject -Property @{
            'SN' = $_.Value[0]
            'IN' = $_.Value[1]
        }
    } | Select-Object SN, IN | Export-Csv 'output.csv' -NoType
    

    【讨论】:

    • 嘿安斯加尔!谢谢你每次帮助我!!你的代码很棒。但是,当我打开 csv 文件时,一些 IN 丢失了。你知道为什么吗?
    • @SuinYun 我需要查看您的原始数据。
    • 我打印出哈希表值,它们打印出空白行。所以应该有 200 行没有任何空白,但像 350 行有空白行被打印。我认为这可能与它有关?我不明白为什么字典会打印出空白行
    • 有没有一种方法可以使用带计数器的常规 forloop 而不是 forEach 循环?我认为这会解决问题。
    • 因为我认为我需要通过 .values.get(0).get($n) 访问每一列中的值
    【解决方案2】:

    你可以这样做:

    $objects = foreach($ID in $hashtable.Keys){
      New-Object psobject -Property @{
        ID = $ID
        SN = @($hashtable[$ID] |Where {$_ -like 'SN*'}) -join ','
        IN = @($hashtable[$ID] |Where {$_ -like 'IN*'}) -join ','
      }
    }
    
    $objects |Export-Csv path\to\my.csv
    

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 2016-10-17
      • 2016-02-24
      • 2011-07-01
      • 2018-12-31
      • 2018-01-22
      • 2015-10-06
      • 1970-01-01
      相关资源
      最近更新 更多