我有这些数据,需要将其放入逗号分隔的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-file
或export-csv
,因为它被视为字符串,因此只输出长度计数,或垂直输出数据,而不是逗号分隔。
我也不能使用convertto-CSV
,因为它也只显示长度而不是数据。
我不知道如何使用Row.Text
将Add-Member
的每条记录都记录到PSObject中。
编辑:使用添加内容时的输出 MSDN Dokumentation
答案 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
非常适合此任务,因为它会将数据添加到文件中的新行,并且还会创建该文件。