通过powershell的Excel com-object

时间:2016-04-07 08:50:20

标签: excel csv powershell com

我正在通过powershell将数据输出到csv文件。一般情况都很顺利。

我已将数据导出到csv文件。它包含大约10列。当我用MS Excel打开它时,它们都包含在第一列中。我想通过powershell以编程方式将它分成几列(相同的GUI版本提供)。我可以进行循环和填充以分割每一行,然后将值放到适当的单元格中,但这会花费太多时间。

我相信应该有一个优雅的解决方案,使一列拆分为多个。有没有办法在没有循环的情况下在一个简单的步骤中完成它?

这是我到目前为止所提出的:

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

这将为您提供所需的功能;添加到您的代码中。有关TextToColumns的更多信息,请查看the MSDN page

# 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()

我必须创建一个以"",""作为分隔符的CSV来测试它。 ","的文件在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"

免责声明:使用$ws = $wb.Worksheets.item(1)

进行测试