mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-06 00:23:20 +00:00
Changed Export-Excel.ps1 #1 @ Line 197 Made new parameter sets . Default, and table already existed and use path. Added DefaultPackage and TablePackage A New parameter "Package" allows an ExcelPackage object returned by -passThru to be passed in ~Line 400 code to use package or path depending on path passed. (also added Open-ExcelPackage to get the object without exporting and Close-ExcelPackage to close it nicely - these are in their own file) #2. @ Line 256 added new parameter excludeProperty to remove unwanted properties without needing to go through select-object ~Line 459 added logic to exclude the properties specified in the new parameter #3 . @ Line 262 Added new parameter Append ~Line 420 code to read the existing headers and move the insertion point below the current data (normal behaviour is to check if headers exist when adding data in the process block, which makes this change wonderfully easy) ~Line 510 changed basis for identifying named ranges and changed scope for rangeName so it can be used on other sheets #4. ~Line 550. Remove any existing Pivot table before trying to [re]create it. Added formatting.ps1 which applies conditional and normal formats - requires an ExcelPackage to be open. Added Open-ExcelPackage.ps1 (which contains a close function as well to get the the object and save it ) open allows the sheet to be loaded into a package object without needing to export . Updated .psm1 to add the formating and open/close ps1 files.
50 lines
1.9 KiB
PowerShell
50 lines
1.9 KiB
PowerShell
Function Open-ExcelPackage {
|
|
<#
|
|
.Synopsis
|
|
Returns an Excel Package Object with for the specified XLSX ile
|
|
.Example
|
|
$excel = Open-ExcelPackage -path $xlPath
|
|
$sheet1 = $excel.Workbook.Worksheets["sheet1"]
|
|
set-Format -Address $sheet1.Cells["E1:S1048576"], $sheet1.Cells["V1:V1048576"] -NFormat ([cultureinfo]::CurrentCulture.DateTimeFormat.ShortDatePattern)
|
|
close-ExcelPackage $excel -Show
|
|
|
|
This will open the file at $xlPath, select sheet1 apply formatting to two blocks of the sheet and close the package
|
|
#>
|
|
[OutputType([OfficeOpenXml.ExcelPackage])]
|
|
Param ([Parameter(Mandatory=$true)]$path,
|
|
[switch]$KillExcel)
|
|
|
|
if($KillExcel) {
|
|
Get-Process -Name "excel" -ErrorAction Ignore | Stop-Process
|
|
while (Get-Process -Name "excel" -ErrorAction Ignore) {}
|
|
}
|
|
|
|
$Path = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path)
|
|
if (Test-Path $path) {New-Object -TypeName OfficeOpenXml.ExcelPackage -ArgumentList $Path }
|
|
Else {Write-Warning "Could not find $path" }
|
|
}
|
|
|
|
Function Close-ExcelPackage {
|
|
<#
|
|
.Synopsis
|
|
Closes an Excel Package, saving, saving under a new name or abandoning changes and opening the file as required
|
|
#>
|
|
Param (
|
|
#File to close
|
|
[parameter(Mandatory=$true, ValueFromPipeline=$true)]
|
|
[OfficeOpenXml.ExcelPackage]$ExcelPackage,
|
|
#Open the file
|
|
[switch]$Show
|
|
#Abandon the file without saving
|
|
[Switch]$NoSave,
|
|
#Save file with a new name (ignored if -NoSaveSpecified)
|
|
$SaveAs,
|
|
)
|
|
if ( $NoSave) {$ExcelPackage.Dispose()}
|
|
else {
|
|
if ($SaveAs) {$ExcelPackage.SaveAs( $SaveAs ) }
|
|
Else {$ExcelPackage.Save(); $SaveAs = $ExcelPackage.File.FullName }
|
|
$ExcelPackage.Dispose()
|
|
if ($show) {Start-Process -FilePath $SaveAs }
|
|
}
|
|
} |