2016-04-07 15 views
0

私はpowershellを介してcsvファイルへのデータ出力を行っています。一般的にはうまくいく。Excelのcom-object via powershell

私はcsvファイルにデータをエクスポートしました。それは約10列を含んでいます。 MS Excelで開くと、最初の列にすべて含まれています。 PowerShell(同じGUIバージョンのオファー)を使用してプログラムでいくつかの列で分割したいと思います。私はループを作り、すべての行を分割し、適切なセルに値を入れることができますが、それはあまりにも時間がかかるでしょう。

1つの列を複数に分割するための洗練されたソリューションがあるはずです。ループを起こさずに簡単なステップでそれを作る方法はありますか?

これは私がこれまでに思い付いたものです:

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 

enter image description here

+0

でテストは、ファイルを見ていますか? (コンマ区切りの列、行の区切り行)。 datagridviewsの出力がどのようなものかわからないので、私はExcelが好きな 'Export-Csv'を使う傾向があります。 – gms0ulman

+0

私たちはそれを再現できるようにあなたのcsvファイルを表示します... – Avshalom

+0

私は元の投稿を更新しました。 CSVファイルはその理由ではありません。それは正しい構造とすべてを持っています。開いたときに、指定した区切り文字で列を分割するオプションを使用する必要があります。 –

答えて

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を作成する必要がありました。 ","のファイルは優れていました。

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

+0

これは私が探していたものです。どうもありがとう! –