在CSV文件中导出多个对象PowerShell

时间:2017-06-28 09:52:46

标签: powershell csv

我的代码有问题,当我在文件中导出文件中只显示一个对象时,一个例子应该更好:

结果是:

Field1
Test1

我希望得到这个:

Field1  col1    col2   Field2   col3   col4
Test1   a       b      Test2     c      d
        a2      b2               c2     d2

文件:

col1    col2
a       b
a2      b2

我已尽力制作一段代码,希望这会有所帮助。我在代码中创建了字段。

$csv = Import-Csv .\file.csv -Delimiter ';'
$dataTable = New-Object System.Data.DataTable

$dataTable.Columns.Add("Field1") | Out-Null


foreach ($s in "Test1")
{
  $row = $dataTable.NewRow()

  $row["Field1"] = $s

  $dataTable.Rows.Add($row)
}

#my problem is there, I don't know how merge these two lines
$dataTable | export-csv -NoTypeInformation -Path ".\fileResult.csv"

$csv | Export-CSV   -Path ".\fileResult.csv" -NoTypeInformation -Delimiter ";" -Append

1 个答案:

答案 0 :(得分:1)

在您的示例中,您有标题和一行。我假设你会循环遍历多行。

运行所有这些代码会给你错误;使用单行或循环版本。

$csv = Import-Csv .\file.csv -Delimiter ';'

#Single line
$csv | Add-Member -Type Noteproperty -Name "Field1" -Value "Test1"
$csv | Add-Member -Type Noteproperty -Name "Field2" -Value "Test2"

#looping over all lines
foreach($line in $csv({
    $line | Add-Member -Type Noteproperty -Name "Field1" -Value "Test1"
    $line | Add-Member -Type Noteproperty -Name "Field2" -Value "Test2"
}

# use Select-Object to get orders CSV
$csv | Select-Object Field1, col1, col2, Field2 | Export-CSV   -Path ".\fileResult.csv" -NoTypeInformation -Delimiter ";" -Append

编辑:一些解释

您的CSV文件作为对象导入。标题(col1col2)将自动指定为对象的NoteProperty成员。您可以通过运行$csv | Get-Member来查看此内容。

您可以使用Add-Member向CSV对象添加成员,指定成员类型,名称(标题)和值。

<强>文档

Import-Csv
Add-Member
Export-Csv
Select-Object