我必须将结果导出到Excel表中,但所有内容都在一个单元格中。我想要一个包含列和行的表。
当前的Excel文件(Excel表格):
Column1 Column2 Column3 Column4 infra-12 infra-88 infra-52 infra-55 infra-2 infra-3 infra-2 infra-12 infra-8 infra-71 infra-45 infra-71 infra-45 infra-2 infra-3 infra-52 infra-3 infra-27 infra-99 infra-2
没有导出的输出(在PowerShell ISE中):
Column1 Column2 Column3 Column4 ------- ------- ------- ------- infra-12 infra-88 infra-52 infra-55 infra-2 infra-71 infra-99 infra-71 infra-8 infra-27 infra-52 infra-45 infra-3
当我在Excel表格中导出时(这是在表格中,所有内容都在一个单元格中):
Column1,"Column2","Column3","Column4" infra-12,"infra-88","infra-52","infra-55" infra-2,"infra-71","infra-99","infra-71" infra-8,"infra-27",,"infra-52" infra-45,,, infra-3,,,
代码:
$csv = Import-Csv .\test1.csv -Delimiter ';'
$ref = [ordered]@{}
$columns = foreach ($i in 0..7) { ,[Collections.ArrayList]@() }
foreach ($row in $csv) {
$value = $row.Column1
$ref[$value] = $true
$columns[0].add($value) >$null
}
foreach ($row in $csv) {
$i = 1
foreach ($col in 'Column2', 'Column3', 'Column4') {
$value = $row.$col
if (!$ref[$value]) {
$columns[$i].add($value) >$null
}
$i++
}
}
$maxLine = ($columns | select -expand Count | measure -Maximum).Maximum - 1
$csv = foreach ($i in 0..$maxLine) {
[PSCustomObject]@{
Column1 = $columns[0][$i]
Column2 = $columns[1][$i]
Column3 = $columns[2][$i]
Column4 = $columns[3][$i]
}
}
$csv | Export-CSV -Path ".\test1.csv" -NoTypeInformation
代码允许删除匹配(相同值)的单元格并显示其他单元格。
当我使用以下分隔符时:
$ csv | Export-CSV -Path"。\ test3.csv" -NoTypeInformation -Delimiter","
Column1,"Column2","Column3","Column4" ,,, ,,, ,,, ,,,
使用另一个分隔符:
$csv | Export-CSV -Path ".\test1.csv" -NoTypeInformation -Delimiter "`t"
"Column1 ""Column2"" ""Column3"" ""Column4""" "infra-5 ""infra-7"" ""infra-9"" ""infra-2""" "infra-1 ""infra-3"" ""infra-7"" " "infra-4 " "infra-8 "
我必须在我的脚本中导入文件,然后将输出导出到csv文件中,在本例中为Excel表格。
csv文件(Excel表格)中的预期结果:
Column1 Column2 Column3 Column4 infra-12 infra-88 infra-52 infra-55 infra-2 infra-71 infra-99 infra-71 infra-8 infra-27 infra-52 infra-45 infra-3
如果需要,我还可以将文件扩展名转换为xlsx或xls。
答案 0 :(得分:1)
这听起来像是你可能正在使用非CSV格式在Excel中打开文件。在某些语言环境中,,
被视为小数分隔符,Excel将默认为TSV加载文件。
要解决此问题,您可以使用数据标签中的Text Import Wizard 从文件导入。这将允许您选择适合您需要的分隔符(在您的情况下为,
/逗号)并且应该可以成功运行。
从文档中引用:
第2步(共3个)(定界数据)
分隔符选择用于分隔文本文件中值的字符。如果未列出该字符,请选中“其他”复选框,然后在包含光标的框中键入该字符。如果您的数据类型是固定宽度,则这些选项不可用。
答案 1 :(得分:0)
为了得到预期的结果我已经用过了:
$csv | Export-CSV -Path ".\test1.csv" -NoTypeInformation -Delimiter ";"