Powershell 使用导出Csv对数据进行分组
我创建了一个动态对象,希望将其输出到CSV文件。到目前为止,我只在一列、一个单元格中使用了不同的值,或者输出了对象的描述(比如字符串长度) 我的HashTable对象是按照以下方式创建的:Powershell 使用导出Csv对数据进行分组,powershell,csv,Powershell,Csv,我创建了一个动态对象,希望将其输出到CSV文件。到目前为止,我只在一列、一个单元格中使用了不同的值,或者输出了对象的描述(比如字符串长度) 我的HashTable对象是按照以下方式创建的: $item = @{"Total"=0; "Complete"= 0} $obj=@{"AllCounted" = 0 } # gets outside data foreach($field in $data){ $obj+=@{$field = $item} $obj[$
$item = @{"Total"=0; "Complete"= 0}
$obj=@{"AllCounted" = 0 }
# gets outside data
foreach($field in $data){
$obj+=@{$field = $item}
$obj[$field]+= @{ $subField = $item }
这将导致以下对象
$obj{
"AllCounted" = [int]
"dynamicField1"= {
"Total" =[int];
"Complete" =[int]
"SubField1" ={
"Total" =[int];
"Complete" =[int]
}
}
"dynamicField _ N"= {
"Total" =[int];
"Complete" =[int]
"SubField _ N" ={
"Total" =[int];
"Complete" =[int]
}
}
}
我的目标是
$obj.Keys|%{
$_ +","+$obj[$_]["Total"]+","+ $obj[$_]["Complete"] | Out-File "something.csv" -append"
foreach($innerLoop in $obj[$_].Keys){
","+ $_ +","+$obj[$_]["Total"]+","+ $obj[$_]["Complete"] | Out-File "something.csv" -append"
}
}
CSV显示
Field1 | Total | Complete
| SubField1 | Total | Complete
| SubField2 | Total | Complete
| SubField N | Total | Complete
Field2 | Total | Complete
| SubField1 | Total | Complete
| SubField2 | Total | Complete
| SubField N | Total | Complete
Field N | Total | Complete
| SubField1 | Total | Complete
| SubField2 | Total | Complete
| SubField N | Total | Complete
所有想法都没有了,但仍在尝试。CSV文件不能像那样对数据进行分组。这是一张平面桌子的代表。您有一个标题行,其中列标题以逗号分隔,以及一个或多个数据行,其中每个记录的值以逗号分隔,顺序与标题相同。您甚至想要CSV,还是只想以上一个块中显示的格式输出数据?(在这种情况下,CSV是一个错误的术语,您的意思是“文本文件”)我需要一个CSV,但当我运行诸如
“ColHeader1,ColHeader2”| Export CSV“file.CSV”
之类的命令时,该值不会显示在不同的列中。如果我这样做了,我可以为每个循环使用两个循环,并以我希望的格式手动打印信息。例如“字段N,总计,完成”|导出CSV“文件.CSV”-追加
“子字段1,总计,完成”|导出CSV“文件.CSV”-追加,如果逗号实际将值EXP0RT CSV与Powershell对象分开,则将创建一个CSV文件,每个对象属性作为CSV中的一列。这意味着您必须创建对象(不仅仅是哈希表)。如果我创建的是CSV字符串并输出文件而不是导出CSV,有没有办法让它正常工作<代码>“,子字段N,总计”|输出文件“myFile.csv”-追加您可以,但我不建议这样做。如果您要使用Powershell,您需要学习创建和使用PS对象,因此您最好现在就开始并正确地使用它。