-
Notifications
You must be signed in to change notification settings - Fork 410
/
Copy pathNew-PivotTableDefinition.ps1
77 lines (74 loc) · 3.25 KB
/
New-PivotTableDefinition.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
function New-PivotTableDefinition {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '',Justification='Does not change system State')]
param(
[Parameter(Mandatory)]
[Alias("PivtoTableName")]#Previous typo - use alias to avoid breaking scripts
$PivotTableName,
$SourceWorksheet,
$SourceRange,
$PivotRows,
[hashtable]$PivotData,
$PivotColumns,
$PivotFilter,
[Switch]$PivotDataToColumn,
[ValidateSet("Both", "Columns", "Rows", "None")]
[String]$PivotTotals = "Both",
[Switch]$NoTotalsInPivot,
[String]$GroupDateRow,
[String]$GroupDateColumn,
[OfficeOpenXml.Table.PivotTable.eDateGroupBy[]]$GroupDatePart,
[String]$GroupNumericRow,
[String]$GroupNumericColumn,
[double]$GroupNumericMin = 0 ,
[double]$GroupNumericMax = [Double]::MaxValue ,
[double]$GroupNumericInterval = 100 ,
[string]$PivotNumberFormat,
[OfficeOpenXml.Table.TableStyles]$PivotTableStyle,
[Parameter(ParameterSetName = 'ChartbyDef', Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
$PivotChartDefinition,
[Parameter(ParameterSetName = 'ChartbyParams')]
[Switch]$IncludePivotChart,
[Parameter(ParameterSetName = 'ChartbyParams')]
[String]$ChartTitle,
[Parameter(ParameterSetName = 'ChartbyParams')]
[int]$ChartHeight = 400 ,
[Parameter(ParameterSetName = 'ChartbyParams')]
[int]$ChartWidth = 600,
[Parameter(ParameterSetName = 'ChartbyParams')]
[Int]$ChartRow = 0 ,
[Parameter(ParameterSetName = 'ChartbyParams')]
[Int]$ChartColumn = 4,
[Parameter(ParameterSetName = 'ChartbyParams')]
[Int]$ChartRowOffSetPixels = 0 ,
[Parameter(ParameterSetName = 'ChartbyParams')]
[Int]$ChartColumnOffSetPixels = 0,
[Parameter(ParameterSetName = 'ChartbyParams')]
[OfficeOpenXml.Drawing.Chart.eChartType]$ChartType = 'Pie',
[Parameter(ParameterSetName = 'ChartbyParams')]
[Switch]$NoLegend,
[Parameter(ParameterSetName = 'ChartbyParams')]
[Switch]$ShowCategory,
[Parameter(ParameterSetName = 'ChartbyParams')]
[Switch]$ShowPercent,
[switch]$Activate
)
$validDataFuntions = [system.enum]::GetNames([OfficeOpenXml.Table.PivotTable.DataFieldFunctions])
if ($PivotData.values.Where( {$_ -notin $validDataFuntions}) ) {
Write-Warning -Message ("Pivot data functions might not be valid, they should be one of " + ($validDataFuntions -join ", ") + ".")
}
$parameters = @{} + $PSBoundParameters
if ($NoTotalsInPivot) {
$parameters.Remove('NoTotalsInPivot')
$parameters["PivotTotals"] = "None"
}
if ($PSBoundParameters.ContainsKey('ChartType') -and -not $PSBoundParameters.ContainsKey('IncludePivotChart')) {
$parameters['IncludePivotChart'] = $true
}
$parameters.Remove('PivotTableName')
if ($PivotChartDefinition) {
$parameters.PivotChartDefinition.XRange = $null
$parameters.PivotChartDefinition.YRange = $null
$parameters.PivotChartDefinition.SeriesHeader = $null
}
@{$PivotTableName = $parameters}
}