mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-06 00:23:20 +00:00
works with multiple sheets
This commit is contained in:
@@ -1,25 +1,37 @@
|
||||
"To ship, is to choose"
|
||||
# To ship, is to choose
|
||||
|
||||
ipmo .\ImportExcel.psd1 -Force
|
||||
|
||||
$file = "c:\temp\testPT.xlsx"
|
||||
rm $file -ErrorAction Ignore
|
||||
|
||||
$pt=[ordered]@{}
|
||||
|
||||
$pt.PT1=@{
|
||||
|
||||
SourceWorkSheet='Sheet1'
|
||||
PivotRows = "Status"
|
||||
PivotData= @{'Status'='count'}
|
||||
IncludePivotChart=$true
|
||||
ChartType='BarClustered3D'
|
||||
}
|
||||
|
||||
$pt.PT2=@{
|
||||
PivotRows = "StartType"
|
||||
PivotData= @{'StartType'='count'}
|
||||
SourceWorkSheet='Sheet2'
|
||||
PivotRows = "Company"
|
||||
PivotData= @{'Company'='count'}
|
||||
IncludePivotChart=$true
|
||||
ChartType='PieExploded3D'
|
||||
}
|
||||
|
||||
$gsv=Get-Service | Select-Object status, Name, displayName, starttype
|
||||
$ps=Get-Process | Select-Object Name,Company, Handles
|
||||
|
||||
$file = "c:\temp\testPT.xlsx"
|
||||
rm $file -ErrorAction Ignore
|
||||
|
||||
$gsv| Export-Excel -Path $file -AutoSize
|
||||
$ps | Export-Excel -Path $file -AutoSize -WorkSheetname Sheet2 -PivotTableDefinition $pt -Show
|
||||
|
||||
return
|
||||
Get-Service |
|
||||
select status, Name, displayName, starttype |
|
||||
Export-Excel -Path $file -Show -PivotTable $pt -AutoSize
|
||||
Export-Excel -Path $file -Show -PivotTable $pt -AutoSize
|
||||
@@ -263,6 +263,14 @@ Function Export-Excel {
|
||||
)
|
||||
|
||||
Begin {
|
||||
function Find-WorkSheet {
|
||||
param (
|
||||
$WorkSheetName
|
||||
)
|
||||
|
||||
$pkg.Workbook.Worksheets | Where-Object {$_.name -match $WorkSheetName}
|
||||
}
|
||||
|
||||
Function Add-CellValue {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
@@ -539,7 +547,20 @@ Function Export-Excel {
|
||||
$pivotTableName = $targetName + 'PivotTable'
|
||||
$wsPivot = $pkg | Add-WorkSheet -WorkSheetname $pivotTableName -NoClobber:$NoClobber
|
||||
$pivotTableDataName = $targetName + 'PivotTableData'
|
||||
$pivotTable = $wsPivot.PivotTables.Add($wsPivot.Cells['A1'], $ws.Cells[$dataRange], $pivotTableDataName)
|
||||
|
||||
if (!$item.Value.SourceWorkSheet) {
|
||||
$pivotTable = $wsPivot.PivotTables.Add($wsPivot.Cells['A1'], $ws.Cells[$dataRange], $pivotTableDataName)
|
||||
}
|
||||
else {
|
||||
$workSheet = Find-WorkSheet $item.Value.SourceWorkSheet
|
||||
|
||||
if($workSheet) {
|
||||
$targetStartAddress = $workSheet.Dimension.Start.Address
|
||||
$targetDataRange = "{0}:{1}" -f $targetStartAddress, $workSheet.Dimension.End.Address
|
||||
|
||||
$pivotTable = $wsPivot.PivotTables.Add($wsPivot.Cells['A1'], $workSheet.Cells[$targetDataRange], $pivotTableDataName)
|
||||
}
|
||||
}
|
||||
|
||||
switch ($item.Value.Keys) {
|
||||
"PivotRows" {
|
||||
@@ -575,17 +596,14 @@ Function Export-Excel {
|
||||
}
|
||||
|
||||
"IncludePivotChart" {
|
||||
$ChartType = "Pie"
|
||||
if ($item.Value.ChartType) {
|
||||
$ChartType = $item.Value.ChartType
|
||||
}
|
||||
|
||||
$chart = $wsPivot.Drawings.AddChart('PivotChart', $ChartType, $pivotTable)
|
||||
#$chart.DataLabel.ShowCategory = $ShowCategory
|
||||
#$chart.DataLabel.ShowPercent = $ShowPercent
|
||||
|
||||
#if ($NoLegend) {
|
||||
# $chart.Legend.Remove()
|
||||
#}
|
||||
|
||||
$chart.SetPosition(1, 0, 6, 0)
|
||||
$chart.SetPosition(1, 0, 3, 0)
|
||||
$chart.SetSize(600, 400)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -640,8 +658,6 @@ Function Export-Excel {
|
||||
$chart.Legend.Remove()
|
||||
}
|
||||
|
||||
$chart.SetPosition(1, 0, 6, 0)
|
||||
$chart.SetSize(600, 400)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -788,4 +804,4 @@ Function Export-Excel {
|
||||
throw "Failed exporting worksheet '$WorkSheetname' to '$Path': $_"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user