Implement Set Column by range in Add-ExcelTable + simplify adding table from Export-Excel

This commit is contained in:
Thomas Hofkens
2022-11-14 17:32:39 +01:00
parent f760b63818
commit 828b2caf9f
2 changed files with 7 additions and 15 deletions

View File

@@ -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"]
}

View File

@@ -212,13 +212,8 @@
$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
}
}
}
else {
#Change TableName if $TableName is non-empty; don't leave caller with a renamed table!
@@ -430,13 +425,8 @@
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
}
}
}
elseif ($AutoFilter) {
try {