如何将逗号分隔数组转换为 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-file
或export-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
非常适合此任务,因为它将数据添加到文件中的新行,并且还会创建文件。
我有这些数据,需要将其放入逗号分隔的 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
因为它也只显示长度而不是数据。
我不知道如何使用 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
非常适合此任务,因为它将数据添加到文件中的新行,并且还会创建文件。