值不显示在下一行



我正试图用表中的一些内容来实现输出。在我看来一切都很好,但我面临的唯一问题是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确保每列的第一行始终对齐。根据需要添加您自己的样式。

相关内容

  • 没有找到相关文章

最新更新