Excel 通过 powershell 的 com 对象

Excel com-object via powershell

我正在通过 powershell 将数据输出到 csv 文件。总体来说一切顺利。

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

我相信应该有一个优雅的解决方案来将一列拆分为多列。有没有办法一步到位,不用循环?

这是我到目前为止想出的:

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

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

$col = $ws.Cells.Item(1,1).EntireColumn

这将为您提供所需的功能;添加到您的代码。查看 the MSDN page 了解有关 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()

我必须创建一个以 "","" 作为分隔符的 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)