mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-06 00:23:20 +00:00
Increases to test coverage (now >80%)
This commit is contained in:
@@ -27,6 +27,7 @@ if (Get-Command -Name register-argumentCompleter -ErrorAction SilentlyContinue)
|
|||||||
Register-ArgumentCompleter -CommandName New-ConditionalText -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
|
Register-ArgumentCompleter -CommandName New-ConditionalText -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
|
||||||
Register-ArgumentCompleter -CommandName Set-Format -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
|
Register-ArgumentCompleter -CommandName Set-Format -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
|
||||||
Register-ArgumentCompleter -CommandName Set-Format -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
|
Register-ArgumentCompleter -CommandName Set-Format -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
|
||||||
|
Register-ArgumentCompleter -CommandName Set-Format -ParameterName BorderColor -ScriptBlock $Function:ColorCompletion
|
||||||
Register-ArgumentCompleter -CommandName Set-Format -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
|
Register-ArgumentCompleter -CommandName Set-Format -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
|
||||||
Register-ArgumentCompleter -CommandName Set-Column -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
|
Register-ArgumentCompleter -CommandName Set-Column -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
|
||||||
Register-ArgumentCompleter -CommandName Set-Column -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
|
Register-ArgumentCompleter -CommandName Set-Column -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ iex (new-object System.Net.WebClient).DownloadString('https://raw.github.com/dfi
|
|||||||
- Quick charts in Export-excel were too wide (now 800 pixels instead of 1200), and now support show percent, ShowCategory and NoLegend Parameters
|
- Quick charts in Export-excel were too wide (now 800 pixels instead of 1200), and now support show percent, ShowCategory and NoLegend Parameters
|
||||||
- Fixed bug in Add-ExcelChart where XAxisPosition and YAxisPostion would not be set correctly
|
- Fixed bug in Add-ExcelChart where XAxisPosition and YAxisPostion would not be set correctly
|
||||||
- Fixed bug in Set-Format where enums with a value of zero, or zero numbers would not be set; added functionality to set-format to support -bold:$false -italic:$false etc. (see #400)
|
- Fixed bug in Set-Format where enums with a value of zero, or zero numbers would not be set; added functionality to set-format to support -bold:$false -italic:$false etc. (see #400)
|
||||||
- Added tests for better coverage, and tweaked some tests to use few rows and/or columns for speed
|
- Added tests for better coverage (now at >80% average - set-row/colum set-format less than 80%) , and tweaked some tests to use few rows and/or columns for speed
|
||||||
|
|
||||||
# What's new to 18th July 18
|
# What's new to 18th July 18
|
||||||
- Moved chart creation into its own function (Add-Excel chart) within Export-Excel.ps1. Renamed New-Excelchart to New-ExcelChartDefinition to make it clearer that it is not making anything in the workbook (but for compatibility put an alias of New-ExcelChart in so existing code does not break). Found that -Header does nothing, so it isn't Add-Excel chart and there is a message that does nothing in New-ExcelChartDefinition .
|
- Moved chart creation into its own function (Add-Excel chart) within Export-Excel.ps1. Renamed New-Excelchart to New-ExcelChartDefinition to make it clearer that it is not making anything in the workbook (but for compatibility put an alias of New-ExcelChart in so existing code does not break). Found that -Header does nothing, so it isn't Add-Excel chart and there is a message that does nothing in New-ExcelChartDefinition .
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
[int]$TextRotation ,
|
[int]$TextRotation ,
|
||||||
#Set cells to a fixed hieght
|
#Set cells to a fixed hieght
|
||||||
[float]$Height,
|
[float]$Height,
|
||||||
#If Specified, return an ExcelPackage object to allow further work to be done on the file
|
#If Specified, return a row object to allow further work to be done
|
||||||
[switch]$PassThru
|
[switch]$PassThru
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
7
ToDo.md
7
ToDo.md
@@ -4,6 +4,9 @@
|
|||||||
- [ ] Investigate regional support for number conversion & possible date conversion
|
- [ ] Investigate regional support for number conversion & possible date conversion
|
||||||
- [ ] Add help in ConvertToExcelXLSx.ps1, Get-HTMLTable.ps1, GetRange.PS1, GetExcelTable.Ps1, Import-HTML.PS1, New-ConditionalFormattingIconSet.Ps1, NewConditionalText.PS1, New-Psitem.PS1, Remove-Worksheet.ps1 and Add-ExcelChart - Copy parameter help from function Add-ExcelChart into New-ExcelChart.ps1
|
- [ ] Add help in ConvertToExcelXLSx.ps1, Get-HTMLTable.ps1, GetRange.PS1, GetExcelTable.Ps1, Import-HTML.PS1, New-ConditionalFormattingIconSet.Ps1, NewConditionalText.PS1, New-Psitem.PS1, Remove-Worksheet.ps1 and Add-ExcelChart - Copy parameter help from function Add-ExcelChart into New-ExcelChart.ps1
|
||||||
- [ ] Examples and tests for new "Quick charts" in Export Excel (replace examples) that use Charting.ps1, GetXYRange.ps1, InferData.PS1 (move these to deprecated).
|
- [ ] Examples and tests for new "Quick charts" in Export Excel (replace examples) that use Charting.ps1, GetXYRange.ps1, InferData.PS1 (move these to deprecated).
|
||||||
- [ ] Refactor Set-Row and Set-Column to use set-format and add conditional format and return range support.
|
- [ ] Add conditional format and return range support to Set-Row and Set-Column to use set-format and
|
||||||
- [ ] Examples and tests for set-Row and Set-column
|
- [ ] Examples for set-Row and Set-column (e.g. from tests)
|
||||||
- [ ] Add PivotTable can't select sheet by position.
|
- [ ] Add PivotTable can't select sheet by position.
|
||||||
|
- [ ] Increase code covereage for import-excel and Set-Format
|
||||||
|
- [ ] Wildcard support for hide worksheet, add show-worksheet, make worksheet active in Export-Excel
|
||||||
|
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ Describe "Merge Worksheet" {
|
|||||||
$ws.cells[5,1].Style.font.color.rgb | Should be "FF8b0000"
|
$ws.cells[5,1].Style.font.color.rgb | Should be "FF8b0000"
|
||||||
$ws.cells[7,1].Style.font.color.rgb | Should be "FF8b0000"
|
$ws.cells[7,1].Style.font.color.rgb | Should be "FF8b0000"
|
||||||
}
|
}
|
||||||
it "Set the background for the added / deleted /changed rows " {
|
it "Set the background for the added / deleted / changed rows " {
|
||||||
$ws.cells["A3:E3"].style.Fill.BackgroundColor.Rgb | Should beNullOrEmpty
|
$ws.cells["A3:E3"].style.Fill.BackgroundColor.Rgb | Should beNullOrEmpty
|
||||||
$ws.cells["A4:E4"].style.Fill.BackgroundColor.Rgb | Should be "FFFFA500"
|
$ws.cells["A4:E4"].style.Fill.BackgroundColor.Rgb | Should be "FFFFA500"
|
||||||
$ws.cells["A5" ].style.Fill.BackgroundColor.Rgb | Should be "FF98FB98"
|
$ws.cells["A5" ].style.Fill.BackgroundColor.Rgb | Should be "FF98FB98"
|
||||||
|
|||||||
@@ -302,8 +302,6 @@ Describe ExportExcel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Context "#Example 5 # Adding a single conditional format " {
|
Context "#Example 5 # Adding a single conditional format " {
|
||||||
### TODO New-ConditionalText doesn't a lot of options in Add-ConditionalFormat.
|
|
||||||
# It would be good to pull the logic out of Export-Excel and have EE call Add-ConditionalFormat.
|
|
||||||
$ct = New-ConditionalText -ConditionalType GreaterThan 525 -ConditionalTextColor DarkRed -BackgroundColor LightPink
|
$ct = New-ConditionalText -ConditionalType GreaterThan 525 -ConditionalTextColor DarkRed -BackgroundColor LightPink
|
||||||
it "Created a Conditional format description " {
|
it "Created a Conditional format description " {
|
||||||
$ct.BackgroundColor -is [System.Drawing.Color] | Should be $true
|
$ct.BackgroundColor -is [System.Drawing.Color] | Should be $true
|
||||||
@@ -407,7 +405,7 @@ Describe ExportExcel {
|
|||||||
#This time we are not deleting the XLSX file so this Should create a new, named, sheet.
|
#This time we are not deleting the XLSX file so this Should create a new, named, sheet.
|
||||||
$Excel = Get-Process | Select-Object -first 50 -Property Name, cpu, pm, handles, company | Export-Excel $path -WorkSheetname Processes -PassThru
|
$Excel = Get-Process | Select-Object -first 50 -Property Name, cpu, pm, handles, company | Export-Excel $path -WorkSheetname Processes -PassThru
|
||||||
#Testing -passthru and adding the Pivot as a second step. Want to save and re-open it ...
|
#Testing -passthru and adding the Pivot as a second step. Want to save and re-open it ...
|
||||||
Export-Excel -ExcelPackage $Excel -WorkSheetname Processes -IncludePivotTable -PivotRows Company -PivotData PM -NoTotalsInPivot
|
Export-Excel -ExcelPackage $Excel -WorkSheetname Processes -IncludePivotTable -PivotRows Company -PivotData PM -NoTotalsInPivot
|
||||||
|
|
||||||
$Excel = Open-ExcelPackage $path
|
$Excel = Open-ExcelPackage $path
|
||||||
$PTws = $Excel.Workbook.Worksheets["ProcessesPivotTable"]
|
$PTws = $Excel.Workbook.Worksheets["ProcessesPivotTable"]
|
||||||
@@ -604,6 +602,7 @@ Describe ExportExcel {
|
|||||||
Set-Format -Address $sheet.Column(4) -HorizontalAlignment Right -NFormat "#,##0.0" -Bold
|
Set-Format -Address $sheet.Column(4) -HorizontalAlignment Right -NFormat "#,##0.0" -Bold
|
||||||
Set-Format -Address $sheet.Row(1) -Bold -HorizontalAlignment Center
|
Set-Format -Address $sheet.Row(1) -Bold -HorizontalAlignment Center
|
||||||
Add-ConditionalFormatting -WorkSheet $sheet -Range "D2:D1048576" -DataBarColor Red
|
Add-ConditionalFormatting -WorkSheet $sheet -Range "D2:D1048576" -DataBarColor Red
|
||||||
|
$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 Red -Bold -Italic -Underline -BackgroundColor Beige -BackgroundPattern LightUp -PatternColor Gray
|
Add-ConditionalFormatting -WorkSheet $sheet -Range "G2:G1048576" -RuleType GreaterThan -ConditionValue "104857600" -ForeGroundColor Red -Bold -Italic -Underline -BackgroundColor Beige -BackgroundPattern LightUp -PatternColor Gray
|
||||||
foreach ($c in 5..9) {Set-Format $sheet.Column($c) -AutoFit }
|
foreach ($c in 5..9) {Set-Format $sheet.Column($c) -AutoFit }
|
||||||
Add-PivotTable -PivotTableName "PT_Procs" -ExcelPackage $excel -SourceWorkSheet "Processes" -PivotRows Company -PivotData @{'Name' = 'Count'} -IncludePivotChart -ChartType ColumnClustered -NoLegend
|
Add-PivotTable -PivotTableName "PT_Procs" -ExcelPackage $excel -SourceWorkSheet "Processes" -PivotRows Company -PivotData @{'Name' = 'Count'} -IncludePivotChart -ChartType ColumnClustered -NoLegend
|
||||||
@@ -611,7 +610,11 @@ Describe ExportExcel {
|
|||||||
|
|
||||||
$excel = Open-ExcelPackage $path
|
$excel = Open-ExcelPackage $path
|
||||||
$sheet = $excel.Workbook.Worksheets["Processes"]
|
$sheet = $excel.Workbook.Worksheets["Processes"]
|
||||||
|
it "Returned the rule when calling Add-ConditionalFormatting -passthur " {
|
||||||
|
$rule | should not beNullOrEmpty
|
||||||
|
$rule.getType().fullname | should be "OfficeOpenXml.ConditionalFormatting.ExcelConditionalFormattingTopPercent"
|
||||||
|
$rule.Style.Font.Strike | should be true
|
||||||
|
}
|
||||||
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
|
$sheet.Column(1).wdith | Should not be $sheet.DefaultColWidth
|
||||||
@@ -635,6 +638,8 @@ Describe ExportExcel {
|
|||||||
$sheet.ConditionalFormatting[1].type | Should be 'GreaterThan'
|
$sheet.ConditionalFormatting[1].type | Should be 'GreaterThan'
|
||||||
$sheet.ConditionalFormatting[1].Formula | Should be '104857600'
|
$sheet.ConditionalFormatting[1].Formula | Should be '104857600'
|
||||||
$sheet.ConditionalFormatting[1].Style.Font.Color.Color.Name | Should be 'ffff0000'
|
$sheet.ConditionalFormatting[1].Style.Font.Color.Color.Name | Should be 'ffff0000'
|
||||||
|
$sheet.ConditionalFormatting[2].Style.Font.Strike | Should be $true
|
||||||
|
$sheet.ConditionalFormatting[2].type | Should be "TopPercent"
|
||||||
}
|
}
|
||||||
it "Froze the panes " {
|
it "Froze the panes " {
|
||||||
$sheet.view.Panes.Count | Should be 3
|
$sheet.view.Panes.Count | Should be 3
|
||||||
@@ -737,7 +742,7 @@ Describe ExportExcel {
|
|||||||
Select-Object -Property Name, @{n="TotalPm";e={($_.group | Measure-Object -sum -Property pm).sum }} |
|
Select-Object -Property Name, @{n="TotalPm";e={($_.group | Measure-Object -sum -Property pm).sum }} |
|
||||||
Export-Excel -NoHeader -AutoNameRange -path $path -ReturnRange -PieChart -ShowPercent
|
Export-Excel -NoHeader -AutoNameRange -path $path -ReturnRange -PieChart -ShowPercent
|
||||||
$Cf = New-ConditionalFormattingIconSet -Range ($range -replace "^.*:","B2:") -ConditionalFormat ThreeIconSet -Reverse -IconType Flags
|
$Cf = New-ConditionalFormattingIconSet -Range ($range -replace "^.*:","B2:") -ConditionalFormat ThreeIconSet -Reverse -IconType Flags
|
||||||
$ct = New-ConditionalText -Text "Microsoft" -ConditionalTextColor red -BackgroundColor AliceBlue -ConditionalType ContainsText
|
$ct = New-ConditionalText -Text "Microsoft" -ConditionalTextColor red -BackgroundColor AliceBlue -ConditionalType ContainsText
|
||||||
it "Created the Conditional formatting rules " {
|
it "Created the Conditional formatting rules " {
|
||||||
$cf.Formatter | should be "ThreeIconSet"
|
$cf.Formatter | should be "ThreeIconSet"
|
||||||
$cf.IconType | should be "Flags"
|
$cf.IconType | should be "Flags"
|
||||||
@@ -749,22 +754,22 @@ Describe ExportExcel {
|
|||||||
$ct.Text | Should be "Microsoft"
|
$ct.Text | Should be "Microsoft"
|
||||||
}
|
}
|
||||||
|
|
||||||
Export-Excel -Path $path -ConditionalFormat $cf -ConditionalText $ct
|
Export-Excel -Path $path -ConditionalFormat $cf -ConditionalText $ct
|
||||||
$excel = Open-ExcelPackage -Path $path
|
$excel = Open-ExcelPackage -Path $path
|
||||||
$rows = $range -replace "^.*?(\d+)$", '$1'
|
$rows = $range -replace "^.*?(\d+)$", '$1'
|
||||||
$chart = $excel.Workbook.Worksheets["sheet1"].Drawings[0]
|
$chart = $excel.Workbook.Worksheets["sheet1"].Drawings[0]
|
||||||
$cFmt = $excel.Workbook.Worksheets["sheet1"].ConditionalFormatting
|
$cFmt = $excel.Workbook.Worksheets["sheet1"].ConditionalFormatting
|
||||||
it "Created the chart with the right series " {
|
it "Created the chart with the right series " {
|
||||||
$chart.ChartType | should be "PieExploded3D"
|
$chart.ChartType | should be "PieExploded3D"
|
||||||
$chart.series.series | should be "'Sheet1'!B1:B$rows" #would be B2 and A2 if we had a header.
|
$chart.series.series | should be "'Sheet1'!B1:B$rows" #would be B2 and A2 if we had a header.
|
||||||
$chart.series.Xseries | should be "'Sheet1'!A1:A$rows"
|
$chart.series.Xseries | should be "'Sheet1'!A1:A$rows"
|
||||||
$chart.DataLabel.ShowPercent | should be $true
|
$chart.DataLabel.ShowPercent | should be $true
|
||||||
}
|
}
|
||||||
it "Created two Conditional formatting rules " {
|
it "Created two Conditional formatting rules " {
|
||||||
$cFmt.Count | should be $true
|
$cFmt.Count | should be $true
|
||||||
$cFmt.Where({$_.type -eq "ContainsText"}) | Should not beNullOrEmpty
|
$cFmt.Where({$_.type -eq "ContainsText"}) | Should not beNullOrEmpty
|
||||||
$cFmt.Where({$_.type -eq "ThreeIconSet"}) | Should not beNullOrEmpty
|
$cFmt.Where({$_.type -eq "ThreeIconSet"}) | Should not beNullOrEmpty
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Context " # Awkward multiple tables" {
|
Context " # Awkward multiple tables" {
|
||||||
|
|||||||
@@ -16,14 +16,17 @@ Describe "Set-Column, Set-Row and Set Format" {
|
|||||||
$excel = $data| Export-Excel -Path $path -AutoNameRange -PassThru
|
$excel = $data| Export-Excel -Path $path -AutoNameRange -PassThru
|
||||||
$ws = $excel.Workbook.Worksheets["Sheet1"]
|
$ws = $excel.Workbook.Worksheets["Sheet1"]
|
||||||
|
|
||||||
Set-Column -Worksheet $ws -Heading "Total" -Value "=Quantity*Price" -NumberFormat "£#,###.00" -FontColor Blue -Bold -HorizontalAlignment Right -VerticalAlignment Top
|
$c = Set-Column -PassThru -Worksheet $ws -Heading "Total" -Value "=Quantity*Price" -NumberFormat "£#,###.00" -FontColor Blue -Bold -HorizontalAlignment Right -VerticalAlignment Top
|
||||||
Set-Row -Worksheet $ws -StartColumn 3 -BorderAround Thin -Italic -Underline -FontSize 14 -Value {"=sum($columnName`2:$columnName$endrow)" } -VerticalAlignment Bottom
|
$r = Set-Row -PassThru -Worksheet $ws -StartColumn 3 -BorderAround Thin -Italic -Underline -FontSize 14 -Value {"=sum($columnName`2:$columnName$endrow)" } -VerticalAlignment Bottom
|
||||||
Set-Format -Address $excel.Workbook.Worksheets["Sheet1"].cells["b3"]-HorizontalAlignment Right -VerticalAlignment Center -BorderAround Thick -BorderColor Red -StrikeThru
|
Set-Format -Address $excel.Workbook.Worksheets["Sheet1"].cells["b3"] -HorizontalAlignment Right -VerticalAlignment Center -BorderAround Thick -BorderColor Red -StrikeThru
|
||||||
Set-Format -WorkSheet $ws -Range "E3" -Bold:$false -FontShift Superscript -HorizontalAlignment Left
|
Set-Format -Address $excel.Workbook.Worksheets["Sheet1"].cells["c3"] -BorderColor Red -BorderTop DashDot -BorderLeft DashDotDot -BorderBottom Dashed -BorderRight Dotted
|
||||||
Set-Format -WorkSheet $ws -Range "E1" -ResetFont -HorizontalAlignment General
|
Set-Format -WorkSheet $ws -Range "E3" -Bold:$false -FontShift Superscript -HorizontalAlignment Left
|
||||||
Set-Format -Address $ws.cells["E7"] -ResetFont -WrapText -BackgroundColor AliceBlue -BackgroundPattern DarkTrellis -PatternColor Red -NumberFormat "£#,###.00"
|
Set-Format -WorkSheet $ws -Range "E1" -ResetFont -HorizontalAlignment General
|
||||||
Set-Format -Address $ws.Column(1) -Width 0
|
Set-Format -Address $ws.cells["E7"] -ResetFont -WrapText -BackgroundColor AliceBlue -BackgroundPattern DarkTrellis -PatternColor Red -NumberFormat "£#,###.00"
|
||||||
Set-Format -Address $ws.row(5) -Height 0
|
Set-Format -Address $ws.Column(1) -Width 0
|
||||||
|
Set-Format -Address $ws.Column(2) -AutoFit
|
||||||
|
Set-Format -Address $ws.Cells["E:E"] -AutoFit
|
||||||
|
Set-Format -Address $ws.row(5) -Height 0
|
||||||
Close-ExcelPackage $excel
|
Close-ExcelPackage $excel
|
||||||
|
|
||||||
$excel = Open-ExcelPackage $path
|
$excel = Open-ExcelPackage $path
|
||||||
@@ -31,6 +34,8 @@ Describe "Set-Column, Set-Row and Set Format" {
|
|||||||
}
|
}
|
||||||
Context "Rows and Columns" {
|
Context "Rows and Columns" {
|
||||||
it "Set a row and a column to have zero width/height " {
|
it "Set a row and a column to have zero width/height " {
|
||||||
|
$r | should not beNullorEmpty
|
||||||
|
$c | should not beNullorEmpty
|
||||||
$ws.Column(1).width | should be 0
|
$ws.Column(1).width | should be 0
|
||||||
$ws.Row(5).height | should be 0
|
$ws.Row(5).height | should be 0
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user