2017-06-30 194 views
0

我有一個.csv文件,我想從一列中獲取所有數據並使用powershell生成一個數據透視表。本專欄中有許多重複內容,我想知道每個項目有多少個。附件是我想通過PowerShell而不是手動在Excel中完成的圖像。第一幅圖像是示例數據,第二幅圖像是我想從數據中產生的圖像。感謝您的幫助:)使用PowerShell從.csv中的數據創建數據透視表

DataResult

回答

3

道格·芬克做了精彩PowerShell的模塊調用Import-Excel您可以get here.

如果你在PowerShell的v5或更高版本,可以像這樣安裝:

Install-Module ImportExcel -scope CurrentUser 

該模塊包含一些真棒透視功能,這裏有一個例子:

Get-Service | 
    Export-Excel "c:\temp\test2.xlsx" ` 
     -Show ` 
     -IncludePivotTable ` 
     -IncludePivotChart ` 
     -PivotRows status ` 
     -PivotData @{status='count'} 

enter image description here

我沒有訪問源數據,但你可以運行這樣的事情:

Import-CSV C:\yourPath\YourFile.csv | Export-Excel "c:\temp\OSReport.xlsx" ` 
    -Show ` 
    -IncludePivotTable ` 
    -IncludePivotChart ` 
    -PivotRows 'Operating System' ` 
    -PivotData @{'Operating System'='count'} 

我只是嘲笑了一些操作系統計數的文件,並通過該代碼運行它。結果如下。

If you have this many Windows 98 machines...seek new employment or give me a call to come help you fix it!

我希望這可以讓你在正確的方向前進!

有關此工具的重要說明:,則必須在每次運行Export-Excel時間提供新的文件名,或者它拋出一個醜陋的錯誤消息。可以編寫腳本刪除文件,或者每次更改文件名以避免它。

+0

謝謝FoxDeploy,我的工作方式是如何:) –

0

我不能看到這些圖片,但它應該是這樣的

$list = Import-Csv -Path P:\ath\to\file.csv -Delimiter ";" 
$duplicates = ($list | Group-Object -Property <ColumName>).Where({ $_.Count -gt 1 }) 

與您要搜索的列的名稱替換重複。

您所需要的兩個主要功能是Import-Csv & Group-Object

考慮,即進口-CSV陣列中的創建PSCustomObjects並在colums第一行是他們的財產。

所以,如果你有一個像一個CSV文件:

Column1;Column2;Column3 
foo;bar;baz 
baz;bar:foo 

你必須PSCustomObjects withs列1,列2,欄3爲屬性的數組。如果您的csv文件在第一行沒有列名,您可以使用帶有參數-Header ColumName的Import-Csv。

總之,你想要做的是一個簡單的工作,剛剛看了一下我聯繫的功能,你會做:)

格爾茨Eldo.O