From 98ce56492956e6b74e693c4ba89f21c33e8a58d9 Mon Sep 17 00:00:00 2001 From: dfinke Date: Sat, 1 Feb 2020 11:55:33 -0500 Subject: [PATCH 1/8] Add Excel builtin DSUM Example --- Examples/Excel - DSUM/DSUM.png | Bin 0 -> 59577 bytes Examples/Excel - DSUM/ExcelDSUMBuiltIn.ps1 | 31 +++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 Examples/Excel - DSUM/DSUM.png create mode 100644 Examples/Excel - DSUM/ExcelDSUMBuiltIn.ps1 diff --git a/Examples/Excel - DSUM/DSUM.png b/Examples/Excel - DSUM/DSUM.png new file mode 100644 index 0000000000000000000000000000000000000000..b9631fe33f9234c08bdacc2b10666e9da6a46f78 GIT binary patch literal 59577 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�!|*3rJiWGuV`l+-dO`Gf;r=@p;*wO2Qy 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 Date: Mon, 3 Feb 2020 20:11:49 -0500 Subject: [PATCH 2/8] Rename directory --- Examples/{Excel - DSUM => ExcelBuiltIns}/DSUM.png | Bin .../ExcelDSUMBuiltIn.ps1 => ExcelBuiltIns/DSUM.ps1} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Examples/{Excel - DSUM => ExcelBuiltIns}/DSUM.png (100%) rename Examples/{Excel - DSUM/ExcelDSUMBuiltIn.ps1 => ExcelBuiltIns/DSUM.ps1} (100%) diff --git a/Examples/Excel - DSUM/DSUM.png b/Examples/ExcelBuiltIns/DSUM.png similarity index 100% rename from Examples/Excel - DSUM/DSUM.png rename to Examples/ExcelBuiltIns/DSUM.png diff --git a/Examples/Excel - DSUM/ExcelDSUMBuiltIn.ps1 b/Examples/ExcelBuiltIns/DSUM.ps1 similarity index 100% rename from Examples/Excel - DSUM/ExcelDSUMBuiltIn.ps1 rename to Examples/ExcelBuiltIns/DSUM.ps1 From e42f42fde92ca636af22252b753a8329f48e15f1 Mon Sep 17 00:00:00 2001 From: dfinke Date: Mon, 3 Feb 2020 20:19:57 -0500 Subject: [PATCH 3/8] Add VLookup --- Examples/ExcelBuiltIns/VLOOKUP.ps1 | 19 +++++++++++++++++++ Examples/ExcelBuiltIns/VLookUp.png | Bin 0 -> 27931 bytes 2 files changed, 19 insertions(+) create mode 100644 Examples/ExcelBuiltIns/VLOOKUP.ps1 create mode 100644 Examples/ExcelBuiltIns/VLookUp.png diff --git a/Examples/ExcelBuiltIns/VLOOKUP.ps1 b/Examples/ExcelBuiltIns/VLOOKUP.ps1 new file mode 100644 index 0000000..a04fecb --- /dev/null +++ b/Examples/ExcelBuiltIns/VLOOKUP.ps1 @@ -0,0 +1,19 @@ +$xlfile = "$env:TEMP\test.xlsx" +Remove-Item $xlfile -ErrorAction SilentlyContinue + +$data = ConvertFrom-Csv @" +Fruit,Amount +Apples,50 +Oranges,20 +Bananas,60 +Lemons,40 +"@ + +$xl = Export-Excel -InputObject $data -Path $xlfile -PassThru -AutoSize + +Set-ExcelRange -Worksheet $xl.Sheet1 -Range D2 -BackgroundColor LightBlue -Value Apples + +$Rows = $xl.Sheet1.Dimension.Rows +Set-ExcelRange -Worksheet $xl.Sheet1 -Range E2 -Formula "=VLookup(D2,A2:B$($Rows),2,FALSE)" + +Close-ExcelPackage $xl -Show \ No newline at end of file diff --git a/Examples/ExcelBuiltIns/VLookUp.png b/Examples/ExcelBuiltIns/VLookUp.png new file mode 100644 index 0000000000000000000000000000000000000000..421775f80b1070476d3ceb52fc2f27511665c46c GIT binary patch literal 27931 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 Date: Tue, 11 Feb 2020 08:39:24 -0500 Subject: [PATCH 4/8] Update New-PivotTableDefinition.md --- mdHelp/en/New-PivotTableDefinition.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mdHelp/en/New-PivotTableDefinition.md b/mdHelp/en/New-PivotTableDefinition.md index 2fbf56a..ea885c7 100644 --- a/mdHelp/en/New-PivotTableDefinition.md +++ b/mdHelp/en/New-PivotTableDefinition.md @@ -194,7 +194,7 @@ Accept wildcard characters: False ``` ### -GroupDateRow -The name of a row field which should be grouped by parts of the date/time (ignored if GroupDateRow is not specified) +The name of a row field which should be grouped by parts of the date/time (ignored if GroupDatePart is not specified) ```yaml Type: String From f0ec5f4a96ca31b242123f86d1aaacc7b7e67304 Mon Sep 17 00:00:00 2001 From: Justin Grote Date: Fri, 14 Feb 2020 14:49:07 -0800 Subject: [PATCH 5/8] Remove Write-Debug Performance Outputs These outputs are unnecessary and can confuse someone observing other debug output. --- Public/Import-Excel.ps1 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Public/Import-Excel.ps1 b/Public/Import-Excel.ps1 index 11a856b..8b2fbb0 100644 --- a/Public/Import-Excel.ps1 +++ b/Public/Import-Excel.ps1 @@ -117,7 +117,6 @@ throw "Worksheet '$WorksheetName' not found, the workbook only contains the worksheets '$($ExcelPackage.Workbook.Worksheets)'. If you only wish to select the first worksheet, please remove the '-WorksheetName' parameter." ; return } - Write-Debug $sw.Elapsed.TotalMilliseconds #region Get rows and columns #If we are doing dataonly it is quicker to work out which rows to ignore before processing the cells. if (-not $EndRow ) { $EndRow = $Worksheet.Dimension.End.Row } @@ -154,7 +153,6 @@ throw "Duplicate column headers found on row '$StartRow' in columns '$($Duplicates.Group.Column)'. Column headers must be unique, if this is not a requirement please use the '-NoHeader' or '-HeaderName' parameter."; return } #endregion - Write-Debug $sw.Elapsed.TotalMilliseconds if (-not $Rows) { Write-Warning "Worksheet '$WorksheetName' in workbook '$Path' contains no data in the rows after top row '$StartRow'" } @@ -191,7 +189,6 @@ } #endregion } - Write-Debug $sw.Elapsed.TotalMilliseconds } catch { throw "Failed importing the Excel workbook '$Path' with worksheet '$Worksheetname': $_"; return } finally { @@ -199,4 +196,4 @@ } } } -} \ No newline at end of file +} From 6bf16f75f733d258c32661c5276c62b894e0caac Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Sun, 16 Feb 2020 16:37:27 -0500 Subject: [PATCH 6/8] Create MultipleWorksheets.ps1 The PS commands to create an Excel file with multiple worksheets and adding one using ExcelPackage functions. --- Examples/MultipleWorksheets.ps1 | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Examples/MultipleWorksheets.ps1 diff --git a/Examples/MultipleWorksheets.ps1 b/Examples/MultipleWorksheets.ps1 new file mode 100644 index 0000000..c7b2f6b --- /dev/null +++ b/Examples/MultipleWorksheets.ps1 @@ -0,0 +1,27 @@ +<# + To see this written up with example screenshots, head over to the IT Splat blog + URL: http://bit.ly/2SxieeM +#> + +## Create an Excel file with multiple worksheets +# Get a list of processes on the system +$processes = Get-Process | Sort-Object -Property ProcessName | Group-Object -Property ProcessName | Where-Object {$_.Count -gt 2} + +# Export the processes to Excel, each process on its own sheet +$processes | ForEach-Object { $_.Group | Export-Excel -Path MultiSheetExample.xlsx -WorksheetName $_.Name -AutoSize -AutoFilter } + +# Show the completed file +Invoke-Item .\MultiSheetExample.xlsx + +## Add an additional sheet to the new workbook +# Use Open-ExcelPackage to open the workbook +$excelPackage = Open-ExcelPackage -Path .\MultiSheetExample.xlsx + +# Create a new worksheet and give it a name, set MoveToStart to make it the first sheet +$ws = Add-Worksheet -ExcelPackage $excelPackage -WorksheetName 'All Services' -MoveToStart + +# Get all the running services on the system +Get-Service | Export-Excel -ExcelPackage $excelPackage -WorksheetName $ws -AutoSize -AutoFilter + +# Close the package and show the final result +Close-ExcelPackage -ExcelPackage $excelPackage -Show From 59e31d54a7444f354badb4af20b86d67622443ce Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Tue, 18 Feb 2020 09:02:49 -0500 Subject: [PATCH 7/8] Move to /Examples/CommunityContributions Folder --- Examples/{ => CommunityContributions}/MultipleWorksheets.ps1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Examples/{ => CommunityContributions}/MultipleWorksheets.ps1 (100%) diff --git a/Examples/MultipleWorksheets.ps1 b/Examples/CommunityContributions/MultipleWorksheets.ps1 similarity index 100% rename from Examples/MultipleWorksheets.ps1 rename to Examples/CommunityContributions/MultipleWorksheets.ps1 From 13454cce8e932431b92587a014dc342f94b871b1 Mon Sep 17 00:00:00 2001 From: dfinke Date: Sat, 29 Feb 2020 15:55:49 -0500 Subject: [PATCH 8/8] Spike to fix #792 --- Public/Import-Excel.ps1 | 291 +++++++++++----------- __tests__/ImportExcelHeaderName.tests.ps1 | 31 +++ 2 files changed, 180 insertions(+), 142 deletions(-) diff --git a/Public/Import-Excel.ps1 b/Public/Import-Excel.ps1 index 8b2fbb0..e268028 100644 --- a/Public/Import-Excel.ps1 +++ b/Public/Import-Excel.ps1 @@ -1,8 +1,8 @@ function Import-Excel { - [CmdLetBinding()] - [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingPlainTextForPassword", "")] - [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSPossibleIncorrectUsageOfAssignmentOperator', '', Justification = 'Intentional')] - param ( + [CmdLetBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingPlainTextForPassword", "")] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSPossibleIncorrectUsageOfAssignmentOperator', '', Justification = 'Intentional')] + param ( [Alias('FullName')] [Parameter(ParameterSetName = "PathA", Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline, Position = 0 )] [Parameter(ParameterSetName = "PathB", Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline, Position = 0 )] @@ -36,164 +36,171 @@ [ValidateNotNullOrEmpty()] [String]$Password ) - end { - $sw = [System.Diagnostics.Stopwatch]::StartNew() - if ($input) { - $Paths = $input - } - elseif ($Path) { - $Paths = $Path - } - else { - $Paths = '' - } - function Get-PropertyNames { - <# + end { + $sw = [System.Diagnostics.Stopwatch]::StartNew() + if ($input) { + $Paths = $input + } + elseif ($Path) { + $Paths = $Path + } + else { + $Paths = '' + } + function Get-PropertyNames { + <# .SYNOPSIS Create objects containing the column number and the column name for each of the different header types. #> - [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '', Justification = "Name would be incorrect, and command is not exported")] - param( - [Parameter(Mandatory)] - [Int[]]$Columns, - [Parameter(Mandatory)] - [Int]$StartRow - ) + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '', Justification = "Name would be incorrect, and command is not exported")] + param( + [Parameter(Mandatory)] + [Int[]]$Columns, + [Parameter(Mandatory)] + [Int]$StartRow + ) - try { - if ($HeaderName) { - $i = 0 - foreach ($H in $HeaderName) { - $H | Select-Object @{N = 'Column'; E = { $Columns[$i] } }, @{N = 'Value'; E = { $H } } - $i++ + try { + if ($HeaderName) { + $i = 0 + foreach ($H in $HeaderName) { + $H | Select-Object @{N = 'Column'; E = { $Columns[$i] } }, @{N = 'Value'; E = { $H } } + $i++ + } + } + elseif ($NoHeader) { + $i = 0 + foreach ($C in $Columns) { + $i++ + $C | Select-Object @{N = 'Column'; E = { $_ } }, @{N = 'Value'; E = { 'P' + $i } } + } + } + + else { + if ($StartRow -lt 1) { + throw 'The top row can never be less than 1 when we need to retrieve headers from the worksheet.' ; return + } + + foreach ($C in $Columns) { + $Worksheet.Cells[$StartRow, $C] | Where-Object { $_.Value } | Select-Object @{N = 'Column'; E = { $C } }, Value + } } } - elseif ($NoHeader) { - $i = 0 - foreach ($C in $Columns) { - $i++ - $C | Select-Object @{N = 'Column'; E = { $_ } }, @{N = 'Value'; E = { 'P' + $i } } - } - } - - else { - if ($StartRow -lt 1) { - throw 'The top row can never be less than 1 when we need to retrieve headers from the worksheet.' ; return - } - - foreach ($C in $Columns) { - $Worksheet.Cells[$StartRow, $C] | Where-Object { $_.Value } | Select-Object @{N = 'Column'; E = { $C } }, Value - } + catch { + throw "Failed creating property names: $_" ; return } } - catch { - throw "Failed creating property names: $_" ; return - } - } - foreach ($Path in $Paths) { - if ($path) { - $extension = [System.IO.Path]::GetExtension($Path) - if ($extension -notmatch '.xlsx$|.xlsm$') { - throw "Import-Excel does not support reading this extension type $($extension)" - } - - $resolvedPath = (Resolve-Path $Path -ErrorAction SilentlyContinue) - if ($resolvedPath) { - $Path = $resolvedPath.ProviderPath - } - else { - throw "'$($Path)' file not found" - } - - $stream = New-Object -TypeName System.IO.FileStream -ArgumentList $Path, 'Open', 'Read', 'ReadWrite' - $ExcelPackage = New-Object -TypeName OfficeOpenXml.ExcelPackage - if ($Password) { $ExcelPackage.Load($stream, $Password) } - else { $ExcelPackage.Load($stream) } - } - try { - #Select worksheet - if (-not $WorksheetName) { $Worksheet = $ExcelPackage.Workbook.Worksheets[1] } - elseif (-not ($Worksheet = $ExcelPackage.Workbook.Worksheets[$WorkSheetName])) { - throw "Worksheet '$WorksheetName' not found, the workbook only contains the worksheets '$($ExcelPackage.Workbook.Worksheets)'. If you only wish to select the first worksheet, please remove the '-WorksheetName' parameter." ; return - } - - #region Get rows and columns - #If we are doing dataonly it is quicker to work out which rows to ignore before processing the cells. - if (-not $EndRow ) { $EndRow = $Worksheet.Dimension.End.Row } - if (-not $EndColumn) { $EndColumn = $Worksheet.Dimension.End.Column } - $endAddress = [OfficeOpenXml.ExcelAddress]::TranslateFromR1C1("R[$EndRow]C[$EndColumn]", 0, 0) - if ($DataOnly) { - #If we are using headers startrow will be the header-row so examine data from startRow + 1, - if ($NoHeader) { $range = "A" + ($StartRow ) + ":" + $endAddress } - else { $range = "A" + ($StartRow + 1 ) + ":" + $endAddress } - #We're going to look at every cell and build 2 hash tables holding rows & columns which contain data. - #Want to Avoid 'select unique' operations & large Sorts, becuse time time taken increases with square - #of number of items (PS uses heapsort at large size). Instead keep a list of what we have seen, - #using Hash tables: "we've seen it" is all we need, no need to worry about "seen it before" / "Seen it many times". - $colHash = @{ } - $rowHash = @{ } - foreach ($cell in $Worksheet.Cells[$range]) { - if ($null -ne $cell.Value ) { $colHash[$cell.Start.Column] = 1; $rowHash[$cell.Start.row] = 1 } + foreach ($Path in $Paths) { + if ($path) { + $extension = [System.IO.Path]::GetExtension($Path) + if ($extension -notmatch '.xlsx$|.xlsm$') { + throw "Import-Excel does not support reading this extension type $($extension)" } - $rows = ( $StartRow..$EndRow ).Where( { $rowHash[$_] }) - $columns = ($StartColumn..$EndColumn).Where( { $colHash[$_] }) + + $resolvedPath = (Resolve-Path $Path -ErrorAction SilentlyContinue) + if ($resolvedPath) { + $Path = $resolvedPath.ProviderPath + } + else { + throw "'$($Path)' file not found" + } + + $stream = New-Object -TypeName System.IO.FileStream -ArgumentList $Path, 'Open', 'Read', 'ReadWrite' + $ExcelPackage = New-Object -TypeName OfficeOpenXml.ExcelPackage + if ($Password) { $ExcelPackage.Load($stream, $Password) } + else { $ExcelPackage.Load($stream) } } - else { - $Columns = $StartColumn .. $EndColumn ; if ($StartColumn -gt $EndColumn) { Write-Warning -Message "Selecting columns $StartColumn to $EndColumn might give odd results." } - if ($NoHeader) { $Rows = $StartRow..$EndRow ; if ($StartRow -gt $EndRow) { Write-Warning -Message "Selecting rows $StartRow to $EndRow might give odd results." } } - elseif ($HeaderName) { $Rows = $StartRow..$EndRow } - else { $Rows = (1 + $StartRow)..$EndRow } # ; if ($StartRow -ge $EndRow) { Write-Warning -Message "Selecting $StartRow as the header with data in $(1+$StartRow) to $EndRow might give odd results." } } - } - #endregion - #region Create property names - if ((-not $Columns) -or (-not ($PropertyNames = Get-PropertyNames -Columns $Columns -StartRow $StartRow))) { - throw "No column headers found on top row '$StartRow'. If column headers in the worksheet are not a requirement then please use the '-NoHeader' or '-HeaderName' parameter."; return - } - if ($Duplicates = $PropertyNames | Group-Object Value | Where-Object Count -GE 2) { - throw "Duplicate column headers found on row '$StartRow' in columns '$($Duplicates.Group.Column)'. Column headers must be unique, if this is not a requirement please use the '-NoHeader' or '-HeaderName' parameter."; return - } - #endregion - if (-not $Rows) { - Write-Warning "Worksheet '$WorksheetName' in workbook '$Path' contains no data in the rows after top row '$StartRow'" - } - else { - #region Create one object per row - if ($AsText) { - <#join items in AsText together with ~~~ . Escape any regex special characters... + try { + #Select worksheet + if (-not $WorksheetName) { $Worksheet = $ExcelPackage.Workbook.Worksheets[1] } + elseif (-not ($Worksheet = $ExcelPackage.Workbook.Worksheets[$WorkSheetName])) { + throw "Worksheet '$WorksheetName' not found, the workbook only contains the worksheets '$($ExcelPackage.Workbook.Worksheets)'. If you only wish to select the first worksheet, please remove the '-WorksheetName' parameter." ; return + } + + #region Get rows and columns + #If we are doing dataonly it is quicker to work out which rows to ignore before processing the cells. + if (-not $EndRow ) { $EndRow = $Worksheet.Dimension.End.Row } + if (-not $EndColumn) { $EndColumn = $Worksheet.Dimension.End.Column } + $endAddress = [OfficeOpenXml.ExcelAddress]::TranslateFromR1C1("R[$EndRow]C[$EndColumn]", 0, 0) + if ($DataOnly) { + #If we are using headers startrow will be the header-row so examine data from startRow + 1, + if ($NoHeader) { $range = "A" + ($StartRow ) + ":" + $endAddress } + else { $range = "A" + ($StartRow + 1 ) + ":" + $endAddress } + #We're going to look at every cell and build 2 hash tables holding rows & columns which contain data. + #Want to Avoid 'select unique' operations & large Sorts, becuse time time taken increases with square + #of number of items (PS uses heapsort at large size). Instead keep a list of what we have seen, + #using Hash tables: "we've seen it" is all we need, no need to worry about "seen it before" / "Seen it many times". + $colHash = @{ } + $rowHash = @{ } + foreach ($cell in $Worksheet.Cells[$range]) { + if ($null -ne $cell.Value ) { $colHash[$cell.Start.Column] = 1; $rowHash[$cell.Start.row] = 1 } + } + $rows = ( $StartRow..$EndRow ).Where( { $rowHash[$_] }) + $columns = ($StartColumn..$EndColumn).Where( { $colHash[$_] }) + } + else { + $Columns = $StartColumn .. $EndColumn ; if ($StartColumn -gt $EndColumn) { Write-Warning -Message "Selecting columns $StartColumn to $EndColumn might give odd results." } + if ($NoHeader) { $Rows = $StartRow..$EndRow ; if ($StartRow -gt $EndRow) { Write-Warning -Message "Selecting rows $StartRow to $EndRow might give odd results." } } + elseif ($HeaderName) { $Rows = $StartRow..$EndRow } + else { + $Rows = (1 + $StartRow)..$EndRow + if ($StartRow -eq 1 -and $EndRow -eq 1) { + $Rows = 0 + } + } + + # ; if ($StartRow -ge $EndRow) { Write-Warning -Message "Selecting $StartRow as the header with data in $(1+$StartRow) to $EndRow might give odd results." } } + } + #endregion + #region Create property names + if ((-not $Columns) -or (-not ($PropertyNames = Get-PropertyNames -Columns $Columns -StartRow $StartRow))) { + throw "No column headers found on top row '$StartRow'. If column headers in the worksheet are not a requirement then please use the '-NoHeader' or '-HeaderName' parameter."; return + } + if ($Duplicates = $PropertyNames | Group-Object Value | Where-Object Count -GE 2) { + throw "Duplicate column headers found on row '$StartRow' in columns '$($Duplicates.Group.Column)'. Column headers must be unique, if this is not a requirement please use the '-NoHeader' or '-HeaderName' parameter."; return + } + #endregion + if (-not $Rows) { + Write-Warning "Worksheet '$WorksheetName' in workbook '$Path' contains no data in the rows after top row '$StartRow'" + } + else { + #region Create one object per row + if ($AsText) { + <#join items in AsText together with ~~~ . Escape any regex special characters... # which turns "*" into "\*" make it ".*". Convert ~~~ to $|^ and top and tail with ^%; So if we get "Week", "[Time]" and "*date*" ; make the expression ^week$|^\[Time\]$|^.*Date.*$ $make a regex for this which is case insensitive (option 1) and compiled (option 8) #> - $TextColExpression = "^" + [regex]::Escape($AsText -join "~~~").replace("\*", ".*").replace("~~~", "$|^") + "$" - $TextColRegEx = New-Object -TypeName regex -ArgumentList $TextColExpression , 9 - } - foreach ($R in $Rows) { - #Disabled write-verbose for speed - # Write-Verbose "Import row '$R'" - $NewRow = [Ordered]@{ } - if ($TextColRegEx) { - foreach ($P in $PropertyNames) { - if ($TextColRegEx.IsMatch($P.Value)) { - $NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Text + $TextColExpression = "^" + [regex]::Escape($AsText -join "~~~").replace("\*", ".*").replace("~~~", "$|^") + "$" + $TextColRegEx = New-Object -TypeName regex -ArgumentList $TextColExpression , 9 + } + foreach ($R in $Rows) { + #Disabled write-verbose for speed + # Write-Verbose "Import row '$R'" + $NewRow = [Ordered]@{ } + if ($TextColRegEx) { + foreach ($P in $PropertyNames) { + if ($TextColRegEx.IsMatch($P.Value)) { + $NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Text + } + else { $NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Value } } - else { $NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Value } } - } - else { - foreach ($P in $PropertyNames) { - $NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Value - # Write-Verbose "Import cell '$($Worksheet.Cells[$R, $P.Column].Address)' with property name '$($p.Value)' and value '$($Worksheet.Cells[$R, $P.Column].Value)'." + else { + foreach ($P in $PropertyNames) { + $NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Value + # Write-Verbose "Import cell '$($Worksheet.Cells[$R, $P.Column].Address)' with property name '$($p.Value)' and value '$($Worksheet.Cells[$R, $P.Column].Value)'." + } } + [PSCustomObject]$NewRow } - [PSCustomObject]$NewRow + #endregion } - #endregion + } + catch { throw "Failed importing the Excel workbook '$Path' with worksheet '$Worksheetname': $_"; return } + finally { + if ($Path) { $stream.close(); $ExcelPackage.Dispose() } } } - catch { throw "Failed importing the Excel workbook '$Path' with worksheet '$Worksheetname': $_"; return } - finally { - if ($Path) { $stream.close(); $ExcelPackage.Dispose() } - } } - } } diff --git a/__tests__/ImportExcelHeaderName.tests.ps1 b/__tests__/ImportExcelHeaderName.tests.ps1 index cff85bc..5ee38ef 100644 --- a/__tests__/ImportExcelHeaderName.tests.ps1 +++ b/__tests__/ImportExcelHeaderName.tests.ps1 @@ -1,4 +1,5 @@ $xlfile = "TestDrive:\testImportExcel.xlsx" +$xlfileHeaderOnly = "TestDrive:\testImportExcelHeaderOnly.xlsx" Describe "Import-Excel on a sheet with no headings" { BeforeAll { @@ -18,6 +19,15 @@ Describe "Import-Excel on a sheet with no headings" { Set-ExcelRange -Worksheet $xl.Sheet1 -Range C3 -Value 'I' Close-ExcelPackage $xl + + # crate $xlfileHeaderOnly + $xl = "" | Export-excel $xlfileHeaderOnly -PassThru + + Set-ExcelRange -Worksheet $xl.Sheet1 -Range A1 -Value 'A' + Set-ExcelRange -Worksheet $xl.Sheet1 -Range B1 -Value 'B' + Set-ExcelRange -Worksheet $xl.Sheet1 -Range C1 -Value 'C' + + Close-ExcelPackage $xl } It "Import-Excel should have this shape" { @@ -193,4 +203,25 @@ Describe "Import-Excel on a sheet with no headings" { # $actual[0].City | Should BeExactly 'Brussels' } + It "Should handle data correctly if there is only a single row" { + $actual = Import-Excel $xlfileHeaderOnly + $names = $actual.psobject.properties.Name + $names | should be $null + $actual.Count | should be 0 + } + + It "Should handle data correctly if there is only a single row and using -NoHeader " { + $actual = @(Import-Excel $xlfileHeaderOnly -WorksheetName Sheet1 -NoHeader) + + $names = $actual[0].psobject.properties.Name + $names.count | should be 3 + $names[0] | should be 'P1' + $names[1] | should be 'P2' + $names[2] | should be 'P3' + + $actual.Count | should be 1 + $actual[0].P1 | should be 'A' + $actual[0].P2 | should be 'B' + $actual[0].P3 | should be 'C' + } } \ No newline at end of file