2012-02-22 10 views
0

私はこのようなコンポーネント名Codecountで構成されてハッシュテーブルを持っている:ハッシュテーブルの名前と値をExcel列にエクスポートする方法は?

Name   Value 
-----   ------ 
Comp1   2000 
Comp2   3000 

それがExcelにエクスポートされている場合は、存在するのは簡単だろう。

このハッシュテーブルをPowerShellからExcelにエクスポートするにはどうすればよいですか?

答えて

7

輸出-CSV

ためのもう一つの投票
&{$hash.getenumerator() | 
    foreach {new-object psobject -Property @{Component = $_.name;Codecount=$_.value}} 
} | export-csv codecounts.csv -notype 
1

使用Export-CSVおよびCSVはハッシュテーブルを検討エクセル

1

でファイルというオープン:

$ht = @{"c1" = 100; "c2" = 200} 

反復すべてのキーを、ファイルにハッシュテーブルのキーと値を追加します。

$ht.keys | % { add-content -path myFile.csv -value $("{0},{1}" -f $_, $ht.Item($_)) } 
+1

ハッシュテーブルのキーに「、」が含まれていると、このソリューションに問題が発生します。 –

5

へExcelファイルを作成するには、次のようなものを使用します。

$ht = @{"comp1"="2000";"comp2"="3000"} 
$excel = new-Object -comobject Excel.Application 
$excel.visible = $true # set it to $false if you don't need monitoring the actions... 
$workBook = $excel.Workbooks.Add() 
$sheet = $workBook.Sheets.Item(1) 
$sheet.Name = "Computers List" 
$sheet.Range("A1","A2").ColumnWidth = 40 
$sheet.range('A:A').VerticalAlignment = -4160 #align is center (TOP -4108 Bottom -4107 Normal) 

$sheet.Cells.Item(1,1) = "Name" 
$sheet.cells.Item(1,2) = "Value" 

$index = 2 

$ht.keys | % { 

    $sheet.Cells.Item($index,1) = $_ 
    $sheet.Cells.Item($index,2) = $ht.item($_) 
    $index++ 
} 

$workBook.SaveAs("C:\mylist.xls") 
$excel.Quit() 
このように、最後のスクリプトの行を

function Release-Ref ($ref) { 

    [System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$ref) | out-null 
    [System.GC]::Collect() 
    [System.GC]::WaitForPendingFinalizers() 
} 

および変更:

は、Excelのプロセスがタスクマネージャで殺されたか、この機能を使用する必要があることを忘れないでください

Release-Ref $workbook 
Release-Ref $sheet 

$excel.Quit() 

release-Ref $excel 
関連する問題