2017-06-30 97 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