forked from dfinke/ImportExcel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Charting.ps1
108 lines (91 loc) · 2.94 KB
/
Charting.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
function DoChart {
param(
$targetData,
$title,
[OfficeOpenXml.Drawing.Chart.eChartType]$ChartType,
[Switch]$NoLegend,
[Switch]$ShowCategory,
[Switch]$ShowPercent
)
if($targetData[0] -is [System.ValueType]) {
$chart = New-ExcelChart -YRange "A1:A$($targetData.count)" -Title $title -ChartType $ChartType
} else {
$xyRange = Get-XYRange $targetData
$X = $xyRange.XRange.ExcelColumn
$XRange = "{0}2:{0}{1}" -f $X,($targetData.count+1)
$Y = $xyRange.YRange.ExcelColumn
$YRange = "{0}2:{0}{1}" -f $Y,($targetData.count+1)
$chart = New-ExcelChart -XRange $xRange -YRange $yRange -Title $title -ChartType $ChartType `
-NoLegend:$NoLegend -ShowCategory:$ShowCategory -ShowPercent:$ShowPercent
}
$xlFile = [System.IO.Path]::GetTempFileName() -replace "tmp","xlsx"
$targetData | Export-Excel $xlFile -ExcelChartDefinition $chart -Show -AutoSize
}
function BarChart {
param(
[Parameter(ValueFromPipeline=$true)]
$targetData,
$title,
[OfficeOpenXml.Drawing.Chart.eChartType]$ChartType="BarStacked",
[Switch]$NoLegend,
[Switch]$ShowCategory,
[Switch]$ShowPercent
)
Begin { $data = @() }
Process { $data += $targetData}
End {
DoChart $data $title -ChartType $ChartType `
-NoLegend:$NoLegend -ShowCategory:$ShowCategory -ShowPercent:$ShowPercent
}
}
function PieChart {
param(
[Parameter(ValueFromPipeline=$true)]
$targetData,
$title,
[OfficeOpenXml.Drawing.Chart.eChartType]$ChartType="PieExploded3D",
[Switch]$NoLegend,
[Switch]$ShowCategory,
[Switch]$ShowPercent
)
Begin { $data = @() }
Process { $data += $targetData}
End {
DoChart $data $title -ChartType $ChartType `
-NoLegend:$NoLegend -ShowCategory:$ShowCategory -ShowPercent:$ShowPercent
}
}
function LineChart {
param(
[Parameter(ValueFromPipeline=$true)]
$targetData,
$title,
[OfficeOpenXml.Drawing.Chart.eChartType]$ChartType="Line",
[Switch]$NoLegend,
[Switch]$ShowCategory,
[Switch]$ShowPercent
)
Begin { $data = @() }
Process { $data += $targetData}
End {
DoChart $data $title -ChartType $ChartType `
-NoLegend:$NoLegend -ShowCategory:$ShowCategory -ShowPercent:$ShowPercent
}
}
function ColumnChart {
param(
[Parameter(ValueFromPipeline=$true)]
$targetData,
$title,
[OfficeOpenXml.Drawing.Chart.eChartType]$ChartType="ColumnStacked",
[Switch]$NoLegend,
[Switch]$ShowCategory,
[Switch]$ShowPercent
)
Begin { $data = @() }
Process { $data += $targetData}
End {
DoChart $data $title -ChartType $ChartType `
-NoLegend:$NoLegend -ShowCategory:$ShowCategory -ShowPercent:$ShowPercent
}
}