我正试图用表中的一些内容来实现输出。在我看来一切都很好,但我面临的唯一问题是H1列下的值出现在同一行。
有没有办法,我可以让它出现在下一行?当然,去掉逗号和大括号。
这是代码:
$Csv = Import-Csv -Path $file
$Csv | Group-Object -Property Name | ForEach-Object -Process {
[PSCustomObject]@{
N1 = $_.Name
T1 = ($_.Group.TOtal |Measure -sum).Sum
H1 = $_.Group.Hired
C1 = $_.Group.Count
}
}
电流输出:
N1 T1 H1 C1
-- -- -- --
John 3 2002 1
David 150 {2011, 2003, 2011} 3
Steve 55 {2012, 2003} 2
Jason 550 {2001, 2002} 2
所需输出:
N1 T1 H1 C1
-- -- -- --
John 3 2002 1
David 150 2011 3
2003
2011
...
您可以通过如下显式调用Format-Table
来获得所需的输出:
$CSV |Format-Table N1,T1,@{Name='H1';Expression={$_.H1 -join "`n"}},C1 -Wrap
计算的属性表达式:
{$_.H1 -join "`n"}
使得CCD_ 2将CCD_。-Wrap
防止Format-Table
截断多行字符串-给我们类似的东西:
N1 T1 H1 C1
-- -- -- --
John 3 2002 1
David 150 2011 3
2003
2011
Steve 55 2012 2
2003
Jason 550 2001 2
2002
如果您想在将导出到CSV文件时保留换行符,请改用Select-Object
:
$CSV |Select-Object N1,T1,@{Name='H1';Expression={$_.H1 -join "`n"}},C1 |Export-Csv .output_with_newlines.csv -NoTypeInformation
转换为HTML就像将生成的对象管道传输到ConvertTo-Html -As Table
:一样简单
$CSV |Select N1,T1,@{Name='H1';Expression={$_.H1 -join "`n"}},C1 |ConvertTo-Html -As Table |Set-Content .pathtoreport.html
默认情况下,浏览器会将换行符呈现为规则空格,但这可以通过注入一点CSS:来解决
$style = @'
<style>
table {
white-space: pre;
vertical-align:top;
}
</style>
'@
$CSVMultiLine = $CSV |Select N1,T1,@{Name='H1';Expression={$_.H1 -join "`n"}},C1
$CSVMultiLine |ConvertTo-Html -As Table -Head $style |Set-Content .pathtoreport.html
white-space: pre
将按原样呈现换行,vertical-align: top
确保每列的第一行始终对齐。根据需要添加您自己的样式。