使用 PowerShell 从 .csv 中的数据创建数据透视表 Table
Create Pivot Table from data in .csv using PowerShell
我有一个 .csv 文件,我想从一列中获取所有数据并使用 powershell 生成一个数据透视表 table。这个栏目有很多重复项,我想看看每个项目有多少。附件是我想通过 powershell 而不是在 excel 中手动完成的图像。第一张图片是示例数据,第二张图片是我想从数据中生成的。感谢您的帮助:)
Data Result
我看不到那些图片,但应该是这样的
$list = Import-Csv -Path P:\ath\to\file.csv -Delimiter ";"
$duplicates = ($list | Group-Object -Property <ColumName>).Where({ $_.Count -gt 1 })
将 替换为您要搜索重复项的列的名称。
您需要的 2 个主要功能是 Import-Csv & Group-Object
考虑一下,Import-Csv 在数组中创建 PSCustomObjects,列中的第一行是它们的属性。
所以如果你有一个像这样的 csv 文件:
Column1;Column2;Column3
foo;bar;baz
baz;bar:foo
您将拥有一个包含 Column1、Column2、Column3 作为属性的 PSCustomObjects 数组。如果您的 csv 文件在第一行中没有列名,您可以使用带有参数 -Header ColumName 的 Import-Csv。
总而言之,您要做的是一项简单的工作,只需阅读我链接的函数,您就可以做到:)
你好Eldo.O
Doug Finke 制作了一个很棒的 PowerShell 模块,名为 Import-Excel
,您可以 get here.
如果您使用的是 PowerShell v5 或更高版本,您可以像这样安装它:
Install-Module ImportExcel -scope CurrentUser
这个模块有一些很棒的 Pivot 函数,下面是一个例子:
Get-Service |
Export-Excel "c:\temp\test2.xlsx" `
-Show `
-IncludePivotTable `
-IncludePivotChart `
-PivotRows status `
-PivotData @{status='count'}
我无权访问您的源数据,但您可以运行像这样:
Import-CSV C:\yourPath\YourFile.csv | Export-Excel "c:\temp\OSReport.xlsx" `
-Show `
-IncludePivotTable `
-IncludePivotChart `
-PivotRows 'Operating System' `
-PivotData @{'Operating System'='count'}
我只是用一些 OS 计数和 运行 通过该代码模拟了一个文件。这是结果。
我希望这能让你朝着正确的方向前进!
有关此工具的重要说明:,每次 运行 Export-Excel
时都必须提供新的文件名,否则它会抛出丑陋的错误消息.要么编写删除文件的脚本,要么每次都更改文件名以避免它。
我有一个 .csv 文件,我想从一列中获取所有数据并使用 powershell 生成一个数据透视表 table。这个栏目有很多重复项,我想看看每个项目有多少。附件是我想通过 powershell 而不是在 excel 中手动完成的图像。第一张图片是示例数据,第二张图片是我想从数据中生成的。感谢您的帮助:)
Data Result
我看不到那些图片,但应该是这样的
$list = Import-Csv -Path P:\ath\to\file.csv -Delimiter ";"
$duplicates = ($list | Group-Object -Property <ColumName>).Where({ $_.Count -gt 1 })
将 替换为您要搜索重复项的列的名称。
您需要的 2 个主要功能是 Import-Csv & Group-Object
考虑一下,Import-Csv 在数组中创建 PSCustomObjects,列中的第一行是它们的属性。
所以如果你有一个像这样的 csv 文件:
Column1;Column2;Column3
foo;bar;baz
baz;bar:foo
您将拥有一个包含 Column1、Column2、Column3 作为属性的 PSCustomObjects 数组。如果您的 csv 文件在第一行中没有列名,您可以使用带有参数 -Header ColumName 的 Import-Csv。
总而言之,您要做的是一项简单的工作,只需阅读我链接的函数,您就可以做到:)
你好Eldo.O
Doug Finke 制作了一个很棒的 PowerShell 模块,名为 Import-Excel
,您可以 get here.
如果您使用的是 PowerShell v5 或更高版本,您可以像这样安装它:
Install-Module ImportExcel -scope CurrentUser
这个模块有一些很棒的 Pivot 函数,下面是一个例子:
Get-Service |
Export-Excel "c:\temp\test2.xlsx" `
-Show `
-IncludePivotTable `
-IncludePivotChart `
-PivotRows status `
-PivotData @{status='count'}
我无权访问您的源数据,但您可以运行像这样:
Import-CSV C:\yourPath\YourFile.csv | Export-Excel "c:\temp\OSReport.xlsx" `
-Show `
-IncludePivotTable `
-IncludePivotChart `
-PivotRows 'Operating System' `
-PivotData @{'Operating System'='count'}
我只是用一些 OS 计数和 运行 通过该代码模拟了一个文件。这是结果。
我希望这能让你朝着正确的方向前进!
有关此工具的重要说明:,每次 运行 Export-Excel
时都必须提供新的文件名,否则它会抛出丑陋的错误消息.要么编写删除文件的脚本,要么每次都更改文件名以避免它。