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

时间:2017-10-04 14:36:56

标签: powershell powershell-v5.0

我有这些数据,需要将其放入逗号分隔的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,因为它也只显示长度而不是数据。

我不知道如何使用Row.TextAdd-Member的每条记录都记录到PSObject中。

编辑:使用添加内容时的输出 MSDN Dokumentation

2 个答案:

答案 0 :(得分:0)

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

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

$apple | Out-file $file 

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

$ToCSV | Export-Csv $filepath -NoTypeInformation

让我知道更好的方法。

答案 1 :(得分:0)

我无法测试这个,因为我无法访问您从中获取表格数据的网页,但它应该像这样简单:

$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非常适合此任务,因为它会将数据添加到文件中的新行,并且还会创建该文件。