Excel通过PowerShell的COM对象

我正在通过PowerShell的数据输出到CSV文件。 一般情况下进展顺利。

我已经将数据导出到csv文件。 它包含大约10列。 当我用MS Excel打开它时,它都包含在第一列中。 我想通过几个专栏通过PowerShell(相同的GUI版本提供)分割它。 我可以使循环和东西分裂每一行,然后将值放到适当的单元格,但这将花费太多的时间。

我相信应该有一个优雅的解决scheme,使一个列拆分成多个。 有没有办法让它在一个简单的步骤没有循环?

这是我到目前为止:

PS,CSV文件是100%FINE。 分隔符是','

Get-Service | Export-Csv -NoTypeInformation c:\1.csv -Encoding UTF8 $xl = New-Object -comobject Excel.Application $xl.Visible = $true $xl.DisplayAlerts = $False $wb = $xl.Workbooks.Open('c:\1.csv') $ws = $wb.Sheets|?{$_.name -eq '1'} $ws.Activate() $col = $ws.Cells.Item(1,1).EntireColumn 

在这里输入图像说明

这将使您获得所需的function; 添加到您的代码。 查看MSDN页面以获取关于TextToColumns的更多信息。

 # Select column $columnA = $ws.Range("A1").EntireColumn # Enumerations $xlDelimited = 1 $xlTextQualifier = 1 # Convert Text To Columns $columnA.texttocolumns($ws.Range("A1"),$xlDelimited,$xlTextQualifier,$true,$false,$false,$true,$false) $ws.columns.autofit() 

我不得不创build一个带有"",""作为分隔符的CSV来testing。 带有","的文件在excel中很好。

 # Opens with all fields in column A, used to test TextToColumns works "Name,""field1"",""field2"",""field3""" "Test,""field1"",""field.2[]"",""field3""" # Opens fine in Excel Name,"field1","field2","field3" Test,"field1","field.2[]","field3" 

免责声明:testing与$ws = $wb.Worksheets.item(1)