如何将逗号分隔数组转换为 CSV

How to get Comma Delimited Array into CSV

我有这些数据,需要将其放入逗号分隔的 CSV 文件中,名为 $filepath

$headers = "Meter Ref","Meter CIS Id","Meter Badge Id","Meter Electronic Id","Relationship","Rel Start Date","Rel End Date","Meter ANSI Id","Meter Type","Mfg Serial #","Mfg Lot #","Rel Data Source","Comm Mod Ref","Meter Status","Meter Data Source","Organization(s)"
$psObject = $null
$psObject = New-Object psobject

foreach($o in $headers)
{
    Add-Member -InputObject $psObject -MemberType noteproperty -Name $o -Value ""
}

$psObject | Export-Csv $filepath -NoTypeInformation

$TheCSV = Import-Csv $filepath

$tabledata = $driver.FindElementsByTagName("tr") | where {$_.Text -match "Meter"}
$CSV = ""
$apple = @()

$apple += $headers -join ','

Foreach ($row in $tabledata | select -skip 1)
{
    $apple += $row.Text -replace '\n',',' 
}

$apple内容:

Meter Ref,Meter CIS Id,Meter Badge Id,Meter Electronic Id,Relationship,Rel Start Date,Rel End Date,Meter ANSI Id,Meter Type,Mfg Serial #,Mfg Lot #,Rel Data Source,Comm Mod Ref,Meter Status,Meter Data Source,Organization(s)
1-CAIWFB,PWST441096,PWST441096,PWST441096,Delete,2015-04-21 13:49,2015-04-21 13:49, ,Electric Meter, , ,ORG21672,1-CAIZ66,Installed,ORG21672,SOURCE1
1-CAIWFB,PWST441096,PWST441096,PWST441096,Active,2015-04-21 13:49, , ,Electric Meter, , ,ORG21672,1-CAIZ66,Installed,ORG21672,SOURCE1
1-100FRE,PWST097870,PWST097870,PWST097870,Inactive,2009-11-01 00:00,2015-04-21 13:49, ,Electric Meter, , ,ORG21672,,Installed,ORG21672,SOURCE1

$apple 的输出正是我希望将其插入 CSV 文件的方式。

但是,我不能使用out-fileexport-csv,因为它被认为是一个字符串,因此只输出长度计数,或者垂直输出数据,而不是逗号分隔。

我也不能使用 convertto-CSV 因为它也只显示长度而不是数据。

我不知道如何使用 Add-Member.

Row.Text 的每条记录放入 PSObject 中

编辑:使用 Add-Content 时的输出

我想出了一个方法来做到这一点。不完全是我想要的方式,但它完成了工作:

$file = "C:\mtext.txt"
$filepath = "C:\mcsv.csv"

$apple | Out-file $file 

$ToCSV = Import-Csv $file -Delimiter ','

$ToCSV | Export-Csv $filepath -NoTypeInformation

让我知道更好的方法。

我无法对此进行测试,因为我无权访问您从中获取 table 数据的网页,但它应该像这样简单:

$headers = "Meter Ref","Meter CIS Id","Meter Badge Id","Meter Electronic Id","Relationship","Rel Start Date","Rel End Date","Meter ANSI Id","Meter Type","Mfg Serial #","Mfg Lot #","Rel Data Source","Comm Mod Ref","Meter Status","Meter Data Source","Organization(s)"
$filepath = "C:\folder\meter.csv"

Add-Content -Path $filepath -Value ($headers -join ',')

$tabledata = $driver.FindElementsByTagName("tr") | where {$_.Text -match "Meter"}

Foreach ($row in $tabledata | select -skip 1)
{
    Add-Content -Path $filepath -Value ($row.Text -replace '\n',',' )
}

您不需要创建对象或数据数组,您只需要处理简单的字符串数据。然后使用循环将该数据添加到文本文件(扩展名为 csv)。

Add-Content 非常适合此任务,因为它将数据添加到文件中的新行,并且还会创建文件。