mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-06 00:23:20 +00:00
Better handling of linux autosize issue.
This commit is contained in:
@@ -76,7 +76,7 @@
|
|||||||
.PARAMETER ConditionalText
|
.PARAMETER ConditionalText
|
||||||
Applies a Conditional formatting rule defined with New-ConditionalText. When specific conditions are met the format is applied.
|
Applies a Conditional formatting rule defined with New-ConditionalText. When specific conditions are met the format is applied.
|
||||||
.PARAMETER NoNumberConversion
|
.PARAMETER NoNumberConversion
|
||||||
By default we convert all values to numbers if possible, but this isn't always desirable. NoNumberConversion allows you to add exceptions for the conversion. Wildcards (like '*') are allowed.
|
By default we convert all values to numbers if possible, but this isn't always desirable. NoNumberConversion allows you to add exceptions for the conversion. The only Wildcard allowed is * for all properties
|
||||||
.PARAMETER BoldTopRow
|
.PARAMETER BoldTopRow
|
||||||
Makes the top row boldface.
|
Makes the top row boldface.
|
||||||
.PARAMETER NoHeader
|
.PARAMETER NoHeader
|
||||||
@@ -909,7 +909,7 @@
|
|||||||
}
|
}
|
||||||
catch {Write-Warning -Message "Failed setting the top row to bold in worksheet '$WorksheetName': $_"}
|
catch {Write-Warning -Message "Failed setting the top row to bold in worksheet '$WorksheetName': $_"}
|
||||||
}
|
}
|
||||||
if ($AutoSize) {
|
if ($AutoSize -and ([environment]::OSVersion.Platform -like "win*" -or $env:AUTOSIZE)) {
|
||||||
try {
|
try {
|
||||||
#Don't fit the all the columns in the sheet; if we are adding cells beside things with hidden columns, that unhides them
|
#Don't fit the all the columns in the sheet; if we are adding cells beside things with hidden columns, that unhides them
|
||||||
if ($MaxAutoSizeRows -and $MaxAutoSizeRows -lt $LastRow ) {
|
if ($MaxAutoSizeRows -and $MaxAutoSizeRows -lt $LastRow ) {
|
||||||
@@ -921,6 +921,7 @@
|
|||||||
}
|
}
|
||||||
catch { Write-Warning -Message "Failed autosizing columns of worksheet '$WorksheetName': $_"}
|
catch { Write-Warning -Message "Failed autosizing columns of worksheet '$WorksheetName': $_"}
|
||||||
}
|
}
|
||||||
|
elseif ($AutoSize) {Write-Warning -Message "Auto-fitting columns is not available with this OS configuration." }
|
||||||
|
|
||||||
foreach ($Sheet in $HideSheet) {
|
foreach ($Sheet in $HideSheet) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -512,7 +512,8 @@ Function Merge-MultipleSheets {
|
|||||||
Add-ConditionalFormatting @condFormattingParams -ConditionValue ("AND(" +(($sameChecks -join ",") -replace '<>"Same"','="Changed"') +")" ) -BackgroundColor $ChangeBackgroundColor
|
Add-ConditionalFormatting @condFormattingParams -ConditionValue ("AND(" +(($sameChecks -join ",") -replace '<>"Same"','="Changed"') +")" ) -BackgroundColor $ChangeBackgroundColor
|
||||||
}
|
}
|
||||||
#We've made a bunch of things wider so now is the time to autofit columns. Any hiding has to come AFTER this, because it unhides things
|
#We've made a bunch of things wider so now is the time to autofit columns. Any hiding has to come AFTER this, because it unhides things
|
||||||
$sheet.Cells.AutoFitColumns()
|
if ([environment]::OSVersion.Platform -notlike "win*" -and -not $env:AUTOSIZE) {Write-Warning "Autofit is not available with this OS configuration."}
|
||||||
|
else {$sheet.Cells.AutoFitColumns()}
|
||||||
|
|
||||||
#if we have a key field (we didn't concatenate all fields) use what we built up in $sameChecks to apply conditional formatting to it (Row no will be in column A, Key in Column B)
|
#if we have a key field (we didn't concatenate all fields) use what we built up in $sameChecks to apply conditional formatting to it (Row no will be in column A, Key in Column B)
|
||||||
if ($Key -ne '*') {
|
if ($Key -ne '*') {
|
||||||
|
|||||||
@@ -229,7 +229,7 @@
|
|||||||
}
|
}
|
||||||
else {Write-Warning -Message ("Can set the height of a row or a range but not a {0} object" -f ($Range.GetType().name)) }
|
else {Write-Warning -Message ("Can set the height of a row or a range but not a {0} object" -f ($Range.GetType().name)) }
|
||||||
}
|
}
|
||||||
if ($Autosize) {
|
if ($Autosize -and ([environment]::OSVersion.Platform -like "win*" -or $env:AUTOSIZE)) {
|
||||||
try {
|
try {
|
||||||
if ($Range -is [OfficeOpenXml.ExcelColumn]) {$Range.AutoFit() }
|
if ($Range -is [OfficeOpenXml.ExcelColumn]) {$Range.AutoFit() }
|
||||||
elseif ($Range -is [OfficeOpenXml.ExcelRange] ) {
|
elseif ($Range -is [OfficeOpenXml.ExcelRange] ) {
|
||||||
@@ -240,6 +240,7 @@
|
|||||||
}
|
}
|
||||||
catch {Write-Warning -Message "Failed autosizing columns of worksheet '$WorksheetName': $_"}
|
catch {Write-Warning -Message "Failed autosizing columns of worksheet '$WorksheetName': $_"}
|
||||||
}
|
}
|
||||||
|
elseif ($AutoSize) {Write-Warning -Message "Auto-fitting columns is not available with this OS configuration." }
|
||||||
elseif ($PSBoundParameters.ContainsKey('Width')) {
|
elseif ($PSBoundParameters.ContainsKey('Width')) {
|
||||||
if ($Range -is [OfficeOpenXml.ExcelColumn]) {$Range.Width = $Width}
|
if ($Range -is [OfficeOpenXml.ExcelColumn]) {$Range.Width = $Width}
|
||||||
elseif ($Range -is [OfficeOpenXml.ExcelRange] ) {
|
elseif ($Range -is [OfficeOpenXml.ExcelRange] ) {
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
if (-not (get-command Import-Excel -ErrorAction SilentlyContinue)) {
|
if (-not (get-command Import-Excel -ErrorAction SilentlyContinue)) {
|
||||||
Import-Module $PSScriptRoot\..\ImportExcel.psd1
|
Import-Module $PSScriptRoot\..\ImportExcel.psd1
|
||||||
}
|
}
|
||||||
|
if ($null -eq $IsWindows) {$IsWindows = [environment]::OSVersion.Platform -like "win*"}
|
||||||
|
$WarningAction = "SilentlyContinue"
|
||||||
Describe ExportExcel {
|
Describe ExportExcel {
|
||||||
. "$PSScriptRoot\Samples\Samples.ps1"
|
. "$PSScriptRoot\Samples\Samples.ps1"
|
||||||
if (Get-process -Name Excel,xlim -ErrorAction SilentlyContinue) {
|
if (Get-process -Name Excel,xlim -ErrorAction SilentlyContinue) {
|
||||||
@@ -655,20 +657,21 @@ Describe ExportExcel {
|
|||||||
#Catch warning
|
#Catch warning
|
||||||
$warnvar = $null
|
$warnvar = $null
|
||||||
#Test create two data pages; as part of adding the second give both their own pivot table, test -autosize switch
|
#Test create two data pages; as part of adding the second give both their own pivot table, test -autosize switch
|
||||||
Get-Service | Select-Object -Property Status, Name, DisplayName, StartType, CanPauseAndContinue | Export-Excel -Path $path -AutoSize -TableName "All Services" -TableStyle Medium1 -WarningAction SilentlyContinue -WarningVariable warnvar
|
Get-Service | Select-Object -Property Status, Name, DisplayName, StartType, CanPauseAndContinue | Export-Excel -Path $path -AutoSize -TableName "All Services" -TableStyle Medium1 -WarningVariable warnvar
|
||||||
Get-Process | Select-Object -Property Name, Company, Handles, CPU, VM | Export-Excel -Path $path -AutoSize -WorkSheetname 'sheet2' -TableName "Processes" -TableStyle Light1 -Title "Processes" -TitleFillPattern Solid -TitleBackgroundColor ([System.Drawing.Color]::AliceBlue) -TitleBold -TitleSize 22 -PivotTableDefinition $ptDef
|
Get-Process | Select-Object -Property Name, Company, Handles, CPU, VM | Export-Excel -Path $path -AutoSize -WorkSheetname 'sheet2' -TableName "Processes" -TableStyle Light1 -Title "Processes" -TitleFillPattern Solid -TitleBackgroundColor ([System.Drawing.Color]::AliceBlue) -TitleBold -TitleSize 22 -PivotTableDefinition $ptDef
|
||||||
$Excel = Open-ExcelPackage $path
|
$Excel = Open-ExcelPackage $path
|
||||||
$ws1 = $Excel.Workbook.Worksheets["Sheet1"]
|
$ws1 = $Excel.Workbook.Worksheets["Sheet1"]
|
||||||
$ws2 = $Excel.Workbook.Worksheets["Sheet2"]
|
$ws2 = $Excel.Workbook.Worksheets["Sheet2"]
|
||||||
|
|
||||||
|
if ($isWindows) {
|
||||||
it "Set Column widths (with autosize) " {
|
it "Set Column widths (with autosize) " {
|
||||||
$ws1.Column(2).Width | Should not be $ws1.DefaultColWidth
|
$ws1.Column(2).Width | Should not be $ws1.DefaultColWidth
|
||||||
$ws2.Column(1).width | Should not be $ws2.DefaultColWidth
|
$ws2.Column(1).width | Should not be $ws2.DefaultColWidth
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
it "Added tables to both sheets (handling illegal chars) and a title in sheet 2 " {
|
it "Added tables to both sheets (handling illegal chars) and a title in sheet 2 " {
|
||||||
$warnvar.count | Should be 1
|
$warnvar.count | Should beGreaterThan 0
|
||||||
$ws1.tables.Count | Should be 1
|
$ws1.tables.Count | Should be 1
|
||||||
$ws2.tables.Count | Should be 1
|
$ws2.tables.Count | Should be 1
|
||||||
$ws1.Tables[0].Address.Start.Row | Should be 1
|
$ws1.Tables[0].Address.Start.Row | Should be 1
|
||||||
@@ -723,7 +726,8 @@ Describe ExportExcel {
|
|||||||
#Test freezing top row/first column, adding formats and a pivot table - from Add-Pivot table not a specification variable - after the export
|
#Test freezing top row/first column, adding formats and a pivot table - from Add-Pivot table not a specification variable - after the export
|
||||||
$excel = Get-Process | Select-Object -Property Name, Company, Handles, CPU, PM, NPM, WS | Export-Excel -Path $path -ClearSheet -WorkSheetname "Processes" -FreezeTopRowFirstColumn -PassThru
|
$excel = Get-Process | Select-Object -Property Name, Company, Handles, CPU, PM, NPM, WS | Export-Excel -Path $path -ClearSheet -WorkSheetname "Processes" -FreezeTopRowFirstColumn -PassThru
|
||||||
$sheet = $excel.Workbook.Worksheets["Processes"]
|
$sheet = $excel.Workbook.Worksheets["Processes"]
|
||||||
$sheet.Column(1) | Set-ExcelRange -Bold -AutoFit
|
if ($isWindows) {$sheet.Column(1) | Set-ExcelRange -Bold -AutoFit }
|
||||||
|
else {$sheet.Column(1) | Set-ExcelRange -Bold }
|
||||||
$sheet.Column(2) | Set-ExcelRange -Width 29 -WrapText
|
$sheet.Column(2) | Set-ExcelRange -Width 29 -WrapText
|
||||||
$sheet.Column(3) | Set-ExcelRange -HorizontalAlignment Right -NFormat "#,###"
|
$sheet.Column(3) | Set-ExcelRange -HorizontalAlignment Right -NFormat "#,###"
|
||||||
Set-ExcelRange -Address $sheet.Cells["E1:H1048576"] -HorizontalAlignment Right -NFormat "#,###"
|
Set-ExcelRange -Address $sheet.Cells["E1:H1048576"] -HorizontalAlignment Right -NFormat "#,###"
|
||||||
@@ -734,7 +738,7 @@ Describe ExportExcel {
|
|||||||
$rule = Add-ConditionalFormatting -passthru -Address $sheet.cells["C:C"] -RuleType TopPercent -ConditionValue 20 -Bold -StrikeThru
|
$rule = Add-ConditionalFormatting -passthru -Address $sheet.cells["C:C"] -RuleType TopPercent -ConditionValue 20 -Bold -StrikeThru
|
||||||
Add-ConditionalFormatting -WorkSheet $sheet -Range "G2:G1048576" -RuleType GreaterThan -ConditionValue "104857600" -ForeGroundColor ([System.Drawing.Color]::Red) -Bold -Italic -Underline -BackgroundColor ([System.Drawing.Color]::Beige) -BackgroundPattern LightUp -PatternColor ([System.Drawing.Color]::Gray)
|
Add-ConditionalFormatting -WorkSheet $sheet -Range "G2:G1048576" -RuleType GreaterThan -ConditionValue "104857600" -ForeGroundColor ([System.Drawing.Color]::Red) -Bold -Italic -Underline -BackgroundColor ([System.Drawing.Color]::Beige) -BackgroundPattern LightUp -PatternColor ([System.Drawing.Color]::Gray)
|
||||||
#Test Set-ExcelRange with a column
|
#Test Set-ExcelRange with a column
|
||||||
foreach ($c in 5..9) {Set-ExcelRange $sheet.Column($c) -AutoFit }
|
if ($isWindows) { foreach ($c in 5..9) {Set-ExcelRange $sheet.Column($c) -AutoFit } }
|
||||||
Add-PivotTable -PivotTableName "PT_Procs" -ExcelPackage $excel -SourceWorkSheet 1 -PivotRows Company -PivotData @{'Name' = 'Count'} -IncludePivotChart -ChartType ColumnClustered -NoLegend
|
Add-PivotTable -PivotTableName "PT_Procs" -ExcelPackage $excel -SourceWorkSheet 1 -PivotRows Company -PivotData @{'Name' = 'Count'} -IncludePivotChart -ChartType ColumnClustered -NoLegend
|
||||||
Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -AutoNameRange #Test adding named ranges seperately from adding data.
|
Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -AutoNameRange #Test adding named ranges seperately from adding data.
|
||||||
|
|
||||||
@@ -747,8 +751,10 @@ Describe ExportExcel {
|
|||||||
}
|
}
|
||||||
it "Applied the formating " {
|
it "Applied the formating " {
|
||||||
$sheet | Should not beNullOrEmpty
|
$sheet | Should not beNullOrEmpty
|
||||||
$sheet.Column(1).wdith | Should not be $sheet.DefaultColWidth
|
if ($isWindows) {
|
||||||
$sheet.Column(7).wdith | Should not be $sheet.DefaultColWidth
|
$sheet.Column(1).width | Should not be $sheet.DefaultColWidth
|
||||||
|
$sheet.Column(7).width | Should not be $sheet.DefaultColWidth
|
||||||
|
}
|
||||||
$sheet.Column(1).style.font.bold | Should be $true
|
$sheet.Column(1).style.font.bold | Should be $true
|
||||||
$sheet.Column(2).style.wraptext | Should be $true
|
$sheet.Column(2).style.wraptext | Should be $true
|
||||||
$sheet.Column(2).width | Should be 29
|
$sheet.Column(2).width | Should be 29
|
||||||
@@ -1036,7 +1042,9 @@ Describe ExportExcel {
|
|||||||
$ExcelPackage.File | Should BeLike ([IO.Path]::GetTempPath() + '*')
|
$ExcelPackage.File | Should BeLike ([IO.Path]::GetTempPath() + '*')
|
||||||
$Worksheet.Tables[0].Name | Should Be 'Table1'
|
$Worksheet.Tables[0].Name | Should Be 'Table1'
|
||||||
$Worksheet.AutoFilterAddress | Should BeNullOrEmpty
|
$Worksheet.AutoFilterAddress | Should BeNullOrEmpty
|
||||||
$Worksheet.Column(5).Width | Should BeGreaterThan 9.5
|
if ($isWindows) {
|
||||||
|
$Worksheet.Column(5).Width | Should BeGreaterThan 9.5
|
||||||
|
}
|
||||||
}
|
}
|
||||||
it "Now allows override of Path and TableName".PadRight(87) {
|
it "Now allows override of Path and TableName".PadRight(87) {
|
||||||
$ExcelPackage = $Processes | Export-Excel -Now -PassThru -Path $Path -TableName:$false
|
$ExcelPackage = $Processes | Export-Excel -Now -PassThru -Path $Path -TableName:$false
|
||||||
@@ -1045,7 +1053,9 @@ Describe ExportExcel {
|
|||||||
$ExcelPackage.File | Should Be $Path
|
$ExcelPackage.File | Should Be $Path
|
||||||
$Worksheet.Tables | Should BeNullOrEmpty
|
$Worksheet.Tables | Should BeNullOrEmpty
|
||||||
$Worksheet.AutoFilterAddress | Should BeNullOrEmpty
|
$Worksheet.AutoFilterAddress | Should BeNullOrEmpty
|
||||||
$Worksheet.Column(5).Width | Should BeGreaterThan 9.5
|
if ($isWindows) {
|
||||||
|
$Worksheet.Column(5).Width | Should BeGreaterThan 9.5
|
||||||
|
}
|
||||||
}
|
}
|
||||||
<# Mock looks unreliable need to check
|
<# Mock looks unreliable need to check
|
||||||
Mock -CommandName 'Invoke-Item'
|
Mock -CommandName 'Invoke-Item'
|
||||||
@@ -1072,7 +1082,9 @@ Describe ExportExcel {
|
|||||||
|
|
||||||
$Worksheet.Tables[0].Name | Should Be 'Data'
|
$Worksheet.Tables[0].Name | Should Be 'Data'
|
||||||
$Worksheet.AutoFilterAddress | Should BeNullOrEmpty
|
$Worksheet.AutoFilterAddress | Should BeNullOrEmpty
|
||||||
$Worksheet.Column(5).Width | Should BeGreaterThan 9.5
|
if ($isWindows) {
|
||||||
|
$Worksheet.Column(5).Width | Should BeGreaterThan 9.5
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
$scriptPath = Split-Path -Path $MyInvocation.MyCommand.path -Parent
|
$scriptPath = Split-Path -Path $MyInvocation.MyCommand.path -Parent
|
||||||
$dataPath = Join-Path -Path $scriptPath -ChildPath "First10Races.csv"
|
$dataPath = Join-Path -Path $scriptPath -ChildPath "First10Races.csv"
|
||||||
|
$WarningAction = "SilentlyContinue"
|
||||||
|
|
||||||
Describe "Creating small named ranges with hyperlinks" {
|
Describe "Creating small named ranges with hyperlinks" {
|
||||||
BeforeAll {
|
BeforeAll {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if ($null -eq $IsWindows) {$IsWindows = [environment]::OSVersion.Platform -like "win*"}
|
||||||
|
|
||||||
$path = "TestDrive:\test.xlsx"
|
$path = "TestDrive:\test.xlsx"
|
||||||
|
|
||||||
$data = ConvertFrom-Csv -InputObject @"
|
$data = ConvertFrom-Csv -InputObject @"
|
||||||
@@ -142,8 +144,10 @@ Describe "Set-ExcelColumn, Set-ExcelRow and Set-ExcelRange" {
|
|||||||
Set-ExcelRange -WorkSheet $ws -Range "E1" -ResetFont -HorizontalAlignment General -FontName "Courier New" -fontSize 9
|
Set-ExcelRange -WorkSheet $ws -Range "E1" -ResetFont -HorizontalAlignment General -FontName "Courier New" -fontSize 9
|
||||||
Set-ExcelRange -Address $ws.Cells["E7"] -ResetFont -WrapText -BackgroundColor ([System.Drawing.Color]::AliceBlue) -BackgroundPattern DarkTrellis -PatternColor ([System.Drawing.Color]::Red) -NumberFormat "£#,###.00"
|
Set-ExcelRange -Address $ws.Cells["E7"] -ResetFont -WrapText -BackgroundColor ([System.Drawing.Color]::AliceBlue) -BackgroundPattern DarkTrellis -PatternColor ([System.Drawing.Color]::Red) -NumberFormat "£#,###.00"
|
||||||
Set-ExcelRange -Address $ws.Column(1) -Width 0
|
Set-ExcelRange -Address $ws.Column(1) -Width 0
|
||||||
Set-ExcelRange -Address $ws.Column(2) -AutoFit
|
if ($IsWindows) {
|
||||||
Set-ExcelRange -Address $ws.Cells["E:E"] -AutoFit
|
Set-ExcelRange -Address $ws.Column(2) -AutoFit
|
||||||
|
Set-ExcelRange -Address $ws.Cells["E:E"] -AutoFit
|
||||||
|
}
|
||||||
#Test alias
|
#Test alias
|
||||||
Set-Format -Address $ws.row(5) -Height 0
|
Set-Format -Address $ws.row(5) -Height 0
|
||||||
$rr = $r.row
|
$rr = $r.row
|
||||||
|
|||||||
Reference in New Issue
Block a user