__tests__/Copy-ExcelWorksheet.Tests.ps1
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments','',Justification='False Positives')] param() Describe "Copy-Worksheet" { $path1 = "TestDrive:\Test1.xlsx" $path2 = "TestDrive:\Test2.xlsx" Remove-Item -Path $path1, $path2 -ErrorAction SilentlyContinue $ProcRange = Get-Process | Export-Excel $path1 -DisplayPropertySet -WorkSheetname Processes -ReturnRange if ((Get-Culture).NumberFormat.CurrencySymbol -eq "£") { $OtherCurrencySymbol = "$" } else { $OtherCurrencySymbol = "£" } [PSCustOmobject][Ordered]@{ Date = Get-Date Formula1 = '=SUM(F2:G2)' String1 = 'My String' Float = [math]::pi IPAddress = '10.10.25.5' StrLeadZero = '07670' StrComma = '0,26' StrEngThousand = '1,234.56' StrEuroThousand = '1.555,83' StrDot = '1.2' StrNegInt = '-31' StrTrailingNeg = '31-' StrParens = '(123)' strLocalCurrency = ('{0}123.45' -f (Get-Culture).NumberFormat.CurrencySymbol ) strOtherCurrency = ('{0}123.45' -f $OtherCurrencySymbol ) StrE164Phone = '+32 (444) 444 4444' StrAltPhone1 = '+32 4 4444 444' StrAltPhone2 = '+3244444444' StrLeadSpace = ' 123' StrTrailSpace = '123 ' Link1 = [uri]"https://github.com/dfinke/ImportExcel" Link2 = "https://github.com/dfinke/ImportExcel" # Links are not copied correctly, hopefully this will be fixed at some future date } | Export-Excel -NoNumberConversion IPAddress, StrLeadZero, StrAltPhone2 -WorkSheetname MixedTypes -Path $path2 Context "Simplest copy" { BeforeAll { Copy-ExcelWorkSheet -SourceWorkbook $path1 -DestinationWorkbook $path2 $excel = Open-ExcelPackage -Path $path2 $ws = $excel.Workbook.Worksheets["Processes"] } it "Inserted a worksheet " { $Excel.Workbook.Worksheets.count | Should be 2 $ws | Should not benullorEmpty $ws.Dimension.Address | should be $ProcRange } } Context "Mixed types using a package object" { BeforeAll { Copy-ExcelWorkSheet -SourceWorkbook $excel -DestinationWorkbook $excel -DestinationWorkSheet "CopyOfMixedTypes" Close-ExcelPackage -ExcelPackage $excel $excel = Open-ExcelPackage -Path $path2 $ws = $Excel.Workbook.Worksheets[3] } it "Copied a worksheet, giving the expected name, number of rows and number of columns " { $Excel.Workbook.Worksheets.count | Should be 3 $ws | Should not benullorEmpty $ws.Name | Should be "CopyOfMixedTypes" $ws.Dimension.Columns | Should be 22 $ws.Dimension.Rows | Should be 2 } it "Copied the expected data into the worksheet " { $ws.Cells[2, 1].Value.Gettype().name | Should be 'DateTime' $ws.Cells[2, 2].Formula | Should be 'SUM(F2:G2)' $ws.Cells[2, 5].Value.GetType().name | Should be 'String' $ws.Cells[2, 6].Value.GetType().name | Should be 'String' $ws.Cells[2, 18].Value.GetType().name | Should be 'String' ($ws.Cells[2, 11].Value -is [valuetype] ) | Should be $true ($ws.Cells[2, 12].Value -is [valuetype] ) | Should be $true ($ws.Cells[2, 13].Value -is [valuetype] ) | Should be $true $ws.Cells[2, 11].Value | Should beLessThan 0 $ws.Cells[2, 12].Value | Should beLessThan 0 $ws.Cells[2, 13].Value | Should beLessThan 0 if ((Get-Culture).NumberFormat.NumberGroupSeparator -EQ ",") { ($ws.Cells[2, 8].Value -is [valuetype] ) | Should be $true $ws.Cells[2, 9].Value.GetType().name | Should be 'String' } elseif ((Get-Culture).NumberFormat.NumberGroupSeparator -EQ ".") { ($ws.Cells[2, 9].Value -is [valuetype] ) | Should be $true $ws.Cells[2, 8].Value.GetType().name | Should be 'String' } ($ws.Cells[2, 14].Value -is [valuetype] ) | Should be $true $ws.Cells[2, 15].Value.GetType().name | Should be 'String' $ws.Cells[2, 16].Value.GetType().name | Should be 'String' $ws.Cells[2, 17].Value.GetType().name | Should be 'String' ($ws.Cells[2, 19].Value -is [valuetype] ) | Should be $true ($ws.Cells[2, 20].Value -is [valuetype] ) | Should be $true } } Context "Copy worksheet should close all files" { BeforeAll { $xlfile = "TestDrive:\reports.xlsx" $xlfileArchive = "TestDrive:\reportsArchive.xlsx" Remove-Item $xlfile -ErrorAction SilentlyContinue Remove-Item $xlfileArchive -ErrorAction SilentlyContinue $sheets = "1.1.2019", "1.2.2019", "1.3.2019", "1.4.2019", "1.5.2019" $sheets | ForEach-Object { "Hello World" | Export-Excel $xlfile -WorksheetName $_ } } it "Should copy and remove sheets " { $targetSheets = "1.1.2019", "1.4.2019" $targetSheets | ForEach-Object { Copy-ExcelWorkSheet -SourceWorkbook $xlfile -DestinationWorkbook $xlfileArchive -SourceWorkSheet $_ -DestinationWorkSheet $_ } $targetSheets | ForEach-Object { Remove-WorkSheet -FullName $xlfile -WorksheetName $_ } (Get-ExcelSheetInfo -Path $xlfile ).Count | Should Be 3 } } Context "Copy worksheet should support piped input" { BeforeAll { $xlfile = "TestDrive:\reports.xlsx" $xlfileArchive = "TestDrive:\reportsArchive.xlsx" Remove-Item $xlfile -ErrorAction SilentlyContinue Remove-Item $xlfileArchive -ErrorAction SilentlyContinue $sheets = "1.1.2019", "1.2.2019", "1.3.2019", "1.4.2019", "1.5.2019" $sheets | ForEach-Object { "Hello World" | Export-Excel $xlfile -WorksheetName $_ } $e = Open-ExcelPackage $xlfile $e.Workbook.Worksheets | Copy-ExcelWorkSheet -DestinationWorkbook $xlfileArchive Close-ExcelPackage -NoSave $e } it "Should copy sheets piped into the command " { $excel = Open-ExcelPackage $xlfileArchive $excel.Workbook.Worksheets.Count | should be 5 $excel.Workbook.Worksheets['1.3.2019'].Cells['A1'].Value | should be 'Hello World' } } } |