在导出到Excel之前,请删除表的多余列

时间:2019-07-17 12:56:01

标签: excel powershell

我有一个PowerShell脚本,该脚本运行一些API请求,然后将有关测试的信息导出到excel中。

当我创建表时,我为结果添加了一对列。但是,当我通过Excel导出表格时,我不需要一堆额外的列。

$ResultsTable = New-Object System.Data.DataTable "ResultsTable"

$RTC1 = New-Object system.Data.DataColumn "Type",([string])
$RTC2 = New-Object system.Data.DataColumn "Endpoint",([string])
$RTC3 = New-Object system.Data.DataColumn "PassRate",([string])
$RTC4 = New-Object system.Data.DataColumn "AvgTime",([string])
$RTC5 = New-Object system.Data.DataColumn "MaxTime",([string])
$RTC6 = New-Object system.Data.DataColumn "AvgSize",([string])
$RTC7 = New-Object system.Data.DataColumn "MaxSize",([string])

$ResultsTable.Columns.Add($RTC1)
$ResultsTable.Columns.Add($RTC2)
$ResultsTable.Columns.Add($RTC3)
$ResultsTable.Columns.Add($RTC4)
$ResultsTable.Columns.Add($RTC5)
$ResultsTable.Columns.Add($RTC6)
$ResultsTable.Columns.Add($RTC7)

$Row = $ResultsTable.NewRow()
$Row.Type = "Direct"
$Row.Endpoint = $Uri
$Row.PassRate = "$PassRate%"
$Row.AvgTime = $AvgTime
$Row.MaxTime = $MaxTime
$Row.AvgSize = $AvgSize
$Row.MaxTime = $MaxSize
$ResultsTable.Rows.Add($Row)

$ResultsTable | Export-Excel -Path ".\Output\Unit\API.Customer.Unit.Tests - $DateTime.xlsx" `
    -AutoSize `
    -WorksheetName "Results" `
    -Title "Results Table" `
    -TitleBold `
    -BoldTopRow `
    -FreezeTopRow

此导出的输出如下:

enter image description here

我只需要A至G列。如何摆脱其他列?

1 个答案:

答案 0 :(得分:1)

选择要保留的列:

$ResultsTable |
    Select-Object Type, Endpoint, PassRate, AvgTime, MaxTime, AvgSize, MaxSize |
    Export-Excel ...

或删除您不想保留的列:

$ResultsTable |
    Select-Object -Property * -Exclude RowError, RowState, Table, ItemArray, HasErrors |
    Export-Excel ...

如果您知道始终总是需要表中定义的列,则也可以直接引用它们:

$ResultsTable |
    Select-Object -Property $ResultsTable.Columns.ColumnName |
    Export-Excel ...