【问题标题】:Delete extra columns of table before exporting to Excel在导出到 Excel 之前删除表格的额外列
【发布时间】:2019-07-17 21:40:20
【问题描述】:

我有一个 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

此导出的输出如下所示:

我只需要 A - G 列。如何去掉其他列?

【问题讨论】:

    标签: excel powershell


    【解决方案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 ...
    

    【讨论】:

    • 对不起 Ansgar,我没有看到你在我做之前已经发布了答案。我将删除我的答案,因为它与您的第二个选项相同。
    • @Theo 别担心。用户界面有一些延迟,所以这些事情时有发生。
    • 完美非常感谢
    • 为什么不$ResultsTable |Select-Object $ResultsTable.Columns.ColumnName | ...
    • @MathiasR.Jessen 因为我一般不熟悉数据表的复杂细节? ;)
    猜你喜欢
    • 2013-01-09
    • 2021-10-24
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多