From 828b2caf9f5ffd43c7074db4443ef8b0c58669c1 Mon Sep 17 00:00:00 2001 From: Thomas Hofkens Date: Mon, 14 Nov 2022 17:32:39 +0100 Subject: [PATCH] Implement Set Column by range in Add-ExcelTable + simplify adding table from Export-Excel --- Public/Add-ExcelTable.ps1 | 8 +++++--- Public/Export-Excel.ps1 | 14 ++------------ 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/Public/Add-ExcelTable.ps1 b/Public/Add-ExcelTable.ps1 index aee0bcb..232efaf 100644 --- a/Public/Add-ExcelTable.ps1 +++ b/Public/Add-ExcelTable.ps1 @@ -51,7 +51,7 @@ function Add-ExcelTable { } #it seems that show total changes some of the others, so the sequence matters. if ($PSBoundParameters.ContainsKey('ShowHeader')) {$tbl.ShowHeader = [bool]$ShowHeader} - if ($PSBoundParameters.ContainsKey('TableTotalSettings')) { + if ($PSBoundParameters.ContainsKey('TableTotalSettings') -And $Null -ne $TableTotalSettings) { $tbl.ShowTotal = $true foreach ($k in $TableTotalSettings.keys) { @@ -99,10 +99,12 @@ function Add-ExcelTable { # Set comment on totals row If ($TableTotalSettings[$k] -is [HashTable] -and $TableTotalSettings[$k].Keys -contains "Comment" -and ![String]::IsNullOrEmpty($TableTotalSettings[$k]["Comment"])) { + $ColumnLetter = [officeOpenXml.ExcelAddress]::GetAddressCol(($tbl.columns | ? { $_.name -eq $k }).Id, $False) + $CommentRange = "{0}{1}" -f $ColumnLetter, $tbl.Address.End.Row + $CellCommentParams = @{ Worksheet = $tbl.WorkSheet - Row = $tbl.Address.End.Row - ColumnNumber = ($tbl.columns | ? { $_.name -eq $k }).Id + Range = $CommentRange Text = $TableTotalSettings[$k]["Comment"] } diff --git a/Public/Export-Excel.ps1 b/Public/Export-Excel.ps1 index 7d501e0..1a11d46 100644 --- a/Public/Export-Excel.ps1 +++ b/Public/Export-Excel.ps1 @@ -212,12 +212,7 @@ $row ++ $null = $ws.Cells[$row, $StartColumn].LoadFromDataTable($InputObject, $false ) if ($TableName -or $PSBoundParameters.ContainsKey('TableStyle')) { - if ($PSBoundParameters.ContainsKey('TableTotalSettings')) { - Add-ExcelTable -Range $ws.Cells[$ws.Dimension] -TableName $TableName -TableStyle $TableStyle -TableTotalSettings $TableTotalSettings - } - Else { - Add-ExcelTable -Range $ws.Cells[$ws.Dimension] -TableName $TableName -TableStyle $TableStyle - } + Add-ExcelTable -Range $ws.Cells[$ws.Dimension] -TableName $TableName -TableStyle $TableStyle -TableTotalSettings $TableTotalSettings } } else { @@ -430,12 +425,7 @@ if ($null -ne $TableName -or $PSBoundParameters.ContainsKey('TableStyle')) { #Already inserted Excel table if input was a DataTable if ($InputObject -isnot [System.Data.DataTable]) { - if ($PSBoundParameters.ContainsKey('TableTotalSettings')) { - Add-ExcelTable -Range $ws.Cells[$dataRange] -TableName $TableName -TableStyle $TableStyle -TableTotalSettings $TableTotalSettings - } - else { - Add-ExcelTable -Range $ws.Cells[$dataRange] -TableName $TableName -TableStyle $TableStyle - } + Add-ExcelTable -Range $ws.Cells[$dataRange] -TableName $TableName -TableStyle $TableStyle -TableTotalSettings $TableTotalSettings } } elseif ($AutoFilter) {