Cleaned up error checking for worksheet replacement

This commit is contained in:
Justin Dearing
2015-06-14 04:51:38 -04:00
parent 7e112b1e2c
commit fdc2b8a9df
2 changed files with 35 additions and 19 deletions

View File

@@ -88,6 +88,28 @@ function Export-ExcelSheet {
$xl.Dispose()
}
function Add-WorkSheet {
param(
#TODO Use parametersets to allow a workbook to be passed instead of a package
[Parameter(Mandatory=$true, ValueFromPipeline=$true)]
[OfficeOpenXml.ExcelPackage] $ExcelPackage,
[Parameter(Mandatory=$true)]
[string] $WorkSheetname,
[Switch] $NoClobber
)
if($ExcelPackage.Workbook.Worksheets[$WorkSheetname]) {
if($NoClobber) {
$AlreadyExists = $true
Write-Error "Worksheet `"$WorkSheetname`" already exists."
} else {
Write-Debug "Worksheet `"$WorkSheetname`" already exists. Deleting"
$ExcelPackage.Workbook.Worksheets.Delete($WorkSheetname)
}
}
$ExcelPackage.Workbook.Worksheets.Add($WorkSheetname)
}
function Export-Excel {
<#
.Synopsis
@@ -124,24 +146,19 @@ function Export-Excel {
[Switch]$NoClobber,
[Switch]$FreezeTopRow,
[Switch]$AutoFilter,
[Switch]$BoldTopRow
[Switch]$BoldTopRow,
[string]$RangeName
)
Begin {
try {
$Path = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path)
if (Test-Path $path) {
Write-Debug "File `"$Path`" already exists"
}
$pkg = New-Object OfficeOpenXml.ExcelPackage $Path
if($pkg.Workbook.Worksheets[$WorkSheetname]) {
if($NoClobber) {
$AlreadyExists = $true
throw ""
} else {
$pkg.Workbook.Worksheets.delete($WorkSheetname)
}
}
$ws = $pkg.Workbook.Worksheets.Add($WorkSheetname)
$ws = $pkg | Add-WorkSheet -WorkSheetname $WorkSheetname -NoClobber:$NoClobber
$Row = 1
if($Title) {
@@ -196,19 +213,20 @@ function Export-Excel {
}
End {
$startAddress=$ws.Dimension.Start.Address
$dataRange="{0}:{1}" -f $startAddress, $ws.Dimension.End.Address
Write-Debug "Data Range $dataRange"
if($IncludePivotTable) {
$pivotTableName = $WorkSheetname + "PivotTable"
$wsPivot = $pkg.Workbook.Worksheets.Add($pivotTableName)
$wsPivot = $pkg | Add-WorkSheet -WorkSheetname $pivotTableName -NoClobber:$NoClobber
$wsPivot.View.TabSelected = $true
$pivotTableDataName=$WorkSheetname + "PivotTableData"
$startAddress=$ws.Dimension.Start.Address
if($Title) {$startAddress="A2"}
$range="{0}:{1}" -f $startAddress, $ws.Dimension.End.Address
$pivotTable = $wsPivot.PivotTables.Add($wsPivot.Cells["A1"], $ws.Cells[$range], $pivotTableDataName)
$pivotTable = $wsPivot.PivotTables.Add($wsPivot.Cells["A1"], $ws.Cells[$dataRange], $pivotTableDataName)
if($PivotRows) {
foreach ($Row in $PivotRows) {
@@ -238,9 +256,7 @@ function Export-Excel {
if($Password) { $ws.Protection.SetPassword($Password) }
if($AutoFilter) {
$startAddress=$ws.Dimension.Start.Address
$range="{0}:{1}" -f $startAddress, $ws.Dimension.End.Address
$ws.Cells[$range].AutoFilter=$true
$ws.Cells[$dataRange].AutoFilter=$true
}
if($FreezeTopRow) {

BIN
foo.xlsx Normal file

Binary file not shown.