mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-06 00:23:20 +00:00
Merge pull request #803 from jhoneill/master
fix #802 and #795. Extra examples including pester-xlsx
This commit is contained in:
145
Examples/Pester-To-XLSx.ps1
Normal file
145
Examples/Pester-To-XLSx.ps1
Normal file
@@ -0,0 +1,145 @@
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSPossibleIncorrectComparisonWithNull','',Justification='Intentional use to select non null array items')]
|
||||
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
||||
param(
|
||||
[Parameter(Position=0)]
|
||||
[string]$XLFile,
|
||||
|
||||
[Parameter(ParameterSetName='Default',Position=1)]
|
||||
[Alias('Path', 'relative_path')]
|
||||
[object[]]$Script = '.',
|
||||
|
||||
[Parameter(ParameterSetName='Existing',Mandatory=$true)]
|
||||
[switch]
|
||||
$UseExisting,
|
||||
|
||||
[Parameter(ParameterSetName='Default', Position=2)]
|
||||
[Parameter(ParameterSetName='Existing',Position=2, Mandatory=$true)]
|
||||
[string]$OutputFile,
|
||||
|
||||
[Parameter(ParameterSetName='Default')]
|
||||
[Alias("Name")]
|
||||
[string[]]$TestName,
|
||||
|
||||
[Parameter(ParameterSetName='Default')]
|
||||
[switch]$EnableExit,
|
||||
|
||||
[Parameter(ParameterSetName='Default')]
|
||||
[Alias('Tags')]
|
||||
[string[]]$Tag,
|
||||
[string[]]$ExcludeTag,
|
||||
|
||||
[Parameter(ParameterSetName='Default')]
|
||||
[switch]$Strict,
|
||||
|
||||
[string]$WorkSheetName = 'PesterResults',
|
||||
[switch]$append,
|
||||
[switch]$Show
|
||||
)
|
||||
|
||||
$InvokePesterParams = @{OutputFormat = 'NUnitXml'} + $PSBoundParameters
|
||||
if (-not $InvokePesterParams['OutputFile']) {
|
||||
$InvokePesterParams['OutputFile'] = Join-Path -ChildPath 'Pester.xml'-Path ([environment]::GetFolderPath([System.Environment+SpecialFolder]::MyDocuments))
|
||||
}
|
||||
if ($InvokePesterParams['Show'] ) {}
|
||||
if ($InvokePesterParams['XLFile']) {$InvokePesterParams.Remove('XLFile')}
|
||||
else {$XLFile = $InvokePesterParams['OutputFile'] -replace '.xml$','.xlsx'}
|
||||
if (-not $UseExisting) {
|
||||
$InvokePesterParams.Remove('Append')
|
||||
$InvokePesterParams.Remove('UseExisting')
|
||||
$InvokePesterParams.Remove('Show')
|
||||
$InvokePesterParams.Remove('WorkSheetName')
|
||||
Invoke-Pester @InvokePesterParams
|
||||
}
|
||||
|
||||
if (-not (Test-Path -Path $InvokePesterParams['OutputFile'])) {
|
||||
throw "Could not output file $($InvokePesterParams['OutputFile'])"; return
|
||||
}
|
||||
|
||||
$resultXML = ([xml](Get-Content $InvokePesterParams['OutputFile'])).'test-results'
|
||||
$startDate = [datetime]$resultXML.date
|
||||
$startTime = $resultXML.time
|
||||
$machine = $resultXML.environment.'machine-name'
|
||||
#$user = $resultXML.environment.'user-domain' + '\' + $resultXML.environment.user
|
||||
$os = $resultXML.environment.platform -replace '\|.*$'," $($resultXML.environment.'os-version')"
|
||||
<#hierarchy goes
|
||||
root, [date], start [time], [Name] (always "Pester"), test results broken down as [total],[errors],[failures],[not-run] etc.
|
||||
Environment (user & machine info)
|
||||
Culture-Info (current, and currentUi culture)
|
||||
Test-Suite [name] = "Pester" [result], [time] to execute, etc.
|
||||
Results
|
||||
Test-Suite [name] = filename,[result], [Time] to Execute etc
|
||||
Results
|
||||
Test-Suite [Name] = Describe block Name, [result], [Time] to execute etc..
|
||||
Results
|
||||
Test-Suite [Name] = Context block name [result], [Time] to execute etc.
|
||||
Results
|
||||
Test-Case [name] = Describe.Context.It block names [description]= it block name, result], [Time] to execute etc
|
||||
or if the tests are parameterized
|
||||
Test suite [description] - name in the the it block with <vars> not filled in
|
||||
Results
|
||||
Test-case [description] - name as rendered for display with <vars> filled in
|
||||
#>
|
||||
$testResults = foreach ($test in $resultXML.'test-suite'.results.'test-suite') {
|
||||
$testPs1File = $test.name
|
||||
#Test if there are context blocks in the hierarchy OR if we go straight from Describe to test-case
|
||||
if ($test.results.'test-suite'.results.'test-suite' -ne $null) {
|
||||
foreach ($suite in $test.results.'test-suite') {
|
||||
$Describe = $suite.description
|
||||
foreach ($subsuite in $suite.results.'test-suite') {
|
||||
$Context = $subsuite.description
|
||||
if ($subsuite.results.'test-suite'.results.'test-case') {
|
||||
$testCases = $subsuite.results.'test-suite'.results.'test-case'
|
||||
}
|
||||
else {$testCases = $subsuite.results.'test-case'}
|
||||
$testCases | ForEach-Object {
|
||||
New-Object -TypeName psobject -Property ([ordered]@{
|
||||
Machine = $machine ; OS = $os
|
||||
Date = $startDate ; Time = $startTime
|
||||
Executed = $(if ($_.executed -eq 'True') {1})
|
||||
Success = $(if ($_.success -eq 'True') {1})
|
||||
Duration = $_.time
|
||||
File = $testPs1File; Group = $Describe
|
||||
SubGroup = $Context ; Name =($_.Description -replace '\s{2,}', ' ')
|
||||
Result = $_.result ; FullDesc = '=Group&" "&SubGroup&" "&Name'})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$test.results.'test-suite' | ForEach-Object {
|
||||
$Describe = $_.description
|
||||
$_.results.'test-case'| ForEach-Object {
|
||||
New-Object -TypeName psobject -Property ([ordered]@{
|
||||
Machine = $machine ; OS = $os
|
||||
Date = $startDate ; Time = $startTime
|
||||
Executed = $(if ($_.executed -eq 'True') {1})
|
||||
Success = $(if ($_.success -eq 'True') {1})
|
||||
Duration = $_.time
|
||||
File = $testPs1File; Group = $Describe
|
||||
SubGroup = $null ; Name =($_.Description -replace '\s{2,}', ' ')
|
||||
Result = $_.result ; FullDesc = '=Group&" "&Test'})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (-not $testResults) {Write-Warning 'No Results found' ; return}
|
||||
$clearSheet = -not $Append
|
||||
$excel = $testResults | Export-Excel -Path $xlFile -WorkSheetname $WorkSheetName -ClearSheet:$clearSheet -Append:$append -PassThru -BoldTopRow -FreezeTopRow -AutoSize -AutoFilter -AutoNameRange
|
||||
$ws = $excel.Workbook.Worksheets[$WorkSheetName]
|
||||
<# Worksheet should look like ..
|
||||
|A |B |C D |E |F |G |H |I |J |K |L |M
|
||||
1|Machine |OS |Date Time |Executed |Success |Duration |File |Group |SubGroup |Name |Result |FullDescription
|
||||
2|Flatfish |Name_Version |[run started] |Boolean |Boolean |In seconds |xx.ps1 |Describe |Context |It |Success |Desc_Context_It
|
||||
#>
|
||||
|
||||
#Display Date as a date, not a date time
|
||||
Set-Column -Worksheet $ws -Column 3 -NumberFormat 'Short Date' # -AutoSize
|
||||
|
||||
#Hide columns E to J (Executed, Success, Duration, File, Group and Subgroup)
|
||||
(5..10) | ForEach-Object {Set-ExcelColumn -Worksheet $ws -Column $_ -Hide }
|
||||
|
||||
#Use conditional formatting to make Failures red, and Successes green (skipped remains black ) ... and save
|
||||
$endRow = $ws.Dimension.End.Row
|
||||
Add-ConditionalFormatting -WorkSheet $ws -range "L2:L$endrow" -RuleType ContainsText -ConditionValue "Failure" -BackgroundPattern None -ForegroundColor Red -Bold
|
||||
Add-ConditionalFormatting -WorkSheet $ws -range "L2:L$endRow" -RuleType ContainsText -ConditionValue "Success" -BackgroundPattern None -ForeGroundColor Green
|
||||
Close-ExcelPackage -ExcelPackage $excel -Show:$show
|
||||
21
Examples/PsGallery.ps1
Normal file
21
Examples/PsGallery.ps1
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
$top1000 = foreach ($p in 1..50) {
|
||||
$c = Invoke-WebRequest -Uri "https://www.powershellgallery.com/packages" -method Post -Body "q=&sortOrder=package-download-count&page=$p"
|
||||
[regex]::Matches($c.Content,'<table class="width-hundred-percent">.*?</table>', [System.Text.RegularExpressions.RegexOptions]::Singleline) | foreach {
|
||||
$name = [regex]::Match($_, "(?<=<h1><a href=.*?>).*(?=</a></h1>)").value
|
||||
$n = [regex]::replace($_,'^.*By:\s*<li role="menuitem">','', [System.Text.RegularExpressions.RegexOptions]::Singleline)
|
||||
$n = [regex]::replace($n,'</div>.*$','', [System.Text.RegularExpressions.RegexOptions]::Singleline)
|
||||
$by = [regex]::match($n,'(?<=">).*(?=</a>)').value
|
||||
$qty = [regex]::match($n,'\S*(?= downloads)').value
|
||||
[PSCustomObject]@{
|
||||
Name = $name
|
||||
by = $by
|
||||
Downloads = $qty
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
del "~\Documents\gallery.xlsx"
|
||||
$pivotdef = New-PivotTableDefinition -PivotTableName 'Summary' -PivotRows by -PivotData @{name="Count"
|
||||
Downloads="Sum"} -PivotDataToColumn -Activate -ChartType ColumnClustered -PivotNumberFormat '#,###'
|
||||
$top1000 | export-excel -path '~\Documents\gallery.xlsx' -Numberformat '#,###' -PivotTableDefinition $pivotdef -TableName 'TopDownloads' -Show
|
||||
78
Examples/Subtotals.ps1
Normal file
78
Examples/Subtotals.ps1
Normal file
@@ -0,0 +1,78 @@
|
||||
$Data = ConvertFrom-Csv @'
|
||||
Product, City, Gross, Net
|
||||
Apple, London , 300, 250
|
||||
Orange, London , 400, 350
|
||||
Banana, London , 300, 200
|
||||
Grape, Munich, 100, 100
|
||||
Orange, Paris, 600, 500
|
||||
Banana, Paris, 300, 200
|
||||
Apple, New York, 1200,700
|
||||
'@
|
||||
$ExcelPath = "$env:temp\subtotal.xlsx"
|
||||
$SheetName = 'Sheet1'
|
||||
Remove-Item -Path $ExcelPath -ErrorAction SilentlyContinue
|
||||
|
||||
|
||||
$GroupByFieldName = 'City'
|
||||
$TotalSingleRows = $false
|
||||
$GrandTotal = $false
|
||||
$SubtotalRowHeight = 0 #If non zero will set subtotals to this height
|
||||
$Subtotals =@{ 'Net' = {"=SUBTOTAL(3,D{0}:D{1})" -f $from, $to}
|
||||
|
||||
|
||||
}
|
||||
$SubtotalFieldName = 'Net'
|
||||
|
||||
$SubtotalFormula = '=SUBTOTAL(3,D{0}:D{1})' # {0} and {1} are placeholders for the first and last row. D is the column to total in
|
||||
# 1=AVERAGE; 2=COUNT; 3=COUNTA; 4=MAX; 5=MIN; 6=PRODUCT; 7=STDEV; 8=STDEVP; 9=SUM; 10=VAR; 11=VARP add 100 to ignore hidden values
|
||||
|
||||
#at each change in the Group by field, insert a subtotal (count) formula in the title column & send to excel - list those rows and make them half height after export
|
||||
$currentRow = 2
|
||||
$lastChangeRow = 2
|
||||
$insertedRows = @()
|
||||
#$hideRows = @()
|
||||
$lastValue = $Data[0].$GroupByFieldName
|
||||
$excel = $Data | ForEach-Object -Process {
|
||||
if ($_.$GroupByFieldName -ne $lastvalue) {
|
||||
if ($lastChangeRow -lt ($currentrow - 1) -or $totalSingleRows) {
|
||||
$formula = $SubtotalFormula -f $lastChangeRow, ($currentrow - 1)
|
||||
$insertedRows += $currentRow
|
||||
[pscustomobject]@{$SubtotalFieldName = $formula}
|
||||
$currentRow += 1
|
||||
}
|
||||
$lastChangeRow = $currentRow
|
||||
$lastValue = $_.$GroupByFieldName
|
||||
}
|
||||
$_
|
||||
$currentRow += 1
|
||||
} -end {
|
||||
$formula = $SubtotalFormula -f $lastChangeRow, ($currentrow - 1)
|
||||
[pscustomobject]@{$SubtotalFieldName=$formula}
|
||||
if ($GrandTotal) {
|
||||
$formula = $SubtotalFormula -f $lastChangeRow, ($currentrow - 1)
|
||||
[pscustomobject]@{$SubtotalFieldName=$formula}
|
||||
}
|
||||
} | Export-Excel -Path $ExcelPath -PassThru -AutoSize -AutoFilter -BoldTopRow -WorksheetName $sheetName
|
||||
|
||||
#We kept a lists of the total rows. Since single rows won't get expanded/collapsed hide them.
|
||||
if ($subtotalrowHeight) {
|
||||
foreach ($r in $insertedrows) { $excel.WorkItems.Row($r).Height = $SubtotalRowHeight}
|
||||
}
|
||||
#foreach ($r in $hideRows) { $excel.$SheetName.Row($r).hidden = $true}
|
||||
$range = $excel.$SheetName.Dimension.Address
|
||||
$sheetIndex = $excel.Sheet1.Index
|
||||
Close-ExcelPackage -ExcelPackage $excel
|
||||
|
||||
try { $excelApp = New-Object -ComObject "Excel.Application" }
|
||||
catch { Write-Warning "Could not start Excel application - which usually means it is not installed." ; return }
|
||||
|
||||
try { $excelWorkBook = $excelApp.Workbooks.Open($ExcelPath) }
|
||||
catch { Write-Warning -Message "Could not Open $ExcelPath." ; return }
|
||||
$ws = $excelWorkBook.Worksheets.Item($sheetIndex)
|
||||
$null = $ws.Range($range).Select()
|
||||
$null = $excelapp.Selection.AutoOutline()
|
||||
$excelWorkBook.Save()
|
||||
$excelWorkBook.Close()
|
||||
$excelApp.Quit()
|
||||
|
||||
Start-Process $ExcelPath
|
||||
@@ -29,7 +29,7 @@ function ConvertTo-PesterTest {
|
||||
|
||||
`$target.psobject.Properties.name | ForEach-Object {`$p=@{}} {`$p.`$_=`$(`$target.`$_)}
|
||||
|
||||
Invoke-RestMethod @p | Should Be '$($record.ExpectedResult)'
|
||||
Invoke-RestMethod @p | Should -Be '$($record.ExpectedResult)'
|
||||
}
|
||||
|
||||
"@
|
||||
|
||||
@@ -30,7 +30,7 @@ function Test-APIReadXls {
|
||||
|
||||
`$target.psobject.Properties.name | ForEach-Object {`$p=@{}} {`$p.`$_=`$(`$target.`$_)}
|
||||
|
||||
Invoke-RestMethod @p | Should Be '$($record.ExpectedResult)'
|
||||
Invoke-RestMethod @p | Should -Be '$($record.ExpectedResult)'
|
||||
}
|
||||
|
||||
"@
|
||||
|
||||
@@ -1,140 +0,0 @@
|
||||
---
|
||||
external help file: ImportExcel-help.xml
|
||||
Module Name: ImportExcel
|
||||
online version:
|
||||
schema: 2.0.0
|
||||
---
|
||||
|
||||
# ConvertFrom-ExcelSheet
|
||||
|
||||
## SYNOPSIS
|
||||
Reads an Excel file an converts the data to a delimited text file.
|
||||
|
||||
## SYNTAX
|
||||
|
||||
```
|
||||
ConvertFrom-ExcelSheet [-Path] <String> [[-OutputPath] <String>] [[-SheetName] <String>] [[-Encoding] <String>]
|
||||
[[-Extension] <String>] [[-Delimiter] <String>] [<CommonParameters>]
|
||||
```
|
||||
|
||||
## DESCRIPTION
|
||||
{{ Fill in the Description }}
|
||||
|
||||
## EXAMPLES
|
||||
|
||||
### EXAMPLE 1
|
||||
```
|
||||
ConvertFrom-ExcelSheet .\TestSheets.xlsx .\data
|
||||
```
|
||||
|
||||
Reads each sheet in TestSheets.xlsx and outputs it to the data directory as the sheet name with the extension .txt.
|
||||
|
||||
### EXAMPLE 2
|
||||
```
|
||||
ConvertFrom-ExcelSheet .\TestSheets.xlsx .\data sheet?0
|
||||
```
|
||||
|
||||
Reads and outputs sheets like Sheet10 and Sheet20 form TestSheets.xlsx and outputs it to the data directory as the sheet name with the extension .txt.
|
||||
|
||||
## PARAMETERS
|
||||
|
||||
### -Path
|
||||
{{ Fill Path Description }}
|
||||
|
||||
```yaml
|
||||
Type: String
|
||||
Parameter Sets: (All)
|
||||
Aliases: FullName
|
||||
|
||||
Required: True
|
||||
Position: 1
|
||||
Default value: None
|
||||
Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -OutputPath
|
||||
{{ Fill OutputPath Description }}
|
||||
|
||||
```yaml
|
||||
Type: String
|
||||
Parameter Sets: (All)
|
||||
Aliases:
|
||||
|
||||
Required: False
|
||||
Position: 2
|
||||
Default value: .\
|
||||
Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -SheetName
|
||||
{{ Fill SheetName Description }}
|
||||
|
||||
```yaml
|
||||
Type: String
|
||||
Parameter Sets: (All)
|
||||
Aliases:
|
||||
|
||||
Required: False
|
||||
Position: 3
|
||||
Default value: *
|
||||
Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -Encoding
|
||||
{{ Fill Encoding Description }}
|
||||
|
||||
```yaml
|
||||
Type: String
|
||||
Parameter Sets: (All)
|
||||
Aliases:
|
||||
|
||||
Required: False
|
||||
Position: 4
|
||||
Default value: UTF8
|
||||
Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -Extension
|
||||
{{ Fill Extension Description }}
|
||||
|
||||
```yaml
|
||||
Type: String
|
||||
Parameter Sets: (All)
|
||||
Aliases:
|
||||
|
||||
Required: False
|
||||
Position: 5
|
||||
Default value: .csv
|
||||
Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -Delimiter
|
||||
{{ Fill Delimiter Description }}
|
||||
|
||||
```yaml
|
||||
Type: String
|
||||
Parameter Sets: (All)
|
||||
Aliases:
|
||||
|
||||
Required: False
|
||||
Position: 6
|
||||
Default value: ;
|
||||
Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### CommonParameters
|
||||
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||
|
||||
## INPUTS
|
||||
|
||||
## OUTPUTS
|
||||
|
||||
## NOTES
|
||||
|
||||
## RELATED LINKS
|
||||
@@ -15,7 +15,8 @@ function ConvertFrom-ExcelSheet {
|
||||
$Property = "*",
|
||||
$ExcludeProperty = @(),
|
||||
[switch]$Append,
|
||||
[string[]]$AsText = @()
|
||||
[string[]]$AsText = @(),
|
||||
[string[]]$AsDate = @()
|
||||
)
|
||||
|
||||
$Path = (Resolve-Path $Path).Path
|
||||
@@ -25,7 +26,7 @@ function ConvertFrom-ExcelSheet {
|
||||
$targetSheets = $workbook.Worksheets | Where-Object {$_.Name -Like $SheetName}
|
||||
|
||||
$csvParams = @{NoTypeInformation = $true} + $PSBoundParameters
|
||||
foreach ($p in 'OutputPath', 'SheetName', 'Extension', 'Property','ExcludeProperty', 'AsText') {
|
||||
foreach ($p in 'OutputPath', 'SheetName', 'Extension', 'Property','ExcludeProperty', 'AsText','AsDate') {
|
||||
$csvParams.Remove($p)
|
||||
}
|
||||
|
||||
@@ -34,7 +35,7 @@ function ConvertFrom-ExcelSheet {
|
||||
|
||||
$csvParams.Path = "$OutputPath\$($Sheet.Name)$Extension"
|
||||
|
||||
Import-Excel -ExcelPackage $xl -Sheet $($sheet.Name) -AsText:$AsText |
|
||||
Import-Excel -ExcelPackage $xl -Sheet $($sheet.Name) -AsText:$AsText -AsDate:$AsDate |
|
||||
Select-Object -Property $Property | Export-Csv @csvparams
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
[Switch]$TitleBold,
|
||||
[Int]$TitleSize = 22,
|
||||
$TitleBackgroundColor,
|
||||
[parameter(DontShow=$true)]
|
||||
[Switch]$IncludePivotTable,
|
||||
[String]$PivotTableName,
|
||||
[String[]]$PivotRows,
|
||||
@@ -31,7 +32,8 @@
|
||||
[Switch]$PivotDataToColumn,
|
||||
[Hashtable]$PivotTableDefinition,
|
||||
[Switch]$IncludePivotChart,
|
||||
[OfficeOpenXml.Drawing.Chart.eChartType]$ChartType = 'Pie',
|
||||
[Alias('ChartType')]
|
||||
[OfficeOpenXml.Drawing.Chart.eChartType]$PivotChartType = 'Pie',
|
||||
[Switch]$NoLegend,
|
||||
[Switch]$ShowCategory,
|
||||
[Switch]$ShowPercent,
|
||||
@@ -442,7 +444,7 @@
|
||||
Add-PivotTable -ExcelPackage $pkg -PivotTableName $item.key @Params
|
||||
}
|
||||
}
|
||||
if ($IncludePivotTable -or $IncludePivotChart) {
|
||||
if ($IncludePivotTable -or $IncludePivotChart -or $PivotData) {
|
||||
$params = @{
|
||||
'SourceRange' = $dataRange
|
||||
}
|
||||
@@ -461,9 +463,10 @@
|
||||
if ($NoTotalsInPivot) {$params.PivotTotals = "None" }
|
||||
Elseif ($PivotTotals) {$params.PivotTotals = $PivotTotals}
|
||||
if ($PivotDataToColumn) {$params.PivotDataToColumn = $true}
|
||||
if ($IncludePivotChart) {
|
||||
if ($IncludePivotChart -or
|
||||
$PSBoundParameters.ContainsKey('PivotChartType')) {
|
||||
$params.IncludePivotChart = $true
|
||||
$Params.ChartType = $ChartType
|
||||
$Params.ChartType = $PivotChartType
|
||||
if ($ShowCategory) {$params.ShowCategory = $true}
|
||||
if ($ShowPercent) {$params.ShowPercent = $true}
|
||||
if ($NoLegend) {$params.NoLegend = $true}
|
||||
@@ -474,12 +477,24 @@
|
||||
try {
|
||||
#Allow single switch or two seperate ones.
|
||||
if ($FreezeTopRowFirstColumn -or ($FreezeTopRow -and $FreezeFirstColumn)) {
|
||||
$ws.View.FreezePanes(2, 2)
|
||||
Write-Verbose -Message "Froze top row and first column"
|
||||
if ($Title) {
|
||||
$ws.View.FreezePanes(3, 2)
|
||||
Write-Verbose -Message "Froze title and header rows and first column"
|
||||
}
|
||||
else {
|
||||
$ws.View.FreezePanes(2, 2)
|
||||
Write-Verbose -Message "Froze top row and first column"
|
||||
}
|
||||
}
|
||||
elseif ($FreezeTopRow) {
|
||||
$ws.View.FreezePanes(2, 1)
|
||||
Write-Verbose -Message "Froze top row"
|
||||
if ($Title) {
|
||||
$ws.View.FreezePanes(2, 1)
|
||||
Write-Verbose -Message "Froze title and header rows"
|
||||
}
|
||||
else {
|
||||
$ws.View.FreezePanes(2, 1)
|
||||
Write-Verbose -Message "Froze top row"
|
||||
}
|
||||
}
|
||||
elseif ($FreezeFirstColumn) {
|
||||
$ws.View.FreezePanes(1, 2)
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
[Int]$EndColumn ,
|
||||
[Switch]$DataOnly,
|
||||
[string[]]$AsText,
|
||||
[string[]]$AsDate,
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[String]$Password
|
||||
)
|
||||
@@ -49,9 +50,9 @@
|
||||
}
|
||||
function Get-PropertyNames {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Create objects containing the column number and the column name for each of the different header types.
|
||||
#>
|
||||
.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)]
|
||||
@@ -82,7 +83,8 @@
|
||||
}
|
||||
|
||||
foreach ($C in $Columns) {
|
||||
$Worksheet.Cells[$StartRow, $C] | Where-Object { $_.Value } | Select-Object @{N = 'Column'; E = { $C } }, Value
|
||||
#allow "False" or "0" to be column headings
|
||||
$Worksheet.Cells[$StartRow, $C] | Where-Object {-not [string]::IsNullOrEmpty($_.Value) } | Select-Object @{N = 'Column'; E = { $C } }, Value
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -165,25 +167,39 @@
|
||||
}
|
||||
else {
|
||||
#region Create one object per row
|
||||
if ($AsText) {
|
||||
if ($AsText -or $AsDate) {
|
||||
<#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("~~~", "$|^") + "$"
|
||||
# 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 = ''
|
||||
if ($AsText) {
|
||||
$TextColExpression += '(?<astext>^' + [regex]::Escape($AsText -join '~~~').replace('\*', '.*').replace('~~~', '$|^') + '$)'
|
||||
}
|
||||
if ($AsText -and $AsDate) {
|
||||
$TextColExpression += "|"
|
||||
}
|
||||
if ($AsDate) {
|
||||
$TextColExpression += '(?<asDate>^' + [regex]::Escape($AsDate -join '~~~').replace('\*', '.*').replace('~~~', '$|^') + '$)'
|
||||
}
|
||||
$TextColRegEx = New-Object -TypeName regex -ArgumentList $TextColExpression , 9
|
||||
}
|
||||
else {$TextColRegEx = $null}
|
||||
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
|
||||
$MatchTest = $TextColRegEx.Match($P.value)
|
||||
if ($MatchTest.groups.name -eq "astext") {
|
||||
$NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Text
|
||||
}
|
||||
else { $NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Value }
|
||||
elseif ($MatchTest.groups.name -eq "asdate" -and $Worksheet.Cells[$R, $P.Column].Value -is [System.ValueType]) {
|
||||
$NewRow[$P.Value] = [datetime]::FromOADate(($Worksheet.Cells[$R, $P.Column].Value))
|
||||
}
|
||||
else { $NewRow[$P.Value] = $Worksheet.Cells[$R, $P.Column].Value }
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
function Merge-MultipleSheets {
|
||||
function Merge-MultipleSheets {
|
||||
[CmdletBinding()]
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '', Justification="False positives when initializing variable in begin block")]
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '', Justification="MultipleSheet would be incorrect")]
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
$headings = $DifferenceObject[0].psobject.Properties.Name # This preserves the sequence - using Get-member would sort them alphabetically! There may be extra properties in
|
||||
if ($NoHeader -and "Name" -eq $Key) {$Key = "p1"}
|
||||
if ($headings -notcontains $Key -and
|
||||
('*' -ne $Key)) {Write-Warning -Message "You need to specify one of the headings in the sheet '$Worksheet1' as a key." ; return }
|
||||
('*' -ne $Key)) {Write-Warning -Message "You need to specify one of the headings in the sheet '$Worksheet2' as a key." ; return }
|
||||
foreach ($p in $Property) { $propList += ($headings.where({$_ -like $p}) )}
|
||||
foreach ($p in $ExcludeProperty) { $propList = $propList.where({$_ -notlike $p}) }
|
||||
if (($propList -notcontains $Key) -and
|
||||
|
||||
@@ -39,6 +39,7 @@ function New-ExcelStyle {
|
||||
[Switch]$AutoSize,
|
||||
[float]$Width,
|
||||
[float]$Height,
|
||||
[Alias('Hide')]
|
||||
[Switch]$Hidden,
|
||||
[Switch]$Locked,
|
||||
[Switch]$Merge
|
||||
|
||||
@@ -62,6 +62,9 @@ function New-PivotTableDefinition {
|
||||
$parameters.Remove('NoTotalsInPivot')
|
||||
$parameters["PivotTotals"] = "None"
|
||||
}
|
||||
if ($PSBoundParameters.ContainsKey('ChartType') -and -not $PSBoundParameters.ContainsKey('IncludePivotChart')) {
|
||||
$parameters['IncludePivotChart'] = $true
|
||||
}
|
||||
$parameters.Remove('PivotTableName')
|
||||
if ($PivotChartDefinition) {
|
||||
$parameters.PivotChartDefinition.XRange = $null
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
[Switch]$AutoSize,
|
||||
[float]$Width,
|
||||
[Switch]$AutoNameRange,
|
||||
[Alias('Hidden')]
|
||||
[Switch]$Hide,
|
||||
[Switch]$Specified,
|
||||
[Switch]$PassThru
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
[Switch]$AutoSize,
|
||||
[float]$Width,
|
||||
[float]$Height,
|
||||
[Alias('Hide')]
|
||||
[Switch]$Hidden,
|
||||
[Switch]$Locked,
|
||||
[Switch]$Merge
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
[ValidateRange(-90, 90)]
|
||||
[int]$TextRotation ,
|
||||
[float]$Height,
|
||||
[Alias('Hidden')]
|
||||
[Switch]$Hide,
|
||||
[Switch]$ReturnRange,
|
||||
[Switch]$PassThru
|
||||
|
||||
@@ -32,7 +32,7 @@ South,avocado,73
|
||||
$excel = Open-ExcelPackage -Path $xlfile
|
||||
$ws = $excel.Workbook.Worksheets["Sheet1"]
|
||||
|
||||
$ws.Drawings[0].Series.TrendLines.Type | Should Be 'Linear'
|
||||
$ws.Drawings[0].Series.TrendLines.Type | Should -Be 'Linear'
|
||||
|
||||
Close-ExcelPackage $excel
|
||||
}
|
||||
@@ -45,7 +45,7 @@ South,avocado,73
|
||||
$excel = Open-ExcelPackage -Path $xlfile
|
||||
$ws = $excel.Workbook.Worksheets["Sheet1"]
|
||||
|
||||
$ws.Drawings[0].Series.TrendLines.Type | Should Be 'MovingAvgerage'
|
||||
$ws.Drawings[0].Series.TrendLines.Type | Should -Be 'MovingAvgerage'
|
||||
|
||||
Close-ExcelPackage $excel
|
||||
}
|
||||
|
||||
@@ -31,29 +31,29 @@ Describe "Compare Worksheet" {
|
||||
}
|
||||
Context "Simple comparison output" {
|
||||
it "Found the right number of differences " {
|
||||
$comp | should not beNullOrEmpty
|
||||
$comp.Count | should be 4
|
||||
$comp | Should -Not -BeNullOrEmpty
|
||||
$comp.Count | Should -Be 4
|
||||
}
|
||||
it "Found the data row with a changed property " {
|
||||
$comp | should not beNullOrEmpty
|
||||
$comp[0]._Side | should not be $comp[1]._Side
|
||||
$comp[0]._Row | should be 4
|
||||
$comp[1]._Row | should be 4
|
||||
$comp[1].Name | should be $comp[0].Name
|
||||
$comp[0].DisplayName | should be $row4Displayname
|
||||
$comp[1].DisplayName | should be "Changed from the orginal"
|
||||
$comp | Should -Not -BeNullOrEmpty
|
||||
$comp[0]._Side | Should -Not -Be $comp[1]._Side
|
||||
$comp[0]._Row | Should -Be 4
|
||||
$comp[1]._Row | Should -Be 4
|
||||
$comp[1].Name | Should -Be $comp[0].Name
|
||||
$comp[0].DisplayName | Should -Be $row4Displayname
|
||||
$comp[1].DisplayName | Should -Be "Changed from the orginal"
|
||||
}
|
||||
it "Found the inserted data row " {
|
||||
$comp | should not beNullOrEmpty
|
||||
$comp[2]._Side | should be '=>'
|
||||
$comp[2]._Row | should be 5
|
||||
$comp[2].Name | should be "Dummy"
|
||||
$comp | Should -Not -BeNullOrEmpty
|
||||
$comp[2]._Side | Should -Be '=>'
|
||||
$comp[2]._Row | Should -Be 5
|
||||
$comp[2].Name | Should -Be "Dummy"
|
||||
}
|
||||
it "Found the deleted data row " {
|
||||
$comp | should not beNullOrEmpty
|
||||
$comp[3]._Side | should be '<='
|
||||
$comp[3]._Row | should be 6
|
||||
$comp[3].Name | should be $row6Name
|
||||
$comp | Should -Not -BeNullOrEmpty
|
||||
$comp[3]._Side | Should -Be '<='
|
||||
$comp[3]._Row | Should -Be 6
|
||||
$comp[3].Name | Should -Be $row6Name
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,16 +75,16 @@ Describe "Compare Worksheet" {
|
||||
$s2Sheet = $xl2.Workbook.Worksheets[1]
|
||||
}
|
||||
it "Set the background on the right rows " {
|
||||
$s1Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | should be "FF90EE90"
|
||||
$s1Sheet.Cells["6:6"].Style.Fill.BackgroundColor.Rgb | should be "FF90EE90"
|
||||
$s2Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | should be "FF90EE90"
|
||||
$s2Sheet.Cells["5:5"].Style.Fill.BackgroundColor.Rgb | should be "FF90EE90"
|
||||
$s1Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | Should -Be "FF90EE90"
|
||||
$s1Sheet.Cells["6:6"].Style.Fill.BackgroundColor.Rgb | Should -Be "FF90EE90"
|
||||
$s2Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | Should -Be "FF90EE90"
|
||||
$s2Sheet.Cells["5:5"].Style.Fill.BackgroundColor.Rgb | Should -Be "FF90EE90"
|
||||
}
|
||||
it "Didn't set other cells " {
|
||||
$s1Sheet.Cells["3:3"].Style.Fill.BackgroundColor.Rgb | should not be "FF90EE90"
|
||||
$s1Sheet.Cells["F4"].Style.Font.Color.Rgb | should beNullOrEmpty
|
||||
$s2Sheet.Cells["F4"].Style.Font.Color.Rgb | should beNullOrEmpty
|
||||
$s2Sheet.Cells["3:3"].Style.Fill.BackgroundColor.Rgb | should not be "FF90EE90"
|
||||
$s1Sheet.Cells["3:3"].Style.Fill.BackgroundColor.Rgb | Should -Not -Be "FF90EE90"
|
||||
$s1Sheet.Cells["F4"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
$s2Sheet.Cells["F4"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
$s2Sheet.Cells["3:3"].Style.Fill.BackgroundColor.Rgb | Should -Not -Be "FF90EE90"
|
||||
}
|
||||
AfterAll {
|
||||
Close-ExcelPackage -ExcelPackage $xl1 -NoSave
|
||||
@@ -101,18 +101,18 @@ Describe "Compare Worksheet" {
|
||||
$s2Sheet = $xl2.Workbook.Worksheets[1]
|
||||
}
|
||||
it "Added foreground colour to the right cells " {
|
||||
$s1Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | should be "FF90EE90"
|
||||
$s1Sheet.Cells["6:6"].Style.Fill.BackgroundColor.Rgb | should be "FF90EE90"
|
||||
$s2Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | should be "FF90EE90"
|
||||
$s2Sheet.Cells["5:5"].Style.Fill.BackgroundColor.Rgb | should be "FF90EE90"
|
||||
# $s1Sheet.Cells["F4"].Style.Font.Color.Rgb | should be "FF8B0000"
|
||||
$s2Sheet.Cells["F4"].Style.Font.Color.Rgb | should be "FF8B0000"
|
||||
$s1Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | Should -Be "FF90EE90"
|
||||
$s1Sheet.Cells["6:6"].Style.Fill.BackgroundColor.Rgb | Should -Be "FF90EE90"
|
||||
$s2Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | Should -Be "FF90EE90"
|
||||
$s2Sheet.Cells["5:5"].Style.Fill.BackgroundColor.Rgb | Should -Be "FF90EE90"
|
||||
# $s1Sheet.Cells["F4"].Style.Font.Color.Rgb | Should -Be "FF8B0000"
|
||||
$s2Sheet.Cells["F4"].Style.Font.Color.Rgb | Should -Be "FF8B0000"
|
||||
}
|
||||
it "Didn't set the foreground on other cells " {
|
||||
$s1Sheet.Cells["F5"].Style.Font.Color.Rgb | should beNullOrEmpty
|
||||
$s2Sheet.Cells["F5"].Style.Font.Color.Rgb | should beNullOrEmpty
|
||||
$s1Sheet.Cells["G4"].Style.Font.Color.Rgb | should beNullOrEmpty
|
||||
$s2Sheet.Cells["G4"].Style.Font.Color.Rgb | should beNullOrEmpty
|
||||
$s1Sheet.Cells["F5"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
$s2Sheet.Cells["F5"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
$s1Sheet.Cells["G4"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
$s2Sheet.Cells["G4"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
|
||||
}
|
||||
AfterAll {
|
||||
@@ -146,46 +146,46 @@ Describe "Compare Worksheet" {
|
||||
$s2Sheet = $xl2.Workbook.Worksheets["server2"]
|
||||
}
|
||||
it "Found the right number of differences " {
|
||||
$comp | should not beNullOrEmpty
|
||||
$comp.Count | should be 4
|
||||
$comp | Should -Not -BeNullOrEmpty
|
||||
$comp.Count | Should -Be 4
|
||||
}
|
||||
it "Found the data row with a changed property " {
|
||||
$comp | should not beNullOrEmpty
|
||||
$comp[0]._Side | should not be $comp[1]._Side
|
||||
$comp[0]._Row | should be 4
|
||||
$comp[1]._Row | should be 4
|
||||
$comp[1].ServiceName | should be $comp[0].ServiceName
|
||||
$comp[0].DisplayName | should be $row4Displayname
|
||||
$comp[1].DisplayName | should be "Changed from the orginal"
|
||||
$comp | Should -Not -BeNullOrEmpty
|
||||
$comp[0]._Side | Should -Not -Be $comp[1]._Side
|
||||
$comp[0]._Row | Should -Be 4
|
||||
$comp[1]._Row | Should -Be 4
|
||||
$comp[1].ServiceName | Should -Be $comp[0].ServiceName
|
||||
$comp[0].DisplayName | Should -Be $row4Displayname
|
||||
$comp[1].DisplayName | Should -Be "Changed from the orginal"
|
||||
}
|
||||
it "Found the inserted data row " {
|
||||
$comp | should not beNullOrEmpty
|
||||
$comp[2]._Side | should be '=>'
|
||||
$comp[2]._Row | should be 5
|
||||
$comp[2].ServiceName | should be "Dummy"
|
||||
$comp | Should -Not -BeNullOrEmpty
|
||||
$comp[2]._Side | Should -Be '=>'
|
||||
$comp[2]._Row | Should -Be 5
|
||||
$comp[2].ServiceName | Should -Be "Dummy"
|
||||
}
|
||||
it "Found the deleted data row " {
|
||||
$comp | should not beNullOrEmpty
|
||||
$comp[3]._Side | should be '<='
|
||||
$comp[3]._Row | should be 6
|
||||
$comp[3].ServiceName | should be $row6Name
|
||||
$comp | Should -Not -BeNullOrEmpty
|
||||
$comp[3]._Side | Should -Be '<='
|
||||
$comp[3]._Row | Should -Be 6
|
||||
$comp[3].ServiceName | Should -Be $row6Name
|
||||
}
|
||||
it "Set the background on the right rows " {
|
||||
$s1Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | should be "FFFFFFFF"
|
||||
$s1Sheet.Cells["6:6"].Style.Fill.BackgroundColor.Rgb | Should be "FFFFFFFF"
|
||||
$s2Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | Should be "FFFFFFFF"
|
||||
$s2Sheet.Cells["5:5"].Style.Fill.BackgroundColor.Rgb | Should be "FFFFFFFF"
|
||||
$s1Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | Should -Be "FFFFFFFF"
|
||||
$s1Sheet.Cells["6:6"].Style.Fill.BackgroundColor.Rgb | Should -Be "FFFFFFFF"
|
||||
$s2Sheet.Cells["4:4"].Style.Fill.BackgroundColor.Rgb | Should -Be "FFFFFFFF"
|
||||
$s2Sheet.Cells["5:5"].Style.Fill.BackgroundColor.Rgb | Should -Be "FFFFFFFF"
|
||||
|
||||
$s1Sheet.Cells["E4"].Style.Font.Color.Rgb | Should be "FFFF0000"
|
||||
$s2Sheet.Cells["E4"].Style.Font.Color.Rgb | Should be "FFFF0000"
|
||||
$s1Sheet.Cells["E4"].Style.Font.Color.Rgb | Should -Be "FFFF0000"
|
||||
$s2Sheet.Cells["E4"].Style.Font.Color.Rgb | Should -Be "FFFF0000"
|
||||
}
|
||||
it "Didn't set other cells " {
|
||||
$s1Sheet.Cells["3:3"].Style.Fill.BackgroundColor.Rgb | Should not be "FFFFFFFF"
|
||||
$s2Sheet.Cells["3:3"].Style.Fill.BackgroundColor.Rgb | Should not be "FFFFFFFF"
|
||||
$s1Sheet.Cells["E5"].Style.Font.Color.Rgb | Should beNullOrEmpty
|
||||
$s2Sheet.Cells["E5"].Style.Font.Color.Rgb | Should beNullOrEmpty
|
||||
$s1Sheet.Cells["F4"].Style.Font.Color.Rgb | Should beNullOrEmpty
|
||||
$s2Sheet.Cells["F4"].Style.Font.Color.Rgb | Should beNullOrEmpty
|
||||
$s1Sheet.Cells["3:3"].Style.Fill.BackgroundColor.Rgb | Should -Not -Be "FFFFFFFF"
|
||||
$s2Sheet.Cells["3:3"].Style.Fill.BackgroundColor.Rgb | Should -Not -Be "FFFFFFFF"
|
||||
$s1Sheet.Cells["E5"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
$s2Sheet.Cells["E5"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
$s1Sheet.Cells["F4"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
$s2Sheet.Cells["F4"].Style.Font.Color.Rgb | Should -BeNullOrEmpty
|
||||
}
|
||||
AfterAll {
|
||||
Close-ExcelPackage -ExcelPackage $xl1 -NoSave # -Show
|
||||
@@ -219,44 +219,44 @@ Describe "Merge Worksheet" {
|
||||
}
|
||||
Context "Merge with 3 properties" {
|
||||
it "Created a worksheet with the correct headings " {
|
||||
$ws | should not beNullOrEmpty
|
||||
$ws.Cells[ 1,1].Value | Should be "name"
|
||||
$ws.Cells[ 1,2].Value | Should be "DisplayName"
|
||||
$ws.Cells[ 1,3].Value | Should be "StartType"
|
||||
$ws.Cells[ 1,4].Value | Should be "server2 DisplayName"
|
||||
$ws.Cells[ 1,5].Value | Should be "server2 StartType"
|
||||
$ws | Should -Not -BeNullOrEmpty
|
||||
$ws.Cells[ 1,1].Value | Should -Be "name"
|
||||
$ws.Cells[ 1,2].Value | Should -Be "DisplayName"
|
||||
$ws.Cells[ 1,3].Value | Should -Be "StartType"
|
||||
$ws.Cells[ 1,4].Value | Should -Be "server2 DisplayName"
|
||||
$ws.Cells[ 1,5].Value | Should -Be "server2 StartType"
|
||||
}
|
||||
it "Joined the two sheets correctly " {
|
||||
$ws.Cells[ 2,2].Value | Should be $ws.Cells[ 2,4].Value
|
||||
$ws.Cells[ 2,3].Value | Should be $ws.Cells[ 2,5].Value
|
||||
$ws.cells[ 4,4].value | Should be "Changed from the orginal"
|
||||
$ws.cells[ 5,1].value | Should be "Dummy"
|
||||
$ws.cells[ 5,2].value | Should beNullOrEmpty
|
||||
$ws.cells[ 5,3].value | Should beNullOrEmpty
|
||||
$ws.cells[ 5,4].value | Should be "Dummy Service"
|
||||
$ws.cells[ 7,4].value | Should beNullOrEmpty
|
||||
$ws.cells[ 7,5].value | Should beNullOrEmpty
|
||||
$ws.Cells[12,2].Value | Should be $ws.Cells[12,4].Value
|
||||
$ws.Cells[12,3].Value | Should be $ws.Cells[12,5].Value
|
||||
$ws.Cells[ 2,2].Value | Should -Be $ws.Cells[ 2,4].Value
|
||||
$ws.Cells[ 2,3].Value | Should -Be $ws.Cells[ 2,5].Value
|
||||
$ws.cells[ 4,4].value | Should -Be "Changed from the orginal"
|
||||
$ws.cells[ 5,1].value | Should -Be "Dummy"
|
||||
$ws.cells[ 5,2].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 5,3].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 5,4].value | Should -Be "Dummy Service"
|
||||
$ws.cells[ 7,4].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 7,5].value | Should -BeNullOrEmpty
|
||||
$ws.Cells[12,2].Value | Should -Be $ws.Cells[12,4].Value
|
||||
$ws.Cells[12,3].Value | Should -Be $ws.Cells[12,5].Value
|
||||
}
|
||||
it "Highlighted the keys in the added / deleted / changed rows " {
|
||||
$ws.cells[4,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[4,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"
|
||||
}
|
||||
it "Set the background for the added / deleted / changed rows " {
|
||||
$ws.cells["A3:E3"].style.Fill.BackgroundColor.Rgb | Should beNullOrEmpty
|
||||
$ws.cells["A4:E4"].style.Fill.BackgroundColor.Rgb | Should be "FFFFA500"
|
||||
$ws.cells["A5" ].style.Fill.BackgroundColor.Rgb | Should be "FF98FB98"
|
||||
$ws.cells["B5:C5"].style.Fill.BackgroundColor.rgb | Should beNullOrEmpty
|
||||
$ws.cells["D5:E5"].style.Fill.BackgroundColor.Rgb | Should be "FF98FB98"
|
||||
$ws.cells["A7:C7"].style.Fill.BackgroundColor.Rgb | Should be "FFFFB6C1"
|
||||
$ws.cells["D7:E7"].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["A5" ].style.Fill.BackgroundColor.Rgb | Should -Be "FF98FB98"
|
||||
$ws.cells["B5:C5"].style.Fill.BackgroundColor.rgb | Should -BeNullOrEmpty
|
||||
$ws.cells["D5:E5"].style.Fill.BackgroundColor.Rgb | Should -Be "FF98FB98"
|
||||
$ws.cells["A7:C7"].style.Fill.BackgroundColor.Rgb | Should -Be "FFFFB6C1"
|
||||
$ws.cells["D7:E7"].style.Fill.BackgroundColor.rgb | Should -BeNullOrEmpty
|
||||
}
|
||||
}
|
||||
Context "Wider data set" {
|
||||
it "Coped with columns beyond Z in the Output sheet " {
|
||||
{ Merge-Worksheet -Referencefile "TestDrive:\server1.xlsx" -Differencefile "TestDrive:\server2.xlsx" -OutputFile "TestDrive:\combined2.xlsx" } | Should not throw
|
||||
{ Merge-Worksheet -Referencefile "TestDrive:\server1.xlsx" -Differencefile "TestDrive:\server2.xlsx" -OutputFile "TestDrive:\combined2.xlsx" } | Should -Not -Throw
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -296,64 +296,64 @@ Describe "Merge Multiple sheets" {
|
||||
|
||||
}
|
||||
it "Created a worksheet with the correct headings " {
|
||||
$ws | Should not beNullOrEmpty
|
||||
$ws.Cells[ 1,2 ].Value | Should be "name"
|
||||
$ws.Cells[ 1,3 ].Value | Should be "server1 DisplayName"
|
||||
$ws.Cells[ 1,4 ].Value | Should be "server1 StartType"
|
||||
$ws.Cells[ 1,5 ].Value | Should be "server2 DisplayName"
|
||||
$ws.Cells[ 1,6 ].Value | Should be "server2 StartType"
|
||||
$ws.Column(7).hidden | Should be $true
|
||||
$ws.Cells[ 1,8].Value | Should be "server2 Row"
|
||||
$ws.Cells[ 1,9 ].Value | Should be "server3 DisplayName"
|
||||
$ws.Cells[ 1,10].Value | Should be "server3 StartType"
|
||||
$ws.Column(11).hidden | Should be $true
|
||||
$ws.Cells[ 1,12].Value | Should be "server3 Row"
|
||||
$ws | Should -Not -BeNullOrEmpty
|
||||
$ws.Cells[ 1,2 ].Value | Should -Be "name"
|
||||
$ws.Cells[ 1,3 ].Value | Should -Be "server1 DisplayName"
|
||||
$ws.Cells[ 1,4 ].Value | Should -Be "server1 StartType"
|
||||
$ws.Cells[ 1,5 ].Value | Should -Be "server2 DisplayName"
|
||||
$ws.Cells[ 1,6 ].Value | Should -Be "server2 StartType"
|
||||
$ws.Column(7).hidden | Should -Be $true
|
||||
$ws.Cells[ 1,8].Value | Should -Be "server2 Row"
|
||||
$ws.Cells[ 1,9 ].Value | Should -Be "server3 DisplayName"
|
||||
$ws.Cells[ 1,10].Value | Should -Be "server3 StartType"
|
||||
$ws.Column(11).hidden | Should -Be $true
|
||||
$ws.Cells[ 1,12].Value | Should -Be "server3 Row"
|
||||
}
|
||||
it "Joined the three sheets correctly " {
|
||||
$ws.Cells[ 2,3 ].Value | Should be $ws.Cells[ 2,5 ].Value
|
||||
$ws.Cells[ 2,4 ].Value | Should be $ws.Cells[ 2,6 ].Value
|
||||
$ws.Cells[ 2,5 ].Value | Should be $ws.Cells[ 2,9 ].Value
|
||||
$ws.Cells[ 2,6 ].Value | Should be $ws.Cells[ 2,10].Value
|
||||
$ws.cells[ 4,5 ].value | Should be "Changed from the orginal"
|
||||
$ws.cells[ 4,9 ].value | Should be $ws.Cells[ 4,3 ].Value
|
||||
$ws.cells[ 5,2 ].value | Should be "Dummy"
|
||||
$ws.cells[ 5,3 ].value | Should beNullOrEmpty
|
||||
$ws.cells[ 5,4 ].value | Should beNullOrEmpty
|
||||
$ws.cells[ 5,5 ].value | Should be "Dummy Service"
|
||||
$ws.cells[ 5,8 ].value | Should be ($ws.cells[ 4,1].value +1)
|
||||
$ws.cells[ 5,9 ].value | Should be $ws.cells[ 5,5 ].value
|
||||
$ws.cells[ 7,5 ].value | Should beNullOrEmpty
|
||||
$ws.cells[ 7,6 ].value | Should beNullOrEmpty
|
||||
$ws.cells[ 7,9 ].value | Should beNullOrEmpty
|
||||
$ws.cells[ 7,10].value | Should beNullOrEmpty
|
||||
$ws.cells[ 8,3 ].value | Should beNullOrEmpty
|
||||
$ws.cells[ 8,4 ].value | Should beNullOrEmpty
|
||||
$ws.cells[ 8,5 ].value | Should beNullOrEmpty
|
||||
$ws.cells[ 8,6 ].value | Should beNullOrEmpty
|
||||
$ws.cells[11,9 ].value | Should beNullOrEmpty
|
||||
$ws.cells[11,10].value | Should beNullOrEmpty
|
||||
$ws.Cells[12,3 ].Value | Should be $ws.Cells[12,5].Value
|
||||
$ws.Cells[12,4 ].Value | Should be $ws.Cells[12,6].Value
|
||||
$ws.Cells[12,9 ].Value | Should be $ws.Cells[12,5].Value
|
||||
$ws.Cells[12,10].Value | Should be $ws.Cells[12,6].Value
|
||||
$ws.Cells[ 2,3 ].Value | Should -Be $ws.Cells[ 2,5 ].Value
|
||||
$ws.Cells[ 2,4 ].Value | Should -Be $ws.Cells[ 2,6 ].Value
|
||||
$ws.Cells[ 2,5 ].Value | Should -Be $ws.Cells[ 2,9 ].Value
|
||||
$ws.Cells[ 2,6 ].Value | Should -Be $ws.Cells[ 2,10].Value
|
||||
$ws.cells[ 4,5 ].value | Should -Be "Changed from the orginal"
|
||||
$ws.cells[ 4,9 ].value | Should -Be $ws.Cells[ 4,3 ].Value
|
||||
$ws.cells[ 5,2 ].value | Should -Be "Dummy"
|
||||
$ws.cells[ 5,3 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 5,4 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 5,5 ].value | Should -Be "Dummy Service"
|
||||
$ws.cells[ 5,8 ].value | Should -Be ($ws.cells[ 4,1].value +1)
|
||||
$ws.cells[ 5,9 ].value | Should -Be $ws.cells[ 5,5 ].value
|
||||
$ws.cells[ 7,5 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 7,6 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 7,9 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 7,10].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 8,3 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 8,4 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 8,5 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[ 8,6 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[11,9 ].value | Should -BeNullOrEmpty
|
||||
$ws.cells[11,10].value | Should -BeNullOrEmpty
|
||||
$ws.Cells[12,3 ].Value | Should -Be $ws.Cells[12,5].Value
|
||||
$ws.Cells[12,4 ].Value | Should -Be $ws.Cells[12,6].Value
|
||||
$ws.Cells[12,9 ].Value | Should -Be $ws.Cells[12,5].Value
|
||||
$ws.Cells[12,10].Value | Should -Be $ws.Cells[12,6].Value
|
||||
}
|
||||
it "Created Conditional formatting rules " {
|
||||
$cf=$ws.ConditionalFormatting
|
||||
$cf.Count | Should be 17
|
||||
$cf[16].Address.Address | Should be 'B2:B1048576'
|
||||
$cf[16].Type | Should be 'Expression'
|
||||
$cf[16].Formula | Should be 'OR(G2<>"Same",K2<>"Same")'
|
||||
$cf[16].Style.Font.Color.Color.Name | Should be "FFFF0000"
|
||||
$cf[14].Address.Address | Should be 'D2:D1048576'
|
||||
$cf[14].Type | Should be 'Expression'
|
||||
$cf[14].Formula | Should be 'OR(G2="Added",K2="Added")'
|
||||
$cf[14].Style.Fill.BackgroundColor.Color.Name | Should be 'ffffb6c1'
|
||||
$cf[14].Style.Fill.PatternType.ToString() | Should be 'Solid'
|
||||
$cf[ 0].Address.Address | Should be 'F1:F1048576'
|
||||
$cf[ 0].Type | Should be 'Expression'
|
||||
$cf[ 0].Formula | Should be 'G1="Added"'
|
||||
$cf[ 0].Style.Fill.BackgroundColor.Color.Name | Should be 'ffffa500'
|
||||
$cf[ 0].Style.Fill.PatternType.ToString() | Should be 'Solid'
|
||||
$cf.Count | Should -Be 17
|
||||
$cf[16].Address.Address | Should -Be 'B2:B1048576'
|
||||
$cf[16].Type | Should -Be 'Expression'
|
||||
$cf[16].Formula | Should -Be 'OR(G2<>"Same",K2<>"Same")'
|
||||
$cf[16].Style.Font.Color.Color.Name | Should -Be "FFFF0000"
|
||||
$cf[14].Address.Address | Should -Be 'D2:D1048576'
|
||||
$cf[14].Type | Should -Be 'Expression'
|
||||
$cf[14].Formula | Should -Be 'OR(G2="Added",K2="Added")'
|
||||
$cf[14].Style.Fill.BackgroundColor.Color.Name | Should -Be 'ffffb6c1'
|
||||
$cf[14].Style.Fill.PatternType.ToString() | Should -Be 'Solid'
|
||||
$cf[ 0].Address.Address | Should -Be 'F1:F1048576'
|
||||
$cf[ 0].Type | Should -Be 'Expression'
|
||||
$cf[ 0].Formula | Should -Be 'G1="Added"'
|
||||
$cf[ 0].Style.Fill.BackgroundColor.Color.Name | Should -Be 'ffffa500'
|
||||
$cf[ 0].Style.Fill.PatternType.ToString() | Should -Be 'Solid'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,25 +12,30 @@ Describe 'ConvertFrom-ExcelSheet / Export-ExcelSheet' {
|
||||
ConvertFrom-ExcelSheet -Path $dataPath -OutputPath $Outpath -AsText "GridPosition" -Property driver,
|
||||
@{n="date"; e={[datetime]::FromOADate($_.Date).tostring("#MM/dd/yyyy#")}} , FinishPosition, GridPosition
|
||||
$ThirdText = Get-Content (Join-path -Path $Outpath -ChildPath "First10Races.csv")
|
||||
ConvertFrom-ExcelSheet -Path $dataPath -OutputPath $Outpath -AsDate "date"
|
||||
$FourthText = Get-Content (Join-path -Path $Outpath -ChildPath "First10Races.csv")
|
||||
}
|
||||
Context "Exporting to CSV" {
|
||||
it "Exported the expected columns to a CSV file " {
|
||||
$firstText[0] | should be '"Race","Date","FinishPosition","Driver","GridPosition","Team","Points"'
|
||||
$SecondText[0] | should be '"Race","Date","FinishPosition","Driver","GridPosition","Team","Points"'
|
||||
$ThirdText[0] | should be '"Driver","date","FinishPosition","GridPosition"'
|
||||
$firstText[0] | Should -Be '"Race","Date","FinishPosition","Driver","GridPosition","Team","Points"'
|
||||
$SecondText[0] | Should -Be '"Race","Date","FinishPosition","Driver","GridPosition","Team","Points"'
|
||||
$ThirdText[0] | Should -Be '"Driver","date","FinishPosition","GridPosition"'
|
||||
$FourthText[0] | Should -Be '"Race","Date","FinishPosition","Driver","GridPosition","Team","Points"'
|
||||
}
|
||||
it "Applied ASText and Properties correctly " {
|
||||
$firstText[1] | should match '^"\w+","\d{5}","\d{1,2}","\w+ \w+","[1-9]\d?","\w+","\d{1,2}"$'
|
||||
it "Applied AsText, AsDate and Properties correctly " {
|
||||
$firstText[1] | Should -Match '^"\w+","\d{5}","\d{1,2}","\w+ \w+","[1-9]\d?","\w+","\d{1,2}"$'
|
||||
$date = $firstText[1] -replace '^.*(\d{5}).*$', '$1'
|
||||
$date = [datetime]::FromOADate($date).toString("D")
|
||||
$secondText[1] | should belike "*$date*"
|
||||
$secondText[1] | should match '"0\d","\w+","\d{1,2}"$'
|
||||
$ThirdText[1] | should match '^"\w+ \w+","#\d\d/\d\d/\d{4}#","\d","0\d"$'
|
||||
$secondText[1] | Should -Belike "*$date*"
|
||||
$secondText[1] | Should -Match '"0\d","\w+","\d{1,2}"$'
|
||||
$ThirdText[1] | Should -Match '^"\w+ \w+","#\d\d/\d\d/\d{4}#","\d","0\d"$'
|
||||
$FourthText[1] | Should -Match '^"\w+","([012]\d/|[1-9]/)'
|
||||
}
|
||||
}
|
||||
Context "Export aliased to ConvertFrom" {
|
||||
it "Applied ASText and Properties correctly " {
|
||||
(Get-Alias Export-ExcelSheet).source | should be "ImportExcel"
|
||||
it "Definded the alias name with " {
|
||||
(Get-Alias Export-ExcelSheet).source | Should -Be "ImportExcel"
|
||||
(Get-Alias Export-ExcelSheet).Definition | Should -Be "ConvertFrom-ExcelSheet"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ Describe "ConvertFrom-ExcelToSQLInsert" {
|
||||
|
||||
$actual = ConvertFrom-ExcelToSQLInsert -Path $xlFile Sheet1
|
||||
|
||||
$actual | should be $expected
|
||||
$actual | Should -Be $expected
|
||||
}
|
||||
|
||||
It "Should have NULL".PadRight(90) {
|
||||
@@ -30,6 +30,6 @@ Describe "ConvertFrom-ExcelToSQLInsert" {
|
||||
|
||||
$actual = ConvertFrom-ExcelToSQLInsert -Path $xlFile Sheet1 -ConvertEmptyStringsToNull
|
||||
|
||||
$actual | should be $expected
|
||||
$actual | Should -Be $expected
|
||||
}
|
||||
}
|
||||
@@ -41,9 +41,9 @@ Describe "Copy-Worksheet" {
|
||||
$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
|
||||
$Excel.Workbook.Worksheets.count | Should -Be 2
|
||||
$ws | Should -Not -BenullorEmpty
|
||||
$ws.Dimension.Address | Should -Be $ProcRange
|
||||
}
|
||||
}
|
||||
Context "Mixed types using a package object" {
|
||||
@@ -54,38 +54,38 @@ Describe "Copy-Worksheet" {
|
||||
$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
|
||||
$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
|
||||
$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'
|
||||
($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, 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
|
||||
($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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ Describe "Copy-Worksheet" {
|
||||
|
||||
$targetSheets | ForEach-Object { Remove-Worksheet -FullName $xlfile -WorksheetName $_ }
|
||||
|
||||
(Get-ExcelSheetInfo -Path $xlfile ).Count | Should Be 3
|
||||
(Get-ExcelSheetInfo -Path $xlfile ).Count | Should -Be 3
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,8 +136,8 @@ Describe "Copy-Worksheet" {
|
||||
}
|
||||
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'
|
||||
$excel.Workbook.Worksheets.Count | should -be 5
|
||||
$excel.Workbook.Worksheets['1.3.2019'].Cells['A1'].Value | should -be 'Hello World'
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,45 +22,45 @@ Apple, New York, 1200,700
|
||||
$ws2 = $excel.Workbook.Worksheets[2]
|
||||
Context "Data Page" {
|
||||
It "Inserted the data and created the table " {
|
||||
$ws1.Tables[0] | Should not beNullOrEmpty
|
||||
$ws1.Tables[0].Address.Address | Should be "A1:D7"
|
||||
$ws1.Tables[0].StyleName | Should be "TableStyleMedium13"
|
||||
$ws1.Tables[0] | Should -Not -BeNullOrEmpty
|
||||
$ws1.Tables[0].Address.Address | Should -Be "A1:D7"
|
||||
$ws1.Tables[0].StyleName | Should -Be "TableStyleMedium13"
|
||||
}
|
||||
It "Applied conditional formatting " {
|
||||
$ws1.ConditionalFormatting[0] | Should not beNullOrEmpty
|
||||
$ws1.ConditionalFormatting[0].type.ToString() | Should be "DataBar"
|
||||
$ws1.ConditionalFormatting[0].Color.G | Should beGreaterThan 100
|
||||
$ws1.ConditionalFormatting[0].Color.R | Should beLessThan 100
|
||||
$ws1.ConditionalFormatting[0].Address.Address | Should be "C2:C7"
|
||||
$ws1.ConditionalFormatting[0] | Should -Not -BeNullOrEmpty
|
||||
$ws1.ConditionalFormatting[0].type.ToString() | Should -Be "DataBar"
|
||||
$ws1.ConditionalFormatting[0].Color.G | Should -BeGreaterThan 100
|
||||
$ws1.ConditionalFormatting[0].Color.R | Should -BeLessThan 100
|
||||
$ws1.ConditionalFormatting[0].Address.Address | Should -Be "C2:C7"
|
||||
}
|
||||
It "Added the chart " {
|
||||
$ws1.Drawings[0] | Should not beNullOrEmpty
|
||||
$ws1.Drawings[0].ChartType.ToString() | Should be "DoughNut"
|
||||
$ws1.Drawings[0].Series[0].Series | Should be "'Sheet1'!C2:C7"
|
||||
$ws1.Drawings[0] | Should -Not -BeNullOrEmpty
|
||||
$ws1.Drawings[0].ChartType.ToString() | Should -Be "DoughNut"
|
||||
$ws1.Drawings[0].Series[0].Series | Should -Be "'Sheet1'!C2:C7"
|
||||
}
|
||||
}
|
||||
Context "PivotTable" {
|
||||
it "Created the PivotTable on a new page " {
|
||||
$ws2 | Should not beNullOrEmpty
|
||||
$ws2.PivotTables[0] | Should not beNullOrEmpty
|
||||
$ws2.PivotTables[0].Fields.Count | Should be 4
|
||||
$ws2.PivotTables[0].DataFields[0].Format | Should be "$#,##0.00"
|
||||
$ws2.PivotTables[0].RowFields[0].Name | Should be "City"
|
||||
$ws2.PivotTables[0].ColumnFields[0].Name | Should be "Product"
|
||||
$ws2.PivotTables[0].RowGrandTotals | Should be $true
|
||||
$ws2.PivotTables[0].ColumGrandTotals | Should be $true #Epplus's mis-spelling of column not mine
|
||||
$ws2 | Should -Not -BeNullOrEmpty
|
||||
$ws2.PivotTables[0] | Should -Not -BeNullOrEmpty
|
||||
$ws2.PivotTables[0].Fields.Count | Should -Be 4
|
||||
$ws2.PivotTables[0].DataFields[0].Format | Should -Be "$#,##0.00"
|
||||
$ws2.PivotTables[0].RowFields[0].Name | Should -Be "City"
|
||||
$ws2.PivotTables[0].ColumnFields[0].Name | Should -Be "Product"
|
||||
$ws2.PivotTables[0].RowGrandTotals | Should -Be $true
|
||||
$ws2.PivotTables[0].ColumGrandTotals | Should -Be $true #Epplus's mis-spelling of column not mine
|
||||
}
|
||||
it "Made the PivotTable page active " {
|
||||
Set-ItResult -Pending -Because "Bug in EPPLus 4.5"
|
||||
$ws2.View.TabSelected | Should be $true
|
||||
$ws2.View.TabSelected | Should -Be $true
|
||||
}
|
||||
it "Created the Pivot Chart " {
|
||||
$ws2.Drawings[0] | Should not beNullOrEmpty
|
||||
$ws2.Drawings[0].ChartType.ToString() | Should be ColumnClustered
|
||||
$ws2.Drawings[0].YAxis.MajorUnit | Should be 500
|
||||
$ws2.Drawings[0].YAxis.MinorUnit | Should be 100
|
||||
$ws2.Drawings[0].YAxis.Format | Should be "$#,##0"
|
||||
$ws2.Drawings[0].Legend.Position.ToString() | Should be "Bottom"
|
||||
$ws2.Drawings[0] | Should -Not -BeNullOrEmpty
|
||||
$ws2.Drawings[0].ChartType.ToString() | Should -Be ColumnClustered
|
||||
$ws2.Drawings[0].YAxis.MajorUnit | Should -Be 500
|
||||
$ws2.Drawings[0].YAxis.MinorUnit | Should -Be 100
|
||||
$ws2.Drawings[0].YAxis.Format | Should -Be "$#,##0"
|
||||
$ws2.Drawings[0].Legend.Position.ToString() | Should -Be "Bottom"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -62,84 +62,84 @@ Describe "Creating small named ranges with hyperlinks" {
|
||||
}
|
||||
Context "Creating hyperlinks" {
|
||||
it "Put the data into the sheet and created the expected named ranges " {
|
||||
$sheet.Dimension.Rows | should be $expectedRows
|
||||
$sheet.Dimension.Columns | should be $columns
|
||||
$sheet.Names.Count | should be ($columns + $results.Count)
|
||||
$sheet.Names[$results[0].Name] | should not benullorEmpty
|
||||
$sheet.Names[$results[-1].Name] | should not benullorEmpty
|
||||
$sheet.Dimension.Rows | Should -Be $expectedRows
|
||||
$sheet.Dimension.Columns | Should -Be $columns
|
||||
$sheet.Names.Count | Should -Be ($columns + $results.Count)
|
||||
$sheet.Names[$results[0].Name] | Should -Not -BenullorEmpty
|
||||
$sheet.Names[$results[-1].Name] | Should -Not -BenullorEmpty
|
||||
}
|
||||
it "Added hyperlinks to the named ranges " {
|
||||
$sheet.cells["a1"].Hyperlink.Display | should match $results[0].Name
|
||||
$sheet.cells["a1"].Hyperlink.ReferenceAddress | should match $results[0].Name
|
||||
$sheet.cells["a1"].Hyperlink.Display | Should -Match $results[0].Name
|
||||
$sheet.cells["a1"].Hyperlink.ReferenceAddress | Should -Match $results[0].Name
|
||||
}
|
||||
}
|
||||
Context "Adding calculated column" {
|
||||
It "Populated the cells with the right heading and formulas " {
|
||||
$sheet.Cells[( $results.Count), $columns] | Should benullorEmpty
|
||||
$sheet.Cells[(1 + $results.Count), $columns].Value | Should be "PlacesGained/Lost"
|
||||
$sheet.Cells[(2 + $results.Count), $columns].Formula | should be "GridPosition-FinishPosition"
|
||||
$sheet.Names["PlacesGained_Lost"] | should not benullorEmpty
|
||||
$sheet.Cells[( $results.Count), $columns] | Should -BenullorEmpty
|
||||
$sheet.Cells[(1 + $results.Count), $columns].Value | Should -Be "PlacesGained/Lost"
|
||||
$sheet.Cells[(2 + $results.Count), $columns].Formula | Should -Be "GridPosition-FinishPosition"
|
||||
$sheet.Names["PlacesGained_Lost"] | Should -Not -BenullorEmpty
|
||||
}
|
||||
It "Performed the calculation " {
|
||||
$placesMade = $Sheet.Cells[(2 + $results.Count), 5].value - $Sheet.Cells[(2 + $results.Count), 3].value
|
||||
$sheet.Cells[(2 + $results.Count), $columns].value | Should be $placesmade
|
||||
$sheet.Cells[(2 + $results.Count), $columns].value | Should -Be $placesmade
|
||||
}
|
||||
It "Applied ConditionalFormatting, including StopIfTrue, Priority " {
|
||||
$sheet.ConditionalFormatting[0].Address.Start.Column | should be $columns
|
||||
$sheet.ConditionalFormatting[0].Address.End.Column | should be $columns
|
||||
$sheet.ConditionalFormatting[0].Address.End.Row | should be $expectedRows
|
||||
$sheet.ConditionalFormatting[0].Address.Start.Row | should be ($results.Count + 1)
|
||||
$sheet.ConditionalFormatting[0].Icon3.Type.ToString() | Should be "Num"
|
||||
$sheet.ConditionalFormatting[0].Icon3.Value | Should be 1
|
||||
$sheet.ConditionalFormatting[1].Priority | Should be 1
|
||||
$sheet.ConditionalFormatting[1].StopIfTrue | Should be $true
|
||||
$sheet.ConditionalFormatting[0].Address.Start.Column | Should -Be $columns
|
||||
$sheet.ConditionalFormatting[0].Address.End.Column | Should -Be $columns
|
||||
$sheet.ConditionalFormatting[0].Address.End.Row | Should -Be $expectedRows
|
||||
$sheet.ConditionalFormatting[0].Address.Start.Row | Should -Be ($results.Count + 1)
|
||||
$sheet.ConditionalFormatting[0].Icon3.Type.ToString() | Should -Be "Num"
|
||||
$sheet.ConditionalFormatting[0].Icon3.Value | Should -Be 1
|
||||
$sheet.ConditionalFormatting[1].Priority | Should -Be 1
|
||||
$sheet.ConditionalFormatting[1].StopIfTrue | Should -Be $true
|
||||
}
|
||||
It "Applied ConditionalFormatting, including Reverse " {
|
||||
Set-ItResult -Pending -Because "Bug in EPPLus 4.5"
|
||||
$sheet.ConditionalFormatting[3].LowValue.Color.R | Should begreaterThan 180
|
||||
$sheet.ConditionalFormatting[3].LowValue.Color.G | Should beLessThan 128
|
||||
$sheet.ConditionalFormatting[3].HighValue.Color.R | Should beLessThan 128
|
||||
$sheet.ConditionalFormatting[3].HighValue.Color.G | Should begreaterThan 180
|
||||
$sheet.ConditionalFormatting[3].LowValue.Color.R | Should -BegreaterThan 180
|
||||
$sheet.ConditionalFormatting[3].LowValue.Color.G | Should -BeLessThan 128
|
||||
$sheet.ConditionalFormatting[3].HighValue.Color.R | Should -BeLessThan 128
|
||||
$sheet.ConditionalFormatting[3].HighValue.Color.G | Should -BegreaterThan 180
|
||||
}
|
||||
}
|
||||
Context "Adding a table" {
|
||||
it "Created a table " {
|
||||
$sheet.tables[0] | Should not beNullOrEmpty
|
||||
$sheet.tables[0].Address.Start.Column | should be 1
|
||||
$sheet.tables[0].Address.End.Column | should be $columns
|
||||
$sheet.tables[0].Address.Start.row | should be ($results.Count + 1)
|
||||
$sheet.Tables[0].Address.End.Row | should be $expectedRows
|
||||
$sheet.Tables[0].StyleName | should be "TableStyleLight4"
|
||||
$sheet.Tables[0].ShowColumnStripes | should be $true
|
||||
$sheet.Tables[0].ShowRowStripes | should not be $true
|
||||
$sheet.tables[0] | Should -Not -BeNullOrEmpty
|
||||
$sheet.tables[0].Address.Start.Column | Should -Be 1
|
||||
$sheet.tables[0].Address.End.Column | Should -Be $columns
|
||||
$sheet.tables[0].Address.Start.row | Should -Be ($results.Count + 1)
|
||||
$sheet.Tables[0].Address.End.Row | Should -Be $expectedRows
|
||||
$sheet.Tables[0].StyleName | Should -Be "TableStyleLight4"
|
||||
$sheet.Tables[0].ShowColumnStripes | Should -Be $true
|
||||
$sheet.Tables[0].ShowRowStripes | Should -Not -Be $true
|
||||
}
|
||||
}
|
||||
Context "Adding Pivot tables" {
|
||||
it "Added a worksheet with a pivot table grouped by date " {
|
||||
$excel.Points1 | should not beNullOrEmpty
|
||||
$excel.Points1.PivotTables.Count | should be 1
|
||||
$excel.Points1 | Should -Not -BeNullOrEmpty
|
||||
$excel.Points1.PivotTables.Count | Should -Be 1
|
||||
$pt = $excel.Points1.PivotTables[0]
|
||||
$pt.RowFields.Count | should be 3
|
||||
$pt.RowFields[0].name | should be "Driver"
|
||||
$pt.RowFields[0].Grouping | should benullorEmpty
|
||||
$pt.RowFields[1].name | should be "years"
|
||||
$pt.RowFields[1].Grouping | should not benullorEmpty
|
||||
$pt.RowFields[2].name | should be "date"
|
||||
$pt.RowFields[2].Grouping | should not benullorEmpty
|
||||
$pt.RowFields.Count | Should -Be 3
|
||||
$pt.RowFields[0].name | Should -Be "Driver"
|
||||
$pt.RowFields[0].Grouping | Should -BenullorEmpty
|
||||
$pt.RowFields[1].name | Should -Be "years"
|
||||
$pt.RowFields[1].Grouping | Should -Not -BenullorEmpty
|
||||
$pt.RowFields[2].name | Should -Be "date"
|
||||
$pt.RowFields[2].Grouping | Should -Not -BenullorEmpty
|
||||
}
|
||||
it "Added a worksheet with a pivot table grouped by Number " {
|
||||
$excel.Places1 | should not beNullOrEmpty
|
||||
$excel.Places1.PivotTables.Count | should be 1
|
||||
$excel.Places1 | Should -Not -BeNullOrEmpty
|
||||
$excel.Places1.PivotTables.Count | Should -Be 1
|
||||
$pt = $excel.Places1.PivotTables[0]
|
||||
$pt.RowFields.Count | should be 2
|
||||
$pt.RowFields[0].name | should be "Driver"
|
||||
$pt.RowFields[0].Grouping | should benullorEmpty
|
||||
$pt.RowFields[0].SubTotalFunctions.ToString() | should be "None"
|
||||
$pt.RowFields[1].name | should be "FinishPosition"
|
||||
$pt.RowFields[1].Grouping | should not benullorEmpty
|
||||
$pt.RowFields[1].Grouping.Start | should be 1
|
||||
$pt.RowFields[1].Grouping.End | should be 25
|
||||
$pt.RowFields[1].Grouping.Interval | should be 3
|
||||
$pt.RowFields.Count | Should -Be 2
|
||||
$pt.RowFields[0].name | Should -Be "Driver"
|
||||
$pt.RowFields[0].Grouping | Should -BenullorEmpty
|
||||
$pt.RowFields[0].SubTotalFunctions.ToString() | Should -Be "None"
|
||||
$pt.RowFields[1].name | Should -Be "FinishPosition"
|
||||
$pt.RowFields[1].Grouping | Should -Not -BenullorEmpty
|
||||
$pt.RowFields[1].Grouping.Start | Should -Be 1
|
||||
$pt.RowFields[1].Grouping.End | Should -Be 25
|
||||
$pt.RowFields[1].Grouping.Interval | Should -Be 3
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,23 +6,23 @@ if (-not (Get-command Import-Excel -ErrorAction SilentlyContinue)) {
|
||||
Describe "Check if Function aliases exist" {
|
||||
|
||||
It "Set-Column should exist".PadRight(90) {
|
||||
${Alias:Set-Column} | Should Not BeNullOrEmpty
|
||||
${Alias:Set-Column} | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
|
||||
It "Set-Row should exist".PadRight(90) {
|
||||
${Alias:Set-Row} | Should Not BeNullOrEmpty
|
||||
${Alias:Set-Row} | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
|
||||
It "Set-Format should exist".PadRight(90) {
|
||||
${Alias:Set-Format} | Should Not BeNullOrEmpty
|
||||
${Alias:Set-Format} | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
|
||||
<#It "Merge-MulipleSheets should exist" {
|
||||
Get-Command Merge-MulipleSheets | Should Not Be $null
|
||||
Get-Command Merge-MulipleSheets | Should -Not -Be $null
|
||||
}
|
||||
#>
|
||||
It "New-ExcelChart should exist".PadRight(90) {
|
||||
${Alias:New-ExcelChart} | Should Not BeNullOrEmpty
|
||||
${Alias:New-ExcelChart} | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,13 +17,13 @@ $map = @{
|
||||
16384 = 'XFD'
|
||||
}
|
||||
|
||||
(Get-ExcelColumnName 26).columnName | Should be 'Z'
|
||||
(Get-ExcelColumnName 27).columnName | Should be 'AA'
|
||||
(Get-ExcelColumnName 28).columnNamee | Should be 'AB'
|
||||
(Get-ExcelColumnName 30).columnName | Should be 'AD'
|
||||
(Get-ExcelColumnName 48).columnName | Should be 'AV'
|
||||
(Get-ExcelColumnName 26).columnName | Should -Be 'Z'
|
||||
(Get-ExcelColumnName 27).columnName | Should -Be 'AA'
|
||||
(Get-ExcelColumnName 28).columnNamee | Should -Be 'AB'
|
||||
(Get-ExcelColumnName 30).columnName | Should -Be 'AD'
|
||||
(Get-ExcelColumnName 48).columnName | Should -Be 'AV'
|
||||
|
||||
1..16 | ForEach-Object {
|
||||
$number = $_ * 1024
|
||||
(Get-ExcelColumnName $number).columnName | Should be $map.$number
|
||||
(Get-ExcelColumnName $number).columnName | Should -Be $map.$number
|
||||
}
|
||||
|
||||
@@ -35,15 +35,15 @@ Describe "Import-Excel on a sheet with no headings" {
|
||||
|
||||
$actualNames = $actual[0].psobject.properties.name
|
||||
|
||||
$actualNames.Count | Should Be 3
|
||||
$actualNames[0] | Should BeExactly 'A'
|
||||
$actualNames[1] | Should BeExactly 'B'
|
||||
$actualNames[2] | Should BeExactly 'C'
|
||||
$actualNames.Count | Should -Be 3
|
||||
$actualNames[0] | Should -BeExactly 'A'
|
||||
$actualNames[1] | Should -BeExactly 'B'
|
||||
$actualNames[2] | Should -BeExactly 'C'
|
||||
|
||||
$actual.Count | Should Be 2
|
||||
$actual[0].A | Should BeExactly 'D'
|
||||
$actual[0].B | Should BeExactly 'E'
|
||||
$actual[0].C | Should BeExactly 'F'
|
||||
$actual.Count | Should -Be 2
|
||||
$actual[0].A | Should -BeExactly 'D'
|
||||
$actual[0].B | Should -BeExactly 'E'
|
||||
$actual[0].C | Should -BeExactly 'F'
|
||||
}
|
||||
|
||||
It "Import-Excel -NoHeader should have this shape" {
|
||||
@@ -51,12 +51,12 @@ Describe "Import-Excel on a sheet with no headings" {
|
||||
|
||||
$actualNames = $actual[0].psobject.properties.name
|
||||
|
||||
$actualNames.Count | Should Be 3
|
||||
$actualNames[0] | Should BeExactly 'P1'
|
||||
$actualNames[1] | Should BeExactly 'P2'
|
||||
$actualNames[2] | Should BeExactly 'P3'
|
||||
$actualNames.Count | Should -Be 3
|
||||
$actualNames[0] | Should -BeExactly 'P1'
|
||||
$actualNames[1] | Should -BeExactly 'P2'
|
||||
$actualNames[2] | Should -BeExactly 'P3'
|
||||
|
||||
$actual.Count | Should Be 3
|
||||
$actual.Count | Should -Be 3
|
||||
}
|
||||
|
||||
It "Import-Excel -HeaderName should have this shape" {
|
||||
@@ -64,20 +64,20 @@ Describe "Import-Excel on a sheet with no headings" {
|
||||
|
||||
$actualNames = $actual[0].psobject.properties.name
|
||||
|
||||
$actualNames.Count | Should Be 3
|
||||
$actualNames[0] | Should BeExactly 'Q'
|
||||
$actualNames[1] | Should BeExactly 'R'
|
||||
$actualNames[2] | Should BeExactly 'S'
|
||||
$actualNames.Count | Should -Be 3
|
||||
$actualNames[0] | Should -BeExactly 'Q'
|
||||
$actualNames[1] | Should -BeExactly 'R'
|
||||
$actualNames[2] | Should -BeExactly 'S'
|
||||
|
||||
$actual.Count | Should Be 3
|
||||
$actual.Count | Should -Be 3
|
||||
|
||||
$actual[0].Q | Should BeExactly 'A'
|
||||
$actual[0].R | Should BeExactly 'B'
|
||||
$actual[0].S | Should BeExactly 'C'
|
||||
$actual[0].Q | Should -BeExactly 'A'
|
||||
$actual[0].R | Should -BeExactly 'B'
|
||||
$actual[0].S | Should -BeExactly 'C'
|
||||
|
||||
$actual[1].Q | Should BeExactly 'D'
|
||||
$actual[1].R | Should BeExactly 'E'
|
||||
$actual[1].S | Should BeExactly 'F'
|
||||
$actual[1].Q | Should -BeExactly 'D'
|
||||
$actual[1].R | Should -BeExactly 'E'
|
||||
$actual[1].S | Should -BeExactly 'F'
|
||||
}
|
||||
|
||||
It "Should work with StartRow" {
|
||||
@@ -85,20 +85,20 @@ Describe "Import-Excel on a sheet with no headings" {
|
||||
|
||||
$actualNames = $actual[0].psobject.properties.name
|
||||
|
||||
$actualNames.Count | Should Be 3
|
||||
$actualNames[0] | Should BeExactly 'Q'
|
||||
$actualNames[1] | Should BeExactly 'R'
|
||||
$actualNames[2] | Should BeExactly 'S'
|
||||
$actualNames.Count | Should -Be 3
|
||||
$actualNames[0] | Should -BeExactly 'Q'
|
||||
$actualNames[1] | Should -BeExactly 'R'
|
||||
$actualNames[2] | Should -BeExactly 'S'
|
||||
|
||||
$actual.Count | Should Be 2
|
||||
$actual.Count | Should -Be 2
|
||||
|
||||
$actual[0].Q | Should BeExactly 'D'
|
||||
$actual[0].R | Should BeExactly 'E'
|
||||
$actual[0].S | Should BeExactly 'F'
|
||||
$actual[0].Q | Should -BeExactly 'D'
|
||||
$actual[0].R | Should -BeExactly 'E'
|
||||
$actual[0].S | Should -BeExactly 'F'
|
||||
|
||||
$actual[1].Q | Should BeExactly 'G'
|
||||
$actual[1].R | Should BeExactly 'H'
|
||||
$actual[1].S | Should BeExactly 'I'
|
||||
$actual[1].Q | Should -BeExactly 'G'
|
||||
$actual[1].R | Should -BeExactly 'H'
|
||||
$actual[1].S | Should -BeExactly 'I'
|
||||
|
||||
}
|
||||
|
||||
@@ -106,64 +106,64 @@ Describe "Import-Excel on a sheet with no headings" {
|
||||
$actual = @(Import-Excel $xlfile -NoHeader)
|
||||
$actualNames = $actual[0].psobject.properties.name
|
||||
|
||||
$actualNames.Count | Should Be 3
|
||||
$actualNames[0] | Should BeExactly 'P1'
|
||||
$actualNames[1] | Should BeExactly 'P2'
|
||||
$actualNames[2] | Should BeExactly 'P3'
|
||||
$actualNames.Count | Should -Be 3
|
||||
$actualNames[0] | Should -BeExactly 'P1'
|
||||
$actualNames[1] | Should -BeExactly 'P2'
|
||||
$actualNames[2] | Should -BeExactly 'P3'
|
||||
|
||||
$actual.Count | Should Be 3
|
||||
$actual.Count | Should -Be 3
|
||||
|
||||
$actual[0].P1 | Should BeExactly 'A'
|
||||
$actual[0].P2 | Should BeExactly 'B'
|
||||
$actual[0].P3 | Should BeExactly 'C'
|
||||
$actual[0].P1 | Should -BeExactly 'A'
|
||||
$actual[0].P2 | Should -BeExactly 'B'
|
||||
$actual[0].P3 | Should -BeExactly 'C'
|
||||
|
||||
$actual[1].P1 | Should BeExactly 'D'
|
||||
$actual[1].P2 | Should BeExactly 'E'
|
||||
$actual[1].P3 | Should BeExactly 'F'
|
||||
$actual[1].P1 | Should -BeExactly 'D'
|
||||
$actual[1].P2 | Should -BeExactly 'E'
|
||||
$actual[1].P3 | Should -BeExactly 'F'
|
||||
|
||||
$actual[2].P1 | Should BeExactly 'G'
|
||||
$actual[2].P2 | Should BeExactly 'H'
|
||||
$actual[2].P3 | Should BeExactly 'I'
|
||||
$actual[2].P1 | Should -BeExactly 'G'
|
||||
$actual[2].P2 | Should -BeExactly 'H'
|
||||
$actual[2].P3 | Should -BeExactly 'I'
|
||||
}
|
||||
|
||||
It "Should work with -NoHeader -DataOnly" {
|
||||
$actual = @(Import-Excel $xlfile -NoHeader -DataOnly)
|
||||
$actualNames = $actual[0].psobject.properties.name
|
||||
|
||||
$actualNames.Count | Should Be 3
|
||||
$actualNames[0] | Should BeExactly 'P1'
|
||||
$actualNames[1] | Should BeExactly 'P2'
|
||||
$actualNames[2] | Should BeExactly 'P3'
|
||||
$actualNames.Count | Should -Be 3
|
||||
$actualNames[0] | Should -BeExactly 'P1'
|
||||
$actualNames[1] | Should -BeExactly 'P2'
|
||||
$actualNames[2] | Should -BeExactly 'P3'
|
||||
|
||||
$actual.Count | Should Be 3
|
||||
$actual.Count | Should -Be 3
|
||||
|
||||
$actual[0].P1 | Should BeExactly 'A'
|
||||
$actual[0].P2 | Should BeExactly 'B'
|
||||
$actual[0].P3 | Should BeExactly 'C'
|
||||
$actual[0].P1 | Should -BeExactly 'A'
|
||||
$actual[0].P2 | Should -BeExactly 'B'
|
||||
$actual[0].P3 | Should -BeExactly 'C'
|
||||
|
||||
$actual[1].P1 | Should BeExactly 'D'
|
||||
$actual[1].P2 | Should BeExactly 'E'
|
||||
$actual[1].P3 | Should BeExactly 'F'
|
||||
$actual[1].P1 | Should -BeExactly 'D'
|
||||
$actual[1].P2 | Should -BeExactly 'E'
|
||||
$actual[1].P3 | Should -BeExactly 'F'
|
||||
|
||||
$actual[2].P1 | Should BeExactly 'G'
|
||||
$actual[2].P2 | Should BeExactly 'H'
|
||||
$actual[2].P3 | Should BeExactly 'I'
|
||||
$actual[2].P1 | Should -BeExactly 'G'
|
||||
$actual[2].P2 | Should -BeExactly 'H'
|
||||
$actual[2].P3 | Should -BeExactly 'I'
|
||||
}
|
||||
|
||||
It "Should work with -HeaderName -DataOnly -StartRow" {
|
||||
$actual = @(Import-Excel $xlfile -HeaderName 'Q', 'R', 'S' -DataOnly -StartRow 2)
|
||||
$actualNames = $actual[0].psobject.properties.name
|
||||
|
||||
$actualNames.Count | Should Be 3
|
||||
$actualNames[0] | Should BeExactly 'Q'
|
||||
$actualNames[1] | Should BeExactly 'R'
|
||||
$actualNames[2] | Should BeExactly 'S'
|
||||
$actualNames.Count | Should -Be 3
|
||||
$actualNames[0] | Should -BeExactly 'Q'
|
||||
$actualNames[1] | Should -BeExactly 'R'
|
||||
$actualNames[2] | Should -BeExactly 'S'
|
||||
|
||||
$actual.Count | Should Be 1
|
||||
$actual.Count | Should -Be 1
|
||||
|
||||
$actual[0].Q | Should BeExactly 'G'
|
||||
$actual[0].R | Should BeExactly 'H'
|
||||
$actual[0].S | Should BeExactly 'I'
|
||||
$actual[0].Q | Should -BeExactly 'G'
|
||||
$actual[0].R | Should -BeExactly 'H'
|
||||
$actual[0].S | Should -BeExactly 'I'
|
||||
}
|
||||
|
||||
It "Should" {
|
||||
@@ -190,17 +190,17 @@ Describe "Import-Excel on a sheet with no headings" {
|
||||
$actual = @(Import-Excel -Path $xlfile -DataOnly -HeaderName 'FirstName', 'SecondName', 'City' -StartRow 2)
|
||||
$actualNames = $actual[0].psobject.properties.name
|
||||
|
||||
$actualNames.Count | Should Be 3
|
||||
$actualNames[0] | Should BeExactly 'FirstName'
|
||||
$actualNames[1] | Should BeExactly 'SecondName'
|
||||
$actualNames[2] | Should BeExactly 'City'
|
||||
$actualNames.Count | Should -Be 3
|
||||
$actualNames[0] | Should -BeExactly 'FirstName'
|
||||
$actualNames[1] | Should -BeExactly 'SecondName'
|
||||
$actualNames[2] | Should -BeExactly 'City'
|
||||
|
||||
$actual.Count | Should Be 1
|
||||
$actual.Count | Should -Be 1
|
||||
|
||||
# Looks like -DataOnly does not handle empty columns
|
||||
# $actual[0].FirstName | Should BeExactly 'Jean-Claude'
|
||||
# $actual[0].SecondName | Should BeExactly 'Vandamme'
|
||||
# $actual[0].City | Should BeExactly 'Brussels'
|
||||
# $actual[0].FirstName | Should -BeExactly 'Jean-Claude'
|
||||
# $actual[0].SecondName | Should -BeExactly 'Vandamme'
|
||||
# $actual[0].City | Should -BeExactly 'Brussels'
|
||||
}
|
||||
|
||||
It "Should handle data correctly if there is only a single row" {
|
||||
|
||||
@@ -12,19 +12,19 @@ Describe "Tests" {
|
||||
}
|
||||
It "Should have a valid manifest".PadRight(90){
|
||||
{try {Test-ModuleManifest -Path $PSScriptRoot\..\..\ImportExcel.psd1 -ErrorAction stop}
|
||||
catch {throw} } | should not throw
|
||||
catch {throw} } | Should -Not -Throw
|
||||
}
|
||||
It "Should have two items in the imported simple data".PadRight(90) {
|
||||
$data.count | Should be 2
|
||||
$data.count | Should -Be 2
|
||||
}
|
||||
|
||||
It "Should have items a and b in the imported simple data".PadRight(90) {
|
||||
$data[0].p1 | Should be "a"
|
||||
$data[1].p1 | Should be "b"
|
||||
$data[0].p1 | Should -Be "a"
|
||||
$data[1].p1 | Should -Be "b"
|
||||
}
|
||||
|
||||
It "Should read the simple xlsx in < 2100 milliseconds".PadRight(90) {
|
||||
$timer.TotalMilliseconds | should BeLessThan 2100
|
||||
$timer.TotalMilliseconds | Should -BeLessThan 2100
|
||||
}
|
||||
|
||||
It "Should read larger xlsx, 4k rows 1 col < 3000 milliseconds".PadRight(90) {
|
||||
@@ -32,7 +32,7 @@ Describe "Tests" {
|
||||
$null = Import-Excel $PSScriptRoot\LargerFile.xlsx
|
||||
}
|
||||
|
||||
$timer.TotalMilliseconds | should BeLessThan 3000
|
||||
$timer.TotalMilliseconds | Should -BeLessThan 3000
|
||||
}
|
||||
|
||||
It "Should be able to open, read and close as seperate actions".PadRight(90) {
|
||||
@@ -40,30 +40,30 @@ Describe "Tests" {
|
||||
$excel = Open-ExcelPackage $PSScriptRoot\Simple.xlsx
|
||||
$data = Import-Excel -ExcelPackage $excel
|
||||
Close-ExcelPackage -ExcelPackage $excel -NoSave}
|
||||
$timer.TotalMilliseconds | should BeLessThan 2100
|
||||
$data.count | Should be 2
|
||||
$data[0].p1 | Should be "a"
|
||||
$data[1].p1 | Should be "b"
|
||||
$timer.TotalMilliseconds | Should -BeLessThan 2100
|
||||
$data.count | Should -Be 2
|
||||
$data[0].p1 | Should -Be "a"
|
||||
$data[1].p1 | Should -Be "b"
|
||||
}
|
||||
|
||||
It "Should take Paths from parameter".PadRight(90) {
|
||||
$data = Import-Excel -Path (Get-ChildItem -Path $PSScriptRoot -Filter "TestData?.xlsx").FullName
|
||||
$data.count | Should be 4
|
||||
$data[0].cola | Should be 1
|
||||
$data[2].cola | Should be 5
|
||||
$data.count | Should -Be 4
|
||||
$data[0].cola | Should -Be 1
|
||||
$data[2].cola | Should -Be 5
|
||||
}
|
||||
|
||||
It "Should take Paths from pipeline".PadRight(90) {
|
||||
$data = (Get-ChildItem -Path $PSScriptRoot -Filter "TestData?.xlsx").FullName | Import-Excel
|
||||
$data.count | Should be 4
|
||||
$data[0].cola | Should be 1
|
||||
$data[2].cola | Should be 5
|
||||
$data.count | Should -Be 4
|
||||
$data[0].cola | Should -Be 1
|
||||
$data[2].cola | Should -Be 5
|
||||
}
|
||||
|
||||
It "Should support PipelineVariable".PadRight(90) {
|
||||
$data = Import-Excel $PSScriptRoot\Simple.xlsx -PipelineVariable 'Pv' | ForEach-Object { $Pv.p1 }
|
||||
$data.count | Should be 2
|
||||
$data[0] | Should be "a"
|
||||
$data[1] | Should be "b"
|
||||
$data.count | Should -Be 2
|
||||
$data[0] | Should -Be "a"
|
||||
$data[1] | Should -Be "b"
|
||||
}
|
||||
}
|
||||
@@ -46,41 +46,41 @@ Describe "Exporting with -Inputobject, table handling, Send-SQL-Data. Checking I
|
||||
}
|
||||
Context "Array of processes" {
|
||||
it "Put the correct rows and columns into the sheet " {
|
||||
$sheet.Dimension.Rows | should be ($results.Count + 1)
|
||||
$sheet.Dimension.Columns | should be 5
|
||||
$sheet.cells["A1"].Value | should be "Name"
|
||||
$sheet.cells["E1"].Value | should be "StartTime"
|
||||
$sheet.cells["A3"].Value | should be $results[1].Name
|
||||
$sheet.Dimension.Rows | Should -Be ($results.Count + 1)
|
||||
$sheet.Dimension.Columns | Should -Be 5
|
||||
$sheet.cells["A1"].Value | Should -Be "Name"
|
||||
$sheet.cells["E1"].Value | Should -Be "StartTime"
|
||||
$sheet.cells["A3"].Value | Should -Be $results[1].Name
|
||||
}
|
||||
it "Created a range for the whole sheet " {
|
||||
$sheet.Names[0].Name | should be "Whole"
|
||||
$sheet.Names[0].Start.Address | should be "A1"
|
||||
$sheet.Names[0].End.row | should be ($results.Count + 1)
|
||||
$sheet.Names[0].End.Column | should be 5
|
||||
$sheet.Names[0].Name | Should -Be "Whole"
|
||||
$sheet.Names[0].Start.Address | Should -Be "A1"
|
||||
$sheet.Names[0].End.row | Should -Be ($results.Count + 1)
|
||||
$sheet.Names[0].End.Column | Should -Be 5
|
||||
}
|
||||
it "Formatted date fields with date type " {
|
||||
$sheet.Cells["E11"].Style.Numberformat.NumFmtID | should be 22
|
||||
$sheet.Cells["E11"].Style.Numberformat.NumFmtID | Should -Be 22
|
||||
}
|
||||
}
|
||||
$sheet = $excel.Sheet2
|
||||
Context "Table of processes" {
|
||||
it "Put the correct rows and columns into the sheet " {
|
||||
$sheet.Dimension.Rows | should be ($results.Count + 1)
|
||||
$sheet.Dimension.Columns | should be 5
|
||||
$sheet.cells["A1"].Value | should be "Name"
|
||||
$sheet.cells["E1"].Value | should be "StartTime"
|
||||
$sheet.cells["A3"].Value | should be $results[1].Name
|
||||
$sheet.Dimension.Rows | Should -Be ($results.Count + 1)
|
||||
$sheet.Dimension.Columns | Should -Be 5
|
||||
$sheet.cells["A1"].Value | Should -Be "Name"
|
||||
$sheet.cells["E1"].Value | Should -Be "StartTime"
|
||||
$sheet.cells["A3"].Value | Should -Be $results[1].Name
|
||||
}
|
||||
it "Created named ranges for each column " {
|
||||
$sheet.Names.count | should be 5
|
||||
$sheet.Names[0].Name | should be "Name"
|
||||
$sheet.Names[1].Start.Address | should be "B2"
|
||||
$sheet.Names[2].End.row | should be ($results.Count + 1)
|
||||
$sheet.Names[3].End.Column | should be 4
|
||||
$sheet.Names[4].Start.Column | should be 5
|
||||
$sheet.Names.count | Should -Be 5
|
||||
$sheet.Names[0].Name | Should -Be "Name"
|
||||
$sheet.Names[1].Start.Address | Should -Be "B2"
|
||||
$sheet.Names[2].End.row | Should -Be ($results.Count + 1)
|
||||
$sheet.Names[3].End.Column | Should -Be 4
|
||||
$sheet.Names[4].Start.Column | Should -Be 5
|
||||
}
|
||||
it "Formatted date fields with date type " {
|
||||
$sheet.Cells["E11"].Style.Numberformat.NumFmtID | should be 22
|
||||
$sheet.Cells["E11"].Style.Numberformat.NumFmtID | Should -Be 22
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,14 +88,14 @@ Describe "Exporting with -Inputobject, table handling, Send-SQL-Data. Checking I
|
||||
$NowPkg = Open-ExcelPackage $NowPath1
|
||||
$sheet = $NowPkg.Sheet1
|
||||
it "Formatted data as a table by default " {
|
||||
$sheet.Tables.Count | should be 1
|
||||
$sheet.Tables.Count | Should -Be 1
|
||||
}
|
||||
Close-ExcelPackage -NoSave $NowPkg
|
||||
Remove-Item $NowPath1
|
||||
$NowPkg = Open-ExcelPackage $NowPath2
|
||||
$sheet = $NowPkg.Sheet1
|
||||
it "Did not data as a table when table:`$false was used " {
|
||||
$sheet.Tables.Count | should be 0
|
||||
$sheet.Tables.Count | Should -Be 0
|
||||
}
|
||||
Close-ExcelPackage -NoSave $NowPkg
|
||||
Remove-Item $NowPath2
|
||||
@@ -103,37 +103,37 @@ Describe "Exporting with -Inputobject, table handling, Send-SQL-Data. Checking I
|
||||
$sheet = $excel.Sheet3
|
||||
Context "Table of processes via Send-SQLDataToExcel" {
|
||||
it "Put the correct data rows and columns into the sheet " {
|
||||
$sheet.Dimension.Rows | should be ($results.Count + 1)
|
||||
$sheet.Dimension.Columns | should be 5
|
||||
$sheet.cells["A1"].Value | should be "Name"
|
||||
$sheet.cells["E1"].Value | should be "StartTime"
|
||||
$sheet.cells["A3"].Value | should be $results[1].Name
|
||||
$sheet.Dimension.Rows | Should -Be ($results.Count + 1)
|
||||
$sheet.Dimension.Columns | Should -Be 5
|
||||
$sheet.cells["A1"].Value | Should -Be "Name"
|
||||
$sheet.cells["E1"].Value | Should -Be "StartTime"
|
||||
$sheet.cells["A3"].Value | Should -Be $results[1].Name
|
||||
}
|
||||
it "Created a table " {
|
||||
$sheet.Tables.count | should be 1
|
||||
$sheet.Tables[0].Columns[4].name | should be "StartTime"
|
||||
$sheet.Tables.count | Should -Be 1
|
||||
$sheet.Tables[0].Columns[4].name | Should -Be "StartTime"
|
||||
}
|
||||
it "Formatted date fields with date type " {
|
||||
$sheet.Cells["E11"].Style.Numberformat.NumFmtID | should be 22
|
||||
$sheet.Cells["E11"].Style.Numberformat.NumFmtID | Should -Be 22
|
||||
}
|
||||
it "Handled two data tables with the same name " {
|
||||
$sheet.Tables[0].Name | should be "Data_"
|
||||
$wvThree[0] | should match "is not unique"
|
||||
$sheet.Tables[0].Name | Should -Be "Data_"
|
||||
$wvThree[0] | Should -Match "is not unique"
|
||||
}
|
||||
}
|
||||
$Sheet = $excel.Sheet4
|
||||
Context "Zero-row Data Table sent with Send-SQLDataToExcel -Force" {
|
||||
it "Raised a warning and put the correct data headers into the sheet " {
|
||||
$sheet.Dimension.Rows | should be 1
|
||||
$sheet.Dimension.Columns | should be 5
|
||||
$sheet.cells["A1"].Value | should be "Name"
|
||||
$sheet.cells["E1"].Value | should be "StartTime"
|
||||
$sheet.cells["A3"].Value | should beNullOrEmpty
|
||||
$wvone[0] | should match "Zero"
|
||||
$sheet.Dimension.Rows | Should -Be 1
|
||||
$sheet.Dimension.Columns | Should -Be 5
|
||||
$sheet.cells["A1"].Value | Should -Be "Name"
|
||||
$sheet.cells["E1"].Value | Should -Be "StartTime"
|
||||
$sheet.cells["A3"].Value | Should -BeNullOrEmpty
|
||||
$wvone[0] | Should -Match "Zero"
|
||||
}
|
||||
it "Applied table formatting " {
|
||||
$sheet.Tables.Count | should be 1
|
||||
$sheet.Tables[0].Name | should be "Data"
|
||||
$sheet.Tables.Count | Should -Be 1
|
||||
$sheet.Tables[0].Name | Should -Be "Data"
|
||||
}
|
||||
|
||||
|
||||
@@ -141,8 +141,8 @@ Describe "Exporting with -Inputobject, table handling, Send-SQL-Data. Checking I
|
||||
$Sheet = $excel.Sheet5
|
||||
Context "Zero-column Data Table handled by Send-SQLDataToExcel -Force" {
|
||||
it "Created a blank Sheet and raised a warning " {
|
||||
$sheet.Dimension | should beNullOrEmpty
|
||||
$wvTwo | should not beNullOrEmpty
|
||||
$sheet.Dimension | Should -BeNullOrEmpty
|
||||
$wvTwo | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
|
||||
}
|
||||
@@ -150,32 +150,32 @@ Describe "Exporting with -Inputobject, table handling, Send-SQL-Data. Checking I
|
||||
$excel = Open-ExcelPackage $path2
|
||||
Context "Send-SQLDataToExcel -append works correctly" {
|
||||
it "Works without table settings " {
|
||||
$excel.sheet1.Dimension.Address | should be "A1:E21"
|
||||
$excel.sheet1.cells[1,1].value | should be "Name"
|
||||
$excel.sheet1.cells[12,1].value | should be $excel.sheet1.cells[2,1].value
|
||||
$excel.sheet1.Tables.count | should be 0
|
||||
$excel.sheet1.Dimension.Address | Should -Be "A1:E21"
|
||||
$excel.sheet1.cells[1,1].value | Should -Be "Name"
|
||||
$excel.sheet1.cells[12,1].value | Should -Be $excel.sheet1.cells[2,1].value
|
||||
$excel.sheet1.Tables.count | Should -Be 0
|
||||
}
|
||||
it "Extends an existing table when appending " {
|
||||
$excel.sheet2.Dimension.Address | should be "A1:E21"
|
||||
$excel.sheet2.cells[1,2].value | should be "CPU"
|
||||
$excel.sheet2.cells[13,2].value | should be $excel.sheet2.cells[3,2].value
|
||||
$excel.sheet2.Tables.count | should be 1
|
||||
$excel.sheet2.Tables[0].name | should be "FirstLot"
|
||||
$excel.sheet2.Tables[0].StyleName | should be "TableStyleLight7"
|
||||
$excel.sheet2.Dimension.Address | Should -Be "A1:E21"
|
||||
$excel.sheet2.cells[1,2].value | Should -Be "CPU"
|
||||
$excel.sheet2.cells[13,2].value | Should -Be $excel.sheet2.cells[3,2].value
|
||||
$excel.sheet2.Tables.count | Should -Be 1
|
||||
$excel.sheet2.Tables[0].name | Should -Be "FirstLot"
|
||||
$excel.sheet2.Tables[0].StyleName | Should -Be "TableStyleLight7"
|
||||
}
|
||||
it "Creates a new table by name when appending " {
|
||||
$excel.sheet3.cells[1,3].value | should be "PM"
|
||||
$excel.sheet3.cells[14,3].value | should be $excel.sheet3.cells[4,3].value
|
||||
$excel.sheet3.Tables.count | should be 1
|
||||
$excel.sheet3.Tables[0].name | should be "SecondLot"
|
||||
$excel.sheet3.Tables[0].StyleName | should be "TableStyleMedium6"
|
||||
$excel.sheet3.cells[1,3].value | Should -Be "PM"
|
||||
$excel.sheet3.cells[14,3].value | Should -Be $excel.sheet3.cells[4,3].value
|
||||
$excel.sheet3.Tables.count | Should -Be 1
|
||||
$excel.sheet3.Tables[0].name | Should -Be "SecondLot"
|
||||
$excel.sheet3.Tables[0].StyleName | Should -Be "TableStyleMedium6"
|
||||
}
|
||||
it "Creates a new table by style when appending " {
|
||||
$excel.sheet4.cells[1,4].value | should be "Handles"
|
||||
$excel.sheet4.cells[15,4].value | should be $excel.sheet4.cells[5,4].value
|
||||
$excel.sheet4.Tables.count | should be 1
|
||||
$excel.sheet4.Tables[0].name | should be "Table1"
|
||||
$excel.sheet4.Tables[0].StyleName | should be "TableStyleDark5"
|
||||
$excel.sheet4.cells[1,4].value | Should -Be "Handles"
|
||||
$excel.sheet4.cells[15,4].value | Should -Be $excel.sheet4.cells[5,4].value
|
||||
$excel.sheet4.Tables.count | Should -Be 1
|
||||
$excel.sheet4.Tables[0].name | Should -Be "Table1"
|
||||
$excel.sheet4.Tables[0].StyleName | Should -Be "TableStyleDark5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,9 +183,9 @@ Describe "Exporting with -Inputobject, table handling, Send-SQL-Data. Checking I
|
||||
Context "Import As Text returns text values" {
|
||||
$x = Import-excel $path -WorksheetName sheet3 -AsText StartTime,hand* | Select-Object -last 1
|
||||
it "Had fields of type string, not date or int, where specified as ASText " {
|
||||
$x.Handles.GetType().Name | should be "String"
|
||||
$x.StartTime.GetType().Name | should be "String"
|
||||
$x.CPU.GetType().Name | should not be "String"
|
||||
$x.Handles.GetType().Name | Should -Be "String"
|
||||
$x.StartTime.GetType().Name | Should -Be "String"
|
||||
$x.CPU.GetType().Name | Should -Not -Be "String"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -44,52 +44,52 @@ Describe "Join Worksheet part 1" {
|
||||
}
|
||||
Context "Export-Excel setting spreadsheet visibility" {
|
||||
it "Hid the worksheets " {
|
||||
$excel.Workbook.Worksheets["Oxford"].Hidden | Should be 'Hidden'
|
||||
$excel.Workbook.Worksheets["Banbury"].Hidden | Should be 'Hidden'
|
||||
$excel.Workbook.Worksheets["Abingdon"].Hidden | Should be 'Hidden'
|
||||
$excel.Workbook.Worksheets["Oxford"].Hidden | Should -Be 'Hidden'
|
||||
$excel.Workbook.Worksheets["Banbury"].Hidden | Should -Be 'Hidden'
|
||||
$excel.Workbook.Worksheets["Abingdon"].Hidden | Should -Be 'Hidden'
|
||||
}
|
||||
it "Un-hid two of the worksheets " {
|
||||
$excel.Workbook.Worksheets["Total"].Hidden | Should be 'Visible'
|
||||
$excel.Workbook.Worksheets["SummaryPivot"].Hidden | Should be 'Visible'
|
||||
$excel.Workbook.Worksheets["Total"].Hidden | Should -Be 'Visible'
|
||||
$excel.Workbook.Worksheets["SummaryPivot"].Hidden | Should -Be 'Visible'
|
||||
}
|
||||
it "Activated the correct worksheet " {
|
||||
Set-ItResult -Pending -Because "Bug in EPPLus 4.5"
|
||||
$excel.Workbook.worksheets["SummaryPivot"].View.TabSelected | Should be $true
|
||||
$excel.Workbook.worksheets["Total"].View.TabSelected | Should be $false
|
||||
$excel.Workbook.worksheets["SummaryPivot"].View.TabSelected | Should -Be $true
|
||||
$excel.Workbook.worksheets["Total"].View.TabSelected | Should -Be $false
|
||||
}
|
||||
|
||||
}
|
||||
Context "Merging 3 blocks" {
|
||||
it "Created sheet of the right size with a title and a table " {
|
||||
$ws.Dimension.Address | Should be "A1:F16"
|
||||
$ws.Tables[0].Address.Address | Should be "A2:F16"
|
||||
$ws.Cells["A1"].Value | Should be "Store Sales Summary"
|
||||
$ws.Cells["A1"].Style.Font.Size | Should be 14
|
||||
$ws.Cells["A1"].Style.Font.Bold | Should be $True
|
||||
$ws.Cells["A1"].Style.Fill.BackgroundColor.Rgb | Should be "FFF0F8FF"
|
||||
$ws.Cells["A1"].Style.Fill.PatternType.ToString() | Should be "Solid"
|
||||
$ws.Tables[0].StyleName | Should be "TableStyleLight1"
|
||||
$ws.Cells["A2:F2"].Style.Font.Bold | Should be $True
|
||||
$ws.Dimension.Address | Should -Be "A1:F16"
|
||||
$ws.Tables[0].Address.Address | Should -Be "A2:F16"
|
||||
$ws.Cells["A1"].Value | Should -Be "Store Sales Summary"
|
||||
$ws.Cells["A1"].Style.Font.Size | Should -Be 14
|
||||
$ws.Cells["A1"].Style.Font.Bold | Should -Be $True
|
||||
$ws.Cells["A1"].Style.Fill.BackgroundColor.Rgb | Should -Be "FFF0F8FF"
|
||||
$ws.Cells["A1"].Style.Fill.PatternType.ToString() | Should -Be "Solid"
|
||||
$ws.Tables[0].StyleName | Should -Be "TableStyleLight1"
|
||||
$ws.Cells["A2:F2"].Style.Font.Bold | Should -Be $True
|
||||
}
|
||||
it "Added a from column with the right heading " {
|
||||
$ws.Cells["F2" ].Value | Should be "Store"
|
||||
$ws.Cells["F3" ].Value | Should be "Oxford"
|
||||
$ws.Cells["F8" ].Value | Should be "Abingdon"
|
||||
$ws.Cells["F13"].Value | Should be "Banbury"
|
||||
$ws.Cells["F2" ].Value | Should -Be "Store"
|
||||
$ws.Cells["F3" ].Value | Should -Be "Oxford"
|
||||
$ws.Cells["F8" ].Value | Should -Be "Abingdon"
|
||||
$ws.Cells["F13"].Value | Should -Be "Banbury"
|
||||
}
|
||||
it "Filled in the data " {
|
||||
$ws.Cells["C3" ].Value | Should be $data1[0].quantity
|
||||
$ws.Cells["C8" ].Value | Should be $data2[0].quantity
|
||||
$ws.Cells["C13"].Value | Should be $data3[0].quantity
|
||||
$ws.Cells["C3" ].Value | Should -Be $data1[0].quantity
|
||||
$ws.Cells["C8" ].Value | Should -Be $data2[0].quantity
|
||||
$ws.Cells["C13"].Value | Should -Be $data3[0].quantity
|
||||
}
|
||||
it "Created the pivot table " {
|
||||
$pt | Should not beNullOrEmpty
|
||||
$pt.StyleName | Should be "PivotStyleMedium9"
|
||||
$pt.RowFields[0].Name | Should be "Store"
|
||||
$pt.ColumnFields[0].name | Should be "Product"
|
||||
$pt.DataFields[0].name | Should be "Sum of Total"
|
||||
$pc.ChartType | Should be "ColumnStacked"
|
||||
$pc.Title.text | Should be "Sales Breakdown"
|
||||
$pt | Should -Not -BeNullOrEmpty
|
||||
$pt.StyleName | Should -Be "PivotStyleMedium9"
|
||||
$pt.RowFields[0].Name | Should -Be "Store"
|
||||
$pt.ColumnFields[0].name | Should -Be "Product"
|
||||
$pt.DataFields[0].name | Should -Be "Sum of Total"
|
||||
$pc.ChartType | Should -Be "ColumnStacked"
|
||||
$pc.Title.text | Should -Be "Sales Breakdown"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,22 +109,22 @@ Describe "Join Worksheet part 2" {
|
||||
$ws = $excel.Workbook.Worksheets["Summary"]
|
||||
Context "Bringing 3 Unlinked blocks onto one page" {
|
||||
it "Hid the source worksheets " {
|
||||
$excel.Workbook.Worksheets[1].Hidden.tostring() | Should be "Hidden"
|
||||
$excel.Workbook.Worksheets[2].Hidden.tostring() | Should be "Hidden"
|
||||
$excel.Workbook.Worksheets[1].Hidden.tostring() | Should -Be "Hidden"
|
||||
$excel.Workbook.Worksheets[2].Hidden.tostring() | Should -Be "Hidden"
|
||||
}
|
||||
it "Created the Summary sheet with title, and block labels, and copied the correct data " {
|
||||
$ws.Cells["A1"].Value | Should be "Summary"
|
||||
$ws.Cells["A2"].Value | Should be $excel.Workbook.Worksheets[1].name
|
||||
$ws.Cells["A3"].Value | Should be $excel.Workbook.Worksheets[1].Cells["A1"].value
|
||||
$ws.Cells["A4"].Value | Should be $excel.Workbook.Worksheets[1].Cells["A2"].value
|
||||
$ws.Cells["B4"].Value | Should be $excel.Workbook.Worksheets[1].Cells["B2"].value
|
||||
$ws.Cells["A1"].Value | Should -Be "Summary"
|
||||
$ws.Cells["A2"].Value | Should -Be $excel.Workbook.Worksheets[1].name
|
||||
$ws.Cells["A3"].Value | Should -Be $excel.Workbook.Worksheets[1].Cells["A1"].value
|
||||
$ws.Cells["A4"].Value | Should -Be $excel.Workbook.Worksheets[1].Cells["A2"].value
|
||||
$ws.Cells["B4"].Value | Should -Be $excel.Workbook.Worksheets[1].Cells["B2"].value
|
||||
$nextRow = $excel.Workbook.Worksheets[1].Dimension.Rows + 3
|
||||
$ws.Cells["A$NextRow"].Value | Should be $excel.Workbook.Worksheets[2].name
|
||||
$ws.Cells["A$NextRow"].Value | Should -Be $excel.Workbook.Worksheets[2].name
|
||||
$nextRow ++
|
||||
$ws.Cells["A$NextRow"].Value | Should be $excel.Workbook.Worksheets[2].Cells["A1"].value
|
||||
$ws.Cells["A$NextRow"].Value | Should -Be $excel.Workbook.Worksheets[2].Cells["A1"].value
|
||||
$nextRow ++
|
||||
$ws.Cells["A$NextRow"].Value | Should be $excel.Workbook.Worksheets[2].Cells["A2"].value
|
||||
$ws.Cells["B$NextRow"].Value | Should be $excel.Workbook.Worksheets[2].Cells["B2"].value
|
||||
$ws.Cells["A$NextRow"].Value | Should -Be $excel.Workbook.Worksheets[2].Cells["A2"].value
|
||||
$ws.Cells["B$NextRow"].Value | Should -Be $excel.Workbook.Worksheets[2].Cells["B2"].value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,17 +15,17 @@ Describe "Password Support" {
|
||||
Get-Service | Select-Object -First 10 | Export-excel -password $password -Path $Path -DisplayPropertySet
|
||||
}
|
||||
it "Threw an error when the password was omitted " {
|
||||
{Open-ExcelPackage -Path $path } | should throw
|
||||
{Open-ExcelPackage -Path $path } | Should -Throw
|
||||
}
|
||||
it "Was able to append when the password was included " {
|
||||
{Get-Service | Select-Object -First 10 |
|
||||
Export-excel -password $password -Path $Path -Append } | should not throw
|
||||
Export-excel -password $password -Path $Path -Append } | Should -Not -Throw
|
||||
}
|
||||
it "Kept the password on the file when it was saved " {
|
||||
{Import-Excel $Path } | should throw
|
||||
{Import-Excel $Path } | Should -Throw
|
||||
}
|
||||
it "Could read the file when the password was included " {
|
||||
(Import-excel $path -Password $password).count | should be 20
|
||||
(Import-excel $path -Password $password).count | Should -Be 20
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,29 +10,29 @@
|
||||
|
||||
It "Should read local file".PadRight(90) {
|
||||
$actual = Import-Excel -Path ".\$($script:xlfileName)"
|
||||
$actual | Should Not Be $null
|
||||
$actual.Count | Should Be 1
|
||||
$actual | Should -Not -Be $null
|
||||
$actual.Count | Should -Be 1
|
||||
}
|
||||
|
||||
It "Should read with pwd".PadRight(90){
|
||||
$actual = Import-Excel -Path (Join-Path $PWD "$($script:xlfileName)")
|
||||
$actual | Should Not Be $null
|
||||
$actual | Should -Not -Be $null
|
||||
}
|
||||
|
||||
It "Should read with just a file name and resolve to cwd".PadRight(90){
|
||||
$actual = Import-Excel -Path "$($script:xlfileName)"
|
||||
$actual | Should Not Be $null
|
||||
$actual | Should -Not -Be $null
|
||||
}
|
||||
|
||||
It "Should fail for not found".PadRight(90){
|
||||
{ Import-Excel -Path "ExcelFileDoesNotExist.xlsx" } | Should Throw "'ExcelFileDoesNotExist.xlsx' file not found"
|
||||
{ Import-Excel -Path "ExcelFileDoesNotExist.xlsx" } | Should -Throw "'ExcelFileDoesNotExist.xlsx' file not found"
|
||||
}
|
||||
|
||||
It "Should fail for xls extension".PadRight(90){
|
||||
{ Import-Excel -Path "ExcelFileDoesNotExist.xls" } | Should Throw "Import-Excel does not support reading this extension type .xls"
|
||||
{ Import-Excel -Path "ExcelFileDoesNotExist.xls" } | Should -Throw "Import-Excel does not support reading this extension type .xls"
|
||||
}
|
||||
|
||||
It "Should fail for xlsxs extension".PadRight(90){
|
||||
{ Import-Excel -Path "ExcelFileDoesNotExist.xlsxs" } | Should Throw "Import-Excel does not support reading this extension type .xlsxs"
|
||||
{ Import-Excel -Path "ExcelFileDoesNotExist.xlsxs" } | Should -Throw "Import-Excel does not support reading this extension type .xlsxs"
|
||||
}
|
||||
}
|
||||
@@ -22,15 +22,15 @@ Apple, New York, 1200,700
|
||||
$ws = $ws = $excel.sheet1
|
||||
}
|
||||
it "Turned on protection for the sheet " {
|
||||
$ws.Protection.IsProtected | should be $true
|
||||
$ws.Protection.IsProtected | Should -Be $true
|
||||
}
|
||||
it "Set sheet-wide protection options " {
|
||||
$ws.Protection.AllowEditObject | should be $false
|
||||
$ws.Protection.AllowFormatRows | should be $true
|
||||
$ws.cells["a2"].Style.Locked | should be $true
|
||||
$ws.Protection.AllowEditObject | Should -Be $false
|
||||
$ws.Protection.AllowFormatRows | Should -Be $true
|
||||
$ws.cells["a2"].Style.Locked | Should -Be $true
|
||||
}
|
||||
it "Unprotected some cells " {
|
||||
$ws.cells["a1"].Style.Locked | should be $false
|
||||
$ws.cells["a1"].Style.Locked | Should -Be $false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,36 +6,36 @@ describe "Consistent passing of ranges." {
|
||||
Remove-Item -path $path -ErrorAction SilentlyContinue
|
||||
$excel = Get-Service | Export-Excel -Path $path -WorksheetName Services -PassThru -AutoSize -DisplayPropertySet -AutoNameRange -Title "Services on $Env:COMPUTERNAME"
|
||||
it "accepts named ranges, cells['name'], worksheet + Name, worksheet + column " {
|
||||
{Add-ConditionalFormatting $excel.Services.Names["Status"] -StrikeThru -RuleType ContainsText -ConditionValue "Stopped" } | Should not throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should be 1
|
||||
{Add-ConditionalFormatting $excel.Services.Cells["Name"] -Italic -RuleType ContainsText -ConditionValue "SVC" } | Should not throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should be 2
|
||||
{Add-ConditionalFormatting $excel.Services.Names["Status"] -StrikeThru -RuleType ContainsText -ConditionValue "Stopped" } | Should -Not -Throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should -Be 1
|
||||
{Add-ConditionalFormatting $excel.Services.Cells["Name"] -Italic -RuleType ContainsText -ConditionValue "SVC" } | Should -Not -Throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should -Be 2
|
||||
$warnvar = $null
|
||||
Add-ConditionalFormatting $excel.Services.Column(3) `
|
||||
-underline -RuleType ContainsText -ConditionValue "Windows" -WarningVariable warnvar -WarningAction SilentlyContinue
|
||||
$warnvar | should not beNullOrEmpty
|
||||
$excel.Services.ConditionalFormatting.Count | Should be 2
|
||||
$warnvar | Should -Not -BeNullOrEmpty
|
||||
$excel.Services.ConditionalFormatting.Count | Should -Be 2
|
||||
$warnvar = $null
|
||||
Add-ConditionalFormatting $excel.Services.Column(3) -Worksheet $excel.Services`
|
||||
-underline -RuleType ContainsText -ConditionValue "Windows" -WarningVariable warnvar -WarningAction SilentlyContinue
|
||||
$warnvar | should beNullOrEmpty
|
||||
$excel.Services.ConditionalFormatting.Count | Should be 3
|
||||
$warnvar | Should -BeNullOrEmpty
|
||||
$excel.Services.ConditionalFormatting.Count | Should -Be 3
|
||||
{Add-ConditionalFormatting "Status" -Worksheet $excel.Services `
|
||||
-ForeGroundColor ([System.Drawing.Color]::Green) -RuleType ContainsText -ConditionValue "Running"} | Should not throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should be 4
|
||||
-ForeGroundColor ([System.Drawing.Color]::Green) -RuleType ContainsText -ConditionValue "Running"} | Should -Not -Throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should -Be 4
|
||||
}
|
||||
Close-ExcelPackage -NoSave $excel
|
||||
$excel = Get-Service | Export-Excel -Path $path -WorksheetName Services -PassThru -AutoSize -DisplayPropertySet -TableName servicetable -Title "Services on $Env:COMPUTERNAME"
|
||||
it "accepts table, table.Address and worksheet + 'C:C' " {
|
||||
{Add-ConditionalFormatting $excel.Services.Tables[0] `
|
||||
-Italic -RuleType ContainsText -ConditionValue "Svc" } | Should not throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should be 1
|
||||
-Italic -RuleType ContainsText -ConditionValue "Svc" } | Should -Not -Throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should -Be 1
|
||||
{Add-ConditionalFormatting $excel.Services.Tables["ServiceTable"].Address `
|
||||
-Bold -RuleType ContainsText -ConditionValue "windows" } | Should not throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should be 2
|
||||
-Bold -RuleType ContainsText -ConditionValue "windows" } | Should -Not -Throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should -Be 2
|
||||
{Add-ConditionalFormatting -Worksheet $excel.Services -Address "a:a" `
|
||||
-RuleType ContainsText -ConditionValue "stopped" -ForeGroundColor ([System.Drawing.Color]::Red) } | Should not throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should be 3
|
||||
-RuleType ContainsText -ConditionValue "stopped" -ForeGroundColor ([System.Drawing.Color]::Red) } | Should -Not -Throw
|
||||
$excel.Services.ConditionalFormatting.Count | Should -Be 3
|
||||
}
|
||||
Close-ExcelPackage -NoSave $excel
|
||||
}
|
||||
@@ -43,29 +43,29 @@ describe "Consistent passing of ranges." {
|
||||
Context "Formating (Set-ExcelRange or its alias Set-Format) " {
|
||||
it "accepts Named Range, cells['Name'], cells['A1:Z9'], row, Worksheet + 'A1:Z9'" {
|
||||
$excel = Get-Service | Export-Excel -Path test2.xlsx -WorksheetName Services -PassThru -AutoSize -DisplayPropertySet -RangeName servicerange -Title "Services on $Env:COMPUTERNAME"
|
||||
{Set-format $excel.Services.Names["serviceRange"] -Bold } | Should Not Throw
|
||||
$excel.Services.cells["B2"].Style.Font.Bold | Should be $true
|
||||
{Set-ExcelRange -Range $excel.Services.Cells["serviceRange"] -italic:$true } | Should not throw
|
||||
$excel.Services.cells["C3"].Style.Font.Italic | Should be $true
|
||||
{Set-format $excel.Services.Row(4) -underline -Bold:$false } | Should not throw
|
||||
$excel.Services.cells["A4"].Style.Font.UnderLine | Should be $true
|
||||
$excel.Services.cells["A4"].Style.Font.Bold | Should not be $true
|
||||
{Set-ExcelRange $excel.Services.Cells["A3:B3"] -StrikeThru } | Should not throw
|
||||
$excel.Services.cells["B3"].Style.Font.Strike | Should be $true
|
||||
{Set-ExcelRange -Worksheet $excel.Services -Range "A5:B6" -FontSize 8 } | Should not throw
|
||||
$excel.Services.cells["A5"].Style.Font.Size | Should be 8
|
||||
{Set-format $excel.Services.Names["serviceRange"] -Bold } | Should -Not -Throw
|
||||
$excel.Services.cells["B2"].Style.Font.Bold | Should -Be $true
|
||||
{Set-ExcelRange -Range $excel.Services.Cells["serviceRange"] -italic:$true } | Should -Not -Throw
|
||||
$excel.Services.cells["C3"].Style.Font.Italic | Should -Be $true
|
||||
{Set-format $excel.Services.Row(4) -underline -Bold:$false } | Should -Not -Throw
|
||||
$excel.Services.cells["A4"].Style.Font.UnderLine | Should -Be $true
|
||||
$excel.Services.cells["A4"].Style.Font.Bold | Should -Not -Be $true
|
||||
{Set-ExcelRange $excel.Services.Cells["A3:B3"] -StrikeThru } | Should -Not -Throw
|
||||
$excel.Services.cells["B3"].Style.Font.Strike | Should -Be $true
|
||||
{Set-ExcelRange -Worksheet $excel.Services -Range "A5:B6" -FontSize 8 } | Should -Not -Throw
|
||||
$excel.Services.cells["A5"].Style.Font.Size | Should -Be 8
|
||||
}
|
||||
Close-ExcelPackage -NoSave $excel
|
||||
it "Accepts Table, Table.Address , worksheet + Name, Column," {
|
||||
$excel = Get-Service | Export-Excel -Path test2.xlsx -WorksheetName Services -PassThru -AutoNameRange -AutoSize -DisplayPropertySet -TableName servicetable -Title "Services on $Env:COMPUTERNAME"
|
||||
{Set-ExcelRange $excel.Services.Tables[0] -Italic } | Should not throw
|
||||
$excel.Services.cells["C3"].Style.Font.Italic | Should be $true
|
||||
{Set-format $excel.Services.Tables["ServiceTable"].Address -Underline } | Should not throw
|
||||
$excel.Services.cells["C3"].Style.Font.UnderLine | Should be $true
|
||||
{Set-ExcelRange -Worksheet $excel.Services -Range "Name" -Bold } | Should not throw
|
||||
$excel.Services.cells["B4"].Style.Font.Bold | Should be $true
|
||||
{$excel.Services.Column(3) | Set-ExcelRange -FontColor ([System.Drawing.Color]::Red) } | Should not throw
|
||||
$excel.Services.cells["C4"].Style.Font.Color.Rgb | Should be "FFFF0000"
|
||||
{Set-ExcelRange $excel.Services.Tables[0] -Italic } | Should -Not -Throw
|
||||
$excel.Services.cells["C3"].Style.Font.Italic | Should -Be $true
|
||||
{Set-format $excel.Services.Tables["ServiceTable"].Address -Underline } | Should -Not -Throw
|
||||
$excel.Services.cells["C3"].Style.Font.UnderLine | Should -Be $true
|
||||
{Set-ExcelRange -Worksheet $excel.Services -Range "Name" -Bold } | Should -Not -Throw
|
||||
$excel.Services.cells["B4"].Style.Font.Bold | Should -Be $true
|
||||
{$excel.Services.Column(3) | Set-ExcelRange -FontColor ([System.Drawing.Color]::Red) } | Should -Not -Throw
|
||||
$excel.Services.cells["C4"].Style.Font.Color.Rgb | Should -Be "FFFF0000"
|
||||
}
|
||||
Close-ExcelPackage -NoSave $excel
|
||||
}
|
||||
@@ -77,24 +77,24 @@ describe "Consistent passing of ranges." {
|
||||
$end = $ws.Dimension.End.Address
|
||||
#can get a named ranged by name or index - starting at zero
|
||||
{Add-PivotTable -ExcelPackage $excel -PivotTableName pt0 -SourceRange $ws.Names[0]`
|
||||
-PivotRows Status -PivotData Name } | Should not throw
|
||||
$excel.Workbook.Worksheets["pt0"] | Should not beNullOrEmpty
|
||||
-PivotRows Status -PivotData Name } | Should -Not -Throw
|
||||
$excel.Workbook.Worksheets["pt0"] | Should -Not -BeNullOrEmpty
|
||||
{Add-PivotTable -ExcelPackage $excel -PivotTableName pt1 -SourceRange $ws.Names["servicerange"]`
|
||||
-PivotRows Status -PivotData Name } | Should not throw
|
||||
$excel.Workbook.Worksheets["pt1"] | Should not beNullOrEmpty
|
||||
-PivotRows Status -PivotData Name } | Should -Not -Throw
|
||||
$excel.Workbook.Worksheets["pt1"] | Should -Not -BeNullOrEmpty
|
||||
#Can specify the range for a pivot as NamedRange or Table or TableAddress or Worksheet + "A1:Z10" or worksheet + RangeName, or worksheet.cells["A1:Z10"] or worksheet.cells["RangeName"]
|
||||
{Add-PivotTable -ExcelPackage $excel -PivotTableName pt2 -SourceRange "servicerange" -SourceWorkSheet $ws `
|
||||
-PivotRows Status -PivotData Name } | Should not throw
|
||||
$excel.Workbook.Worksheets["pt2"] | Should not beNullOrEmpty
|
||||
-PivotRows Status -PivotData Name } | Should -Not -Throw
|
||||
$excel.Workbook.Worksheets["pt2"] | Should -Not -BeNullOrEmpty
|
||||
{Add-PivotTable -ExcelPackage $excel -PivotTableName pt3 -SourceRange $ws.cells["servicerange"]`
|
||||
-PivotRows Status -PivotData Name } | Should not throw
|
||||
$excel.Workbook.Worksheets["pt3"] | Should not beNullOrEmpty
|
||||
-PivotRows Status -PivotData Name } | Should -Not -Throw
|
||||
$excel.Workbook.Worksheets["pt3"] | Should -Not -BeNullOrEmpty
|
||||
{Add-PivotTable -ExcelPackage $excel -PivotTableName pt4 -SourceRange $ws.cells["A2:$end"]`
|
||||
-PivotRows Status -PivotData Name } | Should not throw
|
||||
$excel.Workbook.Worksheets["pt4"] | Should not beNullOrEmpty
|
||||
-PivotRows Status -PivotData Name } | Should -Not -Throw
|
||||
$excel.Workbook.Worksheets["pt4"] | Should -Not -BeNullOrEmpty
|
||||
{Add-PivotTable -ExcelPackage $excel -PivotTableName pt5 -SourceRange "A2:$end" -SourceWorkSheet $ws `
|
||||
-PivotRows Status -PivotData Name } | Should not throw
|
||||
$excel.Workbook.Worksheets["pt5"] | Should not beNullOrEmpty
|
||||
-PivotRows Status -PivotData Name } | Should -Not -Throw
|
||||
$excel.Workbook.Worksheets["pt5"] | Should -Not -BeNullOrEmpty
|
||||
Close-ExcelPackage -NoSave $excel
|
||||
}
|
||||
it "Accepts Table, Table.Addres " {
|
||||
@@ -102,11 +102,11 @@ describe "Consistent passing of ranges." {
|
||||
$ws = $excel.Workbook.Worksheets["Services"] #can get a worksheet by name or index - starting at 1
|
||||
#Can get a table by name or -stating at zero. Can specify the range for a pivot as or Table or TableAddress
|
||||
{Add-PivotTable -ExcelPackage $excel -PivotTableName pt1 -SourceRange $ws.tables["servicetable"]`
|
||||
-PivotRows Status -PivotData Name } | Should not throw
|
||||
$excel.Workbook.Worksheets["pt1"] | Should not beNullOrEmpty
|
||||
-PivotRows Status -PivotData Name } | Should -Not -Throw
|
||||
$excel.Workbook.Worksheets["pt1"] | Should -Not -BeNullOrEmpty
|
||||
{Add-PivotTable -ExcelPackage $excel -PivotTableName pt2 -SourceRange $ws.tables[0].Address `
|
||||
-PivotRows Status -PivotData Name } | Should not throw
|
||||
$excel.Workbook.Worksheets["pt2"] | Should not beNullOrEmpty
|
||||
-PivotRows Status -PivotData Name } | Should -Not -Throw
|
||||
$excel.Workbook.Worksheets["pt2"] | Should -Not -BeNullOrEmpty
|
||||
Close-ExcelPackage -NoSave $excel
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ John,20
|
||||
}
|
||||
|
||||
it "Should throw about the Path".PadRight(87) {
|
||||
{Remove-Worksheet} | Should throw 'Remove-Worksheet requires the and Excel file'
|
||||
{Remove-Worksheet} | Should -Throw 'Remove-Worksheet requires the and Excel file'
|
||||
}
|
||||
|
||||
it "Should delete Target2".PadRight(87) {
|
||||
@@ -37,10 +37,10 @@ John,20
|
||||
|
||||
$actual = Get-ExcelSheetInfo -Path $xlFile1
|
||||
|
||||
$actual.Count | Should Be 3
|
||||
$actual[0].Name | Should Be "Target1"
|
||||
$actual[1].Name | Should Be "Target3"
|
||||
$actual[2].Name | Should Be "Sheet1"
|
||||
$actual.Count | Should -Be 3
|
||||
$actual[0].Name | Should -Be "Target1"
|
||||
$actual[1].Name | Should -Be "Target3"
|
||||
$actual[2].Name | Should -Be "Sheet1"
|
||||
}
|
||||
|
||||
it "Should delete Sheet1".PadRight(87) {
|
||||
@@ -48,10 +48,10 @@ John,20
|
||||
|
||||
$actual = Get-ExcelSheetInfo -Path $xlFile1
|
||||
|
||||
$actual.Count | Should Be 3
|
||||
$actual[0].Name | Should Be "Target1"
|
||||
$actual[1].Name | Should Be "Target2"
|
||||
$actual[2].Name | Should Be "Target3"
|
||||
$actual.Count | Should -Be 3
|
||||
$actual[0].Name | Should -Be "Target1"
|
||||
$actual[1].Name | Should -Be "Target2"
|
||||
$actual[2].Name | Should -Be "Target3"
|
||||
}
|
||||
|
||||
it "Should delete multiple sheets".PadRight(87) {
|
||||
@@ -59,9 +59,9 @@ John,20
|
||||
|
||||
$actual = Get-ExcelSheetInfo -Path $xlFile1
|
||||
|
||||
$actual.Count | Should Be 2
|
||||
$actual[0].Name | Should Be "Target2"
|
||||
$actual[1].Name | Should Be "Target3"
|
||||
$actual.Count | Should -Be 2
|
||||
$actual[0].Name | Should -Be "Target2"
|
||||
$actual[1].Name | Should -Be "Target3"
|
||||
}
|
||||
|
||||
it "Should delete sheet from multiple workbooks".PadRight(87) {
|
||||
@@ -70,10 +70,10 @@ John,20
|
||||
|
||||
$actual = Get-ExcelSheetInfo -Path $xlFile1
|
||||
|
||||
$actual.Count | Should Be 3
|
||||
$actual[0].Name | Should Be "Target1"
|
||||
$actual[1].Name | Should Be "Target2"
|
||||
$actual[2].Name | Should Be "Target3"
|
||||
$actual.Count | Should -Be 3
|
||||
$actual[0].Name | Should -Be "Target1"
|
||||
$actual[1].Name | Should -Be "Target2"
|
||||
$actual[2].Name | Should -Be "Target3"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,16 +29,16 @@ Describe "Number format expansion and setting" {
|
||||
Context "Expand-NumberFormat function" {
|
||||
It "Expanded named number formats as expected " {
|
||||
$r = [regex]::Escape([cultureinfo]::CurrentCulture.NumberFormat.CurrencySymbol)
|
||||
Expand-NumberFormat 'Currency' | Should match "^[$r\(\)\[\] RED0#\?\-;,.]+$"
|
||||
Expand-NumberFormat 'Number' | Should be "0.00"
|
||||
Expand-NumberFormat 'Percentage' | Should be "0.00%"
|
||||
Expand-NumberFormat 'Scientific' | Should be "0.00E+00"
|
||||
Expand-NumberFormat 'Fraction' | Should be "# ?/?"
|
||||
Expand-NumberFormat 'Short Date' | Should be "mm-dd-yy"
|
||||
Expand-NumberFormat 'Short Time' | Should be "h:mm"
|
||||
Expand-NumberFormat 'Long Time' | Should be "h:mm:ss"
|
||||
Expand-NumberFormat 'Date-Time' | Should be "m/d/yy h:mm"
|
||||
Expand-NumberFormat 'Text' | Should be "@"
|
||||
Expand-NumberFormat 'Currency' | Should -Match "^[$r\(\)\[\] RED0#\?\-;,.]+$"
|
||||
Expand-NumberFormat 'Number' | Should -Be "0.00"
|
||||
Expand-NumberFormat 'Percentage' | Should -Be "0.00%"
|
||||
Expand-NumberFormat 'Scientific' | Should -Be "0.00E+00"
|
||||
Expand-NumberFormat 'Fraction' | Should -Be "# ?/?"
|
||||
Expand-NumberFormat 'Short Date' | Should -Be "mm-dd-yy"
|
||||
Expand-NumberFormat 'Short Time' | Should -Be "h:mm"
|
||||
Expand-NumberFormat 'Long Time' | Should -Be "h:mm:ss"
|
||||
Expand-NumberFormat 'Date-Time' | Should -Be "m/d/yy h:mm"
|
||||
Expand-NumberFormat 'Text' | Should -Be "@"
|
||||
}
|
||||
}
|
||||
Context "Apply-NumberFormat" {
|
||||
@@ -87,36 +87,36 @@ Describe "Number format expansion and setting" {
|
||||
}
|
||||
|
||||
It "Set formats which translate to the correct format ID " {
|
||||
$ws.Cells[ 1, 1].Style.Numberformat.NumFmtID | Should be 0 # Set as General
|
||||
$ws.Cells[20, 1].Style.Numberformat.NumFmtID | Should be 1 # Set as 0
|
||||
$ws.Cells[ 2, 1].Style.Numberformat.NumFmtID | Should be 2 # Set as "Number"
|
||||
$ws.Cells[21, 1].Style.Numberformat.NumFmtID | Should be 2 # Set as 0.00
|
||||
$ws.Cells[22, 1].Style.Numberformat.NumFmtID | Should be 3 # Set as #,##0
|
||||
$ws.Cells[23, 1].Style.Numberformat.NumFmtID | Should be 4 # Set as #,##0.00
|
||||
$ws.Cells[26, 1].Style.Numberformat.NumFmtID | Should be 9 # Set as 0%
|
||||
$ws.Cells[27, 1].Style.Numberformat.NumFmtID | Should be 10 # Set as 0.00%
|
||||
$ws.Cells[ 3, 1].Style.Numberformat.NumFmtID | Should be 10 # Set as "Percentage"
|
||||
$ws.Cells[28, 1].Style.Numberformat.NumFmtID | Should be 11 # Set as 0.00E+00
|
||||
$ws.Cells[ 4, 1].Style.Numberformat.NumFmtID | Should be 11 # Set as "Scientific"
|
||||
$ws.Cells[ 5, 1].Style.Numberformat.NumFmtID | Should be 12 # Set as "Fraction"
|
||||
$ws.Cells[29, 1].Style.Numberformat.NumFmtID | Should be 12 # Set as # ?/?
|
||||
$ws.Cells[30, 1].Style.Numberformat.NumFmtID | Should be 13 # Set as # ??/?
|
||||
$ws.Cells[ 6, 1].Style.Numberformat.NumFmtID | Should be 14 # Set as "Short date"
|
||||
$ws.Cells[17, 1].Style.Numberformat.NumFmtID | Should be 15 # Set as d-mmm-yy
|
||||
$ws.Cells[18, 1].Style.Numberformat.NumFmtID | Should be 16 # Set as d-mmm
|
||||
$ws.Cells[19, 1].Style.Numberformat.NumFmtID | Should be 17 # Set as mmm-yy
|
||||
$ws.Cells[12, 1].Style.Numberformat.NumFmtID | Should be 18 # Set as h:mm AM/PM
|
||||
$ws.Cells[13, 1].Style.Numberformat.NumFmtID | Should be 19 # Set as h:mm:ss AM/PM
|
||||
$ws.Cells[ 7, 1].Style.Numberformat.NumFmtID | Should be 20 # Set as "Short time"
|
||||
$ws.Cells[ 8, 1].Style.Numberformat.NumFmtID | Should be 21 # Set as "Long time"
|
||||
$ws.Cells[ 9, 1].Style.Numberformat.NumFmtID | Should be 22 # Set as "Date-time"
|
||||
$ws.Cells[14, 1].Style.Numberformat.NumFmtID | Should be 45 # Set as mm:ss
|
||||
$ws.Cells[15, 1].Style.Numberformat.NumFmtID | Should be 46 # Set as [h]:mm:ss
|
||||
$ws.Cells[16, 1].Style.Numberformat.NumFmtID | Should be 47 # Set as mmss.0
|
||||
$ws.Cells[11, 1].Style.Numberformat.NumFmtID | Should be 49 # Set as "Text"
|
||||
$ws.Cells[31, 1].Style.Numberformat.NumFmtID | Should be 49 # Set as @
|
||||
$ws.Cells[24, 1].Style.Numberformat.Format | Should be '#,' # Whole thousands
|
||||
$ws.Cells[25, 1].Style.Numberformat.Format | Should be '#.0,,' # Millions
|
||||
$ws.Cells[ 1, 1].Style.Numberformat.NumFmtID | Should -Be 0 # Set as General
|
||||
$ws.Cells[20, 1].Style.Numberformat.NumFmtID | Should -Be 1 # Set as 0
|
||||
$ws.Cells[ 2, 1].Style.Numberformat.NumFmtID | Should -Be 2 # Set as "Number"
|
||||
$ws.Cells[21, 1].Style.Numberformat.NumFmtID | Should -Be 2 # Set as 0.00
|
||||
$ws.Cells[22, 1].Style.Numberformat.NumFmtID | Should -Be 3 # Set as #,##0
|
||||
$ws.Cells[23, 1].Style.Numberformat.NumFmtID | Should -Be 4 # Set as #,##0.00
|
||||
$ws.Cells[26, 1].Style.Numberformat.NumFmtID | Should -Be 9 # Set as 0%
|
||||
$ws.Cells[27, 1].Style.Numberformat.NumFmtID | Should -Be 10 # Set as 0.00%
|
||||
$ws.Cells[ 3, 1].Style.Numberformat.NumFmtID | Should -Be 10 # Set as "Percentage"
|
||||
$ws.Cells[28, 1].Style.Numberformat.NumFmtID | Should -Be 11 # Set as 0.00E+00
|
||||
$ws.Cells[ 4, 1].Style.Numberformat.NumFmtID | Should -Be 11 # Set as "Scientific"
|
||||
$ws.Cells[ 5, 1].Style.Numberformat.NumFmtID | Should -Be 12 # Set as "Fraction"
|
||||
$ws.Cells[29, 1].Style.Numberformat.NumFmtID | Should -Be 12 # Set as # ?/?
|
||||
$ws.Cells[30, 1].Style.Numberformat.NumFmtID | Should -Be 13 # Set as # ??/?
|
||||
$ws.Cells[ 6, 1].Style.Numberformat.NumFmtID | Should -Be 14 # Set as "Short date"
|
||||
$ws.Cells[17, 1].Style.Numberformat.NumFmtID | Should -Be 15 # Set as d-mmm-yy
|
||||
$ws.Cells[18, 1].Style.Numberformat.NumFmtID | Should -Be 16 # Set as d-mmm
|
||||
$ws.Cells[19, 1].Style.Numberformat.NumFmtID | Should -Be 17 # Set as mmm-yy
|
||||
$ws.Cells[12, 1].Style.Numberformat.NumFmtID | Should -Be 18 # Set as h:mm AM/PM
|
||||
$ws.Cells[13, 1].Style.Numberformat.NumFmtID | Should -Be 19 # Set as h:mm:ss AM/PM
|
||||
$ws.Cells[ 7, 1].Style.Numberformat.NumFmtID | Should -Be 20 # Set as "Short time"
|
||||
$ws.Cells[ 8, 1].Style.Numberformat.NumFmtID | Should -Be 21 # Set as "Long time"
|
||||
$ws.Cells[ 9, 1].Style.Numberformat.NumFmtID | Should -Be 22 # Set as "Date-time"
|
||||
$ws.Cells[14, 1].Style.Numberformat.NumFmtID | Should -Be 45 # Set as mm:ss
|
||||
$ws.Cells[15, 1].Style.Numberformat.NumFmtID | Should -Be 46 # Set as [h]:mm:ss
|
||||
$ws.Cells[16, 1].Style.Numberformat.NumFmtID | Should -Be 47 # Set as mmss.0
|
||||
$ws.Cells[11, 1].Style.Numberformat.NumFmtID | Should -Be 49 # Set as "Text"
|
||||
$ws.Cells[31, 1].Style.Numberformat.NumFmtID | Should -Be 49 # Set as @
|
||||
$ws.Cells[24, 1].Style.Numberformat.Format | Should -Be '#,' # Whole thousands
|
||||
$ws.Cells[25, 1].Style.Numberformat.Format | Should -Be '#.0,,' # Millions
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -155,70 +155,70 @@ Describe "Set-ExcelColumn, Set-ExcelRow and Set-ExcelRange" {
|
||||
}
|
||||
Context "Set-ExcelRow and Set-ExcelColumn" {
|
||||
it "Set a row and a column to have zero width/height " {
|
||||
$r | Should not beNullorEmpty
|
||||
# $c | Should not beNullorEmpty ## can't see why but this test breaks in appveyor
|
||||
$ws.Column(1).width | Should be 0
|
||||
$ws.Row(5).height | Should be 0
|
||||
$r | Should -Not -BeNullorEmpty
|
||||
# $c | Should -Not -BeNullorEmpty ## can't see why but this test breaks in appveyor
|
||||
$ws.Column(1).width | Should -Be 0
|
||||
$ws.Row(5).height | Should -Be 0
|
||||
}
|
||||
it "Set a column formula, with numberformat, color, bold face and alignment " {
|
||||
$ws.Cells["e2"].Formula | Should be "Quantity*Price"
|
||||
$ws.Cells["e2"].Value | Should be 147.63
|
||||
$ws.Cells["e2"].Style.Font.Color.rgb | Should be "FF0000FF"
|
||||
$ws.Cells["e2"].Style.Font.Bold | Should be $true
|
||||
$ws.Cells["e2"].Style.Font.VerticalAlign | Should be "None"
|
||||
$ws.Cells["e2"].Style.Numberformat.format | Should be "£#,###.00"
|
||||
$ws.Cells["e2"].Style.HorizontalAlignment | Should be "Right"
|
||||
$ws.Cells["e2"].Formula | Should -Be "Quantity*Price"
|
||||
$ws.Cells["e2"].Value | Should -Be 147.63
|
||||
$ws.Cells["e2"].Style.Font.Color.rgb | Should -Be "FF0000FF"
|
||||
$ws.Cells["e2"].Style.Font.Bold | Should -Be $true
|
||||
$ws.Cells["e2"].Style.Font.VerticalAlign | Should -Be "None"
|
||||
$ws.Cells["e2"].Style.Numberformat.format | Should -Be "£#,###.00"
|
||||
$ws.Cells["e2"].Style.HorizontalAlignment | Should -Be "Right"
|
||||
}
|
||||
}
|
||||
Context "Other formatting" {
|
||||
it "Trapped an attempt to hide a range instead of a Row/Column " {
|
||||
$BadHideWarnvar | Should not beNullOrEmpty
|
||||
$BadHideWarnvar | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
it "Set and calculated a row formula with border font size and underline " {
|
||||
$ws.Cells["b7"].Style.Border.Top.Style | Should be "None"
|
||||
$ws.Cells["F7"].Style.Border.Top.Style | Should be "None"
|
||||
$ws.Cells["C7"].Style.Border.Top.Style | Should be "Thin"
|
||||
$ws.Cells["C7"].Style.Border.Bottom.Style | Should be "Thin"
|
||||
$ws.Cells["C7"].Style.Border.Right.Style | Should be "None"
|
||||
$ws.Cells["C7"].Style.Border.Left.Style | Should be "Thin"
|
||||
$ws.Cells["E7"].Style.Border.Left.Style | Should be "None"
|
||||
$ws.Cells["E7"].Style.Border.Right.Style | Should be "Thin"
|
||||
$ws.Cells["C7"].Style.Font.size | Should be 14
|
||||
$ws.Cells["C7"].Formula | Should be "sum(C2:C6)"
|
||||
$ws.Cells["C7"].value | Should be 81
|
||||
$ws.Cells["C7"].Style.Font.UnderLine | Should be $true
|
||||
$ws.Cells["C6"].Style.Font.UnderLine | Should be $false
|
||||
$ws.Cells["b7"].Style.Border.Top.Style | Should -Be "None"
|
||||
$ws.Cells["F7"].Style.Border.Top.Style | Should -Be "None"
|
||||
$ws.Cells["C7"].Style.Border.Top.Style | Should -Be "Thin"
|
||||
$ws.Cells["C7"].Style.Border.Bottom.Style | Should -Be "Thin"
|
||||
$ws.Cells["C7"].Style.Border.Right.Style | Should -Be "None"
|
||||
$ws.Cells["C7"].Style.Border.Left.Style | Should -Be "Thin"
|
||||
$ws.Cells["E7"].Style.Border.Left.Style | Should -Be "None"
|
||||
$ws.Cells["E7"].Style.Border.Right.Style | Should -Be "Thin"
|
||||
$ws.Cells["C7"].Style.Font.size | Should -Be 14
|
||||
$ws.Cells["C7"].Formula | Should -Be "sum(C2:C6)"
|
||||
$ws.Cells["C7"].value | Should -Be 81
|
||||
$ws.Cells["C7"].Style.Font.UnderLine | Should -Be $true
|
||||
$ws.Cells["C6"].Style.Font.UnderLine | Should -Be $false
|
||||
}
|
||||
it "Set custom font, size, text-wrapping, alignment, superscript, border and Fill " {
|
||||
$ws.Cells["b3"].Style.Border.Left.Color.Rgb | Should be "FFFF0000"
|
||||
$ws.Cells["b3"].Style.Border.Left.Style | Should be "Thick"
|
||||
$ws.Cells["b3"].Style.Border.Right.Style | Should be "Thick"
|
||||
$ws.Cells["b3"].Style.Border.Top.Style | Should be "Thick"
|
||||
$ws.Cells["b3"].Style.Border.Bottom.Style | Should be "Thick"
|
||||
$ws.Cells["b3"].Style.Font.Strike | Should be $true
|
||||
$ws.Cells["e1"].Style.Font.Color.Rgb | Should be "ff000000"
|
||||
$ws.Cells["e1"].Style.Font.Bold | Should be $false
|
||||
$ws.Cells["e1"].Style.Font.Name | Should be "Courier New"
|
||||
$ws.Cells["e1"].Style.Font.Size | Should be 9
|
||||
$ws.Cells["e3"].Style.Font.VerticalAlign | Should be "Superscript"
|
||||
$ws.Cells["e3"].Style.HorizontalAlignment | Should be "Left"
|
||||
$ws.Cells["C6"].Style.WrapText | Should be $false
|
||||
$ws.Cells["e7"].Style.WrapText | Should be $true
|
||||
$ws.Cells["e7"].Style.Fill.BackgroundColor.Rgb | Should be "FFF0F8FF"
|
||||
$ws.Cells["e7"].Style.Fill.PatternColor.Rgb | Should be "FFFF0000"
|
||||
$ws.Cells["e7"].Style.Fill.PatternType | Should be "DarkTrellis"
|
||||
$ws.Cells["b3"].Style.Border.Left.Color.Rgb | Should -Be "FFFF0000"
|
||||
$ws.Cells["b3"].Style.Border.Left.Style | Should -Be "Thick"
|
||||
$ws.Cells["b3"].Style.Border.Right.Style | Should -Be "Thick"
|
||||
$ws.Cells["b3"].Style.Border.Top.Style | Should -Be "Thick"
|
||||
$ws.Cells["b3"].Style.Border.Bottom.Style | Should -Be "Thick"
|
||||
$ws.Cells["b3"].Style.Font.Strike | Should -Be $true
|
||||
$ws.Cells["e1"].Style.Font.Color.Rgb | Should -Be "ff000000"
|
||||
$ws.Cells["e1"].Style.Font.Bold | Should -Be $false
|
||||
$ws.Cells["e1"].Style.Font.Name | Should -Be "Courier New"
|
||||
$ws.Cells["e1"].Style.Font.Size | Should -Be 9
|
||||
$ws.Cells["e3"].Style.Font.VerticalAlign | Should -Be "Superscript"
|
||||
$ws.Cells["e3"].Style.HorizontalAlignment | Should -Be "Left"
|
||||
$ws.Cells["C6"].Style.WrapText | Should -Be $false
|
||||
$ws.Cells["e7"].Style.WrapText | Should -Be $true
|
||||
$ws.Cells["e7"].Style.Fill.BackgroundColor.Rgb | Should -Be "FFF0F8FF"
|
||||
$ws.Cells["e7"].Style.Fill.PatternColor.Rgb | Should -Be "FFFF0000"
|
||||
$ws.Cells["e7"].Style.Fill.PatternType | Should -Be "DarkTrellis"
|
||||
}
|
||||
}
|
||||
|
||||
Context "Set-ExcelRange value setting " {
|
||||
it "Inserted a formula " {
|
||||
$ws.Cells["D7"].Formula | Should be "E7/C7"
|
||||
$ws.Cells["D7"].Formula | Should -Be "E7/C7"
|
||||
}
|
||||
it "Inserted a value " {
|
||||
$ws.Cells["B7"].Value | Should be "Total"
|
||||
$ws.Cells["B7"].Value | Should -Be "Total"
|
||||
}
|
||||
it "Inserted a date with localized date-time format " {
|
||||
$ws.Cells["B8"].Style.Numberformat.NumFmtID | Should be 22
|
||||
$ws.Cells["B8"].Style.Numberformat.NumFmtID | Should -Be 22
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,27 +249,27 @@ Describe "Set-ExcelColumn, Set-ExcelRow and Set-ExcelRange" {
|
||||
$ws = $excel.Workbook.Worksheets["Sheet1"]
|
||||
}
|
||||
It "Inserted Hyperlinks " {
|
||||
$ws.Cells["D2"].Hyperlink | Should not beNullorEmpty
|
||||
$ws.Cells["D2"].Style.Font.UnderLine | Should be $true
|
||||
$ws.Cells["D2"].Hyperlink | Should -Not -BeNullorEmpty
|
||||
$ws.Cells["D2"].Style.Font.UnderLine | Should -Be $true
|
||||
}
|
||||
It "Inserted and formatted Dates " {
|
||||
$ws.Cells["C2"].Value.GetType().name | should be "DateTime"
|
||||
$ws.Cells["C2"].Style.Numberformat.NumFmtID | should be 14
|
||||
$ws.Cells["E2"].Value.GetType().name | should be "DateTime"
|
||||
$ws.Cells["E2"].Style.Numberformat.NumFmtID | should be 14
|
||||
$ws.Cells["C2"].Value.GetType().name | Should -Be "DateTime"
|
||||
$ws.Cells["C2"].Style.Numberformat.NumFmtID | Should -Be 14
|
||||
$ws.Cells["E2"].Value.GetType().name | Should -Be "DateTime"
|
||||
$ws.Cells["E2"].Style.Numberformat.NumFmtID | Should -Be 14
|
||||
}
|
||||
It "Inserted Formulas " {
|
||||
$ws.Cells["F2"].Formula | Should not beNullorEmpty
|
||||
$ws.Cells["F2"].Formula | Should -Not -BeNullorEmpty
|
||||
}
|
||||
It "Created Named ranges " {
|
||||
$ws.Names.Count | Should be 6
|
||||
$ws.Names["Age"] | Should not beNullorEmpty
|
||||
$ws.Names["Age"].Start.Column | Should be 6
|
||||
$ws.Names["Age"].Start.Row | Should be 2
|
||||
$ws.Names["Age"].End.Row | Should be 7
|
||||
$ws.names[0].name | Should be "Name"
|
||||
$ws.Names[0].Start.Column | Should be 1
|
||||
$ws.Names[0].Start.Row | Should be 2
|
||||
$ws.Names.Count | Should -Be 6
|
||||
$ws.Names["Age"] | Should -Not -BeNullorEmpty
|
||||
$ws.Names["Age"].Start.Column | Should -Be 6
|
||||
$ws.Names["Age"].Start.Row | Should -Be 2
|
||||
$ws.Names["Age"].End.Row | Should -Be 7
|
||||
$ws.names[0].name | Should -Be "Name"
|
||||
$ws.Names[0].Start.Column | Should -Be 1
|
||||
$ws.Names[0].Start.Row | Should -Be 2
|
||||
}
|
||||
|
||||
}
|
||||
@@ -286,9 +286,9 @@ Describe "Conditional Formatting" {
|
||||
}
|
||||
Context "Using a pre-prepared 3 Arrows rule" {
|
||||
it "Set the right type, IconSet and range " {
|
||||
$ws.ConditionalFormatting[0].IconSet | Should be "Arrows"
|
||||
$ws.ConditionalFormatting[0].Address.Address | Should be "c:c"
|
||||
$ws.ConditionalFormatting[0].Type.ToString() | Should be "ThreeIconSet"
|
||||
$ws.ConditionalFormatting[0].IconSet | Should -Be "Arrows"
|
||||
$ws.ConditionalFormatting[0].Address.Address | Should -Be "c:c"
|
||||
$ws.ConditionalFormatting[0].Type.ToString() | Should -Be "ThreeIconSet"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -329,8 +329,8 @@ Sold
|
||||
|
||||
$ws = $excel.Workbook.Worksheets["Sheet1"]
|
||||
|
||||
$ws.Names.Count | Should Be 1
|
||||
$ws.Names[0].Name | Should Be 'Sold'
|
||||
$ws.Names.Count | Should -Be 1
|
||||
$ws.Names[0].Name | Should -Be 'Sold'
|
||||
}
|
||||
|
||||
it "Should have a more than a single item as a named range " {
|
||||
@@ -344,9 +344,9 @@ Sold,ID
|
||||
|
||||
$ws = $excel.Workbook.Worksheets["Sheet1"]
|
||||
|
||||
$ws.Names.Count | Should Be 2
|
||||
$ws.Names[0].Name | Should Be 'Sold'
|
||||
$ws.Names[1].Name | Should Be 'ID'
|
||||
$ws.Names.Count | Should -Be 2
|
||||
$ws.Names[0].Name | Should -Be 'Sold'
|
||||
$ws.Names[1].Name | Should -Be 'ID'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -368,20 +368,20 @@ Describe "Table Formatting" {
|
||||
}
|
||||
Context "Setting and not clearing when Export-Excel touches the file again." {
|
||||
it "Set the Table Options " {
|
||||
$ws1.Tables[0].Address.Address | should be "A1:E16"
|
||||
$ws1.Tables[0].Name | should be "HardwareTable"
|
||||
$ws1.Tables[0].ShowFirstColumn | should be $true
|
||||
$ws1.Tables[0].ShowLastColumn | should not be $true
|
||||
$ws1.Tables[0].ShowTotal | should be $true
|
||||
$ws1.Tables[0].Columns["Total"].TotalsRowFunction | Should be "Sum"
|
||||
$ws1.Tables[0].StyleName | should be "TableStyleLight1"
|
||||
$ws1.Cells["D4"].Style.Numberformat.Format | Should match ([regex]::Escape([cultureinfo]::CurrentCulture.NumberFormat.CurrencySymbol))
|
||||
$ws1.Cells["E5"].Style.Numberformat.Format | Should match ([regex]::Escape([cultureinfo]::CurrentCulture.NumberFormat.CurrencySymbol))
|
||||
$ws1.Tables[0].Address.Address | Should -Be "A1:E16"
|
||||
$ws1.Tables[0].Name | Should -Be "HardwareTable"
|
||||
$ws1.Tables[0].ShowFirstColumn | Should -Be $true
|
||||
$ws1.Tables[0].ShowLastColumn | Should -Not -Be $true
|
||||
$ws1.Tables[0].ShowTotal | Should -Be $true
|
||||
$ws1.Tables[0].Columns["Total"].TotalsRowFunction | Should -Be "Sum"
|
||||
$ws1.Tables[0].StyleName | Should -Be "TableStyleLight1"
|
||||
$ws1.Cells["D4"].Style.Numberformat.Format | Should -Match ([regex]::Escape([cultureinfo]::CurrentCulture.NumberFormat.CurrencySymbol))
|
||||
$ws1.Cells["E5"].Style.Numberformat.Format | Should -Match ([regex]::Escape([cultureinfo]::CurrentCulture.NumberFormat.CurrencySymbol))
|
||||
}
|
||||
it "Set the Pivot Options " {
|
||||
$ws2.PivotTables[0].DataFields[0].Format | Should match ([regex]::Escape([cultureinfo]::CurrentCulture.NumberFormat.CurrencySymbol))
|
||||
$ws2.PivotTables[0].ColumGrandTotals | Should be $false
|
||||
$ws2.PivotTables[0].StyleName | Should be "PivotStyleDark2"
|
||||
$ws2.PivotTables[0].DataFields[0].Format | Should -Match ([regex]::Escape([cultureinfo]::CurrentCulture.NumberFormat.CurrencySymbol))
|
||||
$ws2.PivotTables[0].ColumGrandTotals | Should -Be $false
|
||||
$ws2.PivotTables[0].StyleName | Should -Be "PivotStyleDark2"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -28,30 +28,30 @@ Describe "Data validation and protection" {
|
||||
$ws = $excelPackage.Sales
|
||||
}
|
||||
It "Created the expected number of rules " {
|
||||
$ws.DataValidations.count | Should be 2
|
||||
$ws.DataValidations.count | Should -Be 2
|
||||
}
|
||||
It "Created a List validation rule against a range of Cells " {
|
||||
$ws.DataValidations[0].ValidationType.Type.tostring() | Should be 'List'
|
||||
$ws.DataValidations[0].Formula.ExcelFormula | Should be 'values!$a$1:$a$10'
|
||||
$ws.DataValidations[0].Formula2 | Should benullorempty
|
||||
$ws.DataValidations[0].ValidationType.Type.tostring() | Should -Be 'List'
|
||||
$ws.DataValidations[0].Formula.ExcelFormula | Should -Be 'values!$a$1:$a$10'
|
||||
$ws.DataValidations[0].Formula2 | Should -Benullorempty
|
||||
}
|
||||
It "Created an integer validation rule for values between X and Y " {
|
||||
$ws.DataValidations[1].ValidationType.Type.tostring() | Should be 'Whole'
|
||||
$ws.DataValidations[1].Formula.Value | Should be 0
|
||||
$ws.DataValidations[1].Formula2.value | Should not benullorempty
|
||||
$ws.DataValidations[1].Operator.tostring() | should be 'between'
|
||||
$ws.DataValidations[1].ValidationType.Type.tostring() | Should -Be 'Whole'
|
||||
$ws.DataValidations[1].Formula.Value | Should -Be 0
|
||||
$ws.DataValidations[1].Formula2.value | Should -Not -Benullorempty
|
||||
$ws.DataValidations[1].Operator.tostring() | Should -Be 'between'
|
||||
}
|
||||
It "Set Error behaviors for both rules " {
|
||||
$ws.DataValidations[0].ErrorStyle.tostring() | Should be 'stop'
|
||||
$ws.DataValidations[1].ErrorStyle.tostring() | Should be 'stop'
|
||||
$ws.DataValidations[0].AllowBlank | Should be $true
|
||||
$ws.DataValidations[1].AllowBlank | Should be $true
|
||||
$ws.DataValidations[0].ShowErrorMessage | Should be $true
|
||||
$ws.DataValidations[1].ShowErrorMessage | Should be $true
|
||||
$ws.DataValidations[0].ErrorTitle | Should not benullorempty
|
||||
$ws.DataValidations[1].ErrorTitle | Should not benullorempty
|
||||
$ws.DataValidations[0].Error | Should not benullorempty
|
||||
$ws.DataValidations[1].Error | Should not benullorempty
|
||||
$ws.DataValidations[0].ErrorStyle.tostring() | Should -Be 'stop'
|
||||
$ws.DataValidations[1].ErrorStyle.tostring() | Should -Be 'stop'
|
||||
$ws.DataValidations[0].AllowBlank | Should -Be $true
|
||||
$ws.DataValidations[1].AllowBlank | Should -Be $true
|
||||
$ws.DataValidations[0].ShowErrorMessage | Should -Be $true
|
||||
$ws.DataValidations[1].ShowErrorMessage | Should -Be $true
|
||||
$ws.DataValidations[0].ErrorTitle | Should -Not -Benullorempty
|
||||
$ws.DataValidations[1].ErrorTitle | Should -Not -Benullorempty
|
||||
$ws.DataValidations[0].Error | Should -Not -Benullorempty
|
||||
$ws.DataValidations[1].Error | Should -Not -Benullorempty
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6576,6 +6576,346 @@ Boston,2/18/2018,1000
|
||||
<command:examples />
|
||||
<command:relatedLinks />
|
||||
</command:command>
|
||||
<command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
|
||||
<command:details>
|
||||
<command:name>ConvertFrom-ExcelSheet</command:name>
|
||||
<command:verb>ConvertFrom</command:verb>
|
||||
<command:noun>ExcelSheet</command:noun>
|
||||
<maml:description>
|
||||
<maml:para>Exports Sheets from Excel Workbooks to CSV files.</maml:para>
|
||||
</maml:description>
|
||||
</command:details>
|
||||
<maml:description>
|
||||
<maml:para>This command provides a convenient way to run Import-Excel @ImportParameters | Select-Object @selectParameters | export-Csv @ ExportParameters It can take the parameters -AsText , as used in Import-Excel, )Properties & -ExcludeProperties as used in Select-Object and -Append, -Delimiter and -Encoding as used in Export-CSV</maml:para>
|
||||
</maml:description>
|
||||
<command:syntax>
|
||||
<command:syntaxItem>
|
||||
<maml:name>ConvertFrom-ExcelSheet</maml:name>
|
||||
<command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
|
||||
<maml:name>Path</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>The path to the .XLSX file which will be exported.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
|
||||
<maml:name>OutputPath</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>The directory where the output file(s) will be created. The file name(s) will match the name of the workbook page which contained the data.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
|
||||
<maml:name>SheetName</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>The name of a sheet to export, or a regular expression which is used to identify sheets</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
|
||||
<maml:name>Encoding</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Sets the text encoding for the output data file; UTF8 bu default</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>Encoding</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
|
||||
<maml:name>Extension</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Sets the file extension for the exported data, defaults to CSV</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValueGroup>
|
||||
<command:parameterValue required="false" command:variableLength="false">.txt</command:parameterValue>
|
||||
<command:parameterValue required="false" command:variableLength="false">.log</command:parameterValue>
|
||||
<command:parameterValue required="false" command:variableLength="false">.csv</command:parameterValue>
|
||||
</command:parameterValueGroup>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
|
||||
<maml:name>Delimiter</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Selects , or ; as the delimeter for the exported data - if not specified , is used by default.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValueGroup>
|
||||
<command:parameterValue required="false" command:variableLength="false">;</command:parameterValue>
|
||||
<command:parameterValue required="false" command:variableLength="false"></command:parameterValue>
|
||||
<command:parameterValue required="false" command:variableLength="false"></command:parameterValue>
|
||||
</command:parameterValueGroup>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
|
||||
<maml:name>Property</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Specifies the properties to select. Wildcards are permitted - the default is "*". The value of the Property parameter can be a new calculated property, and follows the same pattern as Select-Item</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>Object</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
|
||||
<maml:name>ExcludeProperty</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Specifies the properties that to exclude from the export. Wildcards are permitted. This parameter is effective only when the command also includes the Property parameter.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>Object</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="8" aliases="none">
|
||||
<maml:name>AsText</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>AsText allows selected columns to be returned as the text displayed in their cells, instead of their value. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="8" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Append</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Use this parameter to have the export add output to the end of the file. Without this parameter, the command replaces the file contents without warning.</maml:para>
|
||||
</maml:Description>
|
||||
<dev:type>
|
||||
<maml:name>SwitchParameter</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>False</dev:defaultValue>
|
||||
</command:parameter>
|
||||
</command:syntaxItem>
|
||||
</command:syntax>
|
||||
<command:parameters>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Append</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Use this parameter to have the export add output to the end of the file. Without this parameter, the command replaces the file contents without warning.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>SwitchParameter</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>False</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="8" aliases="none">
|
||||
<maml:name>AsText</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>AsText allows selected columns to be returned as the text displayed in their cells, instead of their value. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="8" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
|
||||
<maml:name>Delimiter</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Selects , or ; as the delimeter for the exported data - if not specified , is used by default.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
|
||||
<maml:name>Encoding</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Sets the text encoding for the output data file; UTF8 bu default</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>Encoding</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
|
||||
<maml:name>ExcludeProperty</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Specifies the properties that to exclude from the export. Wildcards are permitted. This parameter is effective only when the command also includes the Property parameter.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>Object</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
|
||||
<maml:name>Extension</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Sets the file extension for the exported data, defaults to CSV</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
|
||||
<maml:name>OutputPath</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>The directory where the output file(s) will be created. The file name(s) will match the name of the workbook page which contained the data.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
|
||||
<maml:name>Path</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>The path to the .XLSX file which will be exported.</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
|
||||
<maml:name>Property</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Specifies the properties to select. Wildcards are permitted - the default is "*". The value of the Property parameter can be a new calculated property, and follows the same pattern as Select-Item</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>Object</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
|
||||
<maml:name>SheetName</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>The name of a sheet to export, or a regular expression which is used to identify sheets</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
</command:parameters>
|
||||
<command:inputTypes>
|
||||
<command:inputType>
|
||||
<dev:type>
|
||||
<maml:name>None</maml:name>
|
||||
</dev:type>
|
||||
<maml:description>
|
||||
<maml:para></maml:para>
|
||||
</maml:description>
|
||||
</command:inputType>
|
||||
</command:inputTypes>
|
||||
<command:returnValues>
|
||||
<command:returnValue>
|
||||
<dev:type>
|
||||
<maml:name>System.Object</maml:name>
|
||||
</dev:type>
|
||||
<maml:description>
|
||||
<maml:para></maml:para>
|
||||
</maml:description>
|
||||
</command:returnValue>
|
||||
</command:returnValues>
|
||||
<maml:alertSet>
|
||||
<maml:alert>
|
||||
<maml:para></maml:para>
|
||||
</maml:alert>
|
||||
</maml:alertSet>
|
||||
<command:examples>
|
||||
<command:example>
|
||||
<maml:title>-------------------------- Example 1 --------------------------</maml:title>
|
||||
<dev:code>PS C:\> ConvertFrom-ExcelSheet Path .\__tests__\First10Races.xlsx -OutputPath .. -AsText GridPosition,date</dev:code>
|
||||
<dev:remarks>
|
||||
<maml:para>First10Races.xlsx contains information about Motor races. The race date and grid (starting) position are stored with custom formats. The command specifies the path to the file, and the directory to create the output file, and specifies that the columns "GridPosition" and "Date" should be treated as text to preserve their formatting</maml:para>
|
||||
</dev:remarks>
|
||||
</command:example>
|
||||
<command:example>
|
||||
<maml:title>-------------------------- Example 2 --------------------------</maml:title>
|
||||
<dev:code>PS C:\> ConvertFrom-ExcelSheet Path .\__tests__\First10Races.xlsx -OutputPath .. -AsText "GridPosition" -Property driver, @{n="date"; e={[datetime]::FromOADate($_.Date).tostring("#MM/dd/yyyy#")}} , FinishPosition, GridPosition</dev:code>
|
||||
<dev:remarks>
|
||||
<maml:para>This uses the same file as example 1. Because the race date has a custom format, it imports as a number, The requirement is to create a CSV file with the Driver, a specially formatted Date, FinishPostion and GridPostion (keeping its custom formatting). The command specifies the path to the file, and the directory to create the output file, specifies that the column "GridPosition" should be treated as text instead of a number, and the output properties should be Driver, a calculated "date" field, FinishPosition and GridPsition. FromOADate converts the dates used by Excel (Days since Jan 1 1900) to a datetime object.</maml:para>
|
||||
</dev:remarks>
|
||||
</command:example>
|
||||
</command:examples>
|
||||
<command:relatedLinks>
|
||||
<maml:navigationLink>
|
||||
<maml:linkText>Online Version:</maml:linkText>
|
||||
<maml:uri>https://github.com/dfinke/ImportExcel</maml:uri>
|
||||
</maml:navigationLink>
|
||||
</command:relatedLinks>
|
||||
</command:command>
|
||||
<command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
|
||||
<command:details>
|
||||
<command:name>ConvertFrom-ExcelToSQLInsert</command:name>
|
||||
@@ -10499,6 +10839,18 @@ PS\> Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -IncludePiv
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Password</maml:name>
|
||||
<maml:Description>
|
||||
@@ -10624,6 +10976,18 @@ PS\> Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -IncludePiv
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Password</maml:name>
|
||||
<maml:Description>
|
||||
@@ -10735,6 +11099,18 @@ PS\> Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -IncludePiv
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Password</maml:name>
|
||||
<maml:Description>
|
||||
@@ -10859,6 +11235,18 @@ PS\> Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -IncludePiv
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Password</maml:name>
|
||||
<maml:Description>
|
||||
@@ -10985,6 +11373,18 @@ PS\> Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -IncludePiv
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Password</maml:name>
|
||||
<maml:Description>
|
||||
@@ -11097,6 +11497,18 @@ PS\> Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -IncludePiv
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Password</maml:name>
|
||||
<maml:Description>
|
||||
@@ -11249,6 +11661,18 @@ PS\> Export-Excel -ExcelPackage $excel -WorksheetName "Processes" -IncludePiv
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>AsDate</maml:name>
|
||||
<maml:Description>
|
||||
<maml:para>Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)</maml:para>
|
||||
</maml:Description>
|
||||
<command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
|
||||
<dev:type>
|
||||
<maml:name>String[]</maml:name>
|
||||
<maml:uri />
|
||||
</dev:type>
|
||||
<dev:defaultValue>None</dev:defaultValue>
|
||||
</command:parameter>
|
||||
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
|
||||
<maml:name>Password</maml:name>
|
||||
<maml:Description>
|
||||
|
||||
4
mdHelp/buildHelp.ps1
Normal file
4
mdHelp/buildHelp.ps1
Normal file
@@ -0,0 +1,4 @@
|
||||
Import-Module platyPS
|
||||
Get-ChildItem $PSScriptRoot -Directory | ForEach-Object {
|
||||
New-ExternalHelp -Path $_.FullName -OutputPath (Join-Path $PSScriptRoot "..\$($_.Name)") -Force -Verbose
|
||||
}
|
||||
@@ -76,6 +76,21 @@ Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -AsDate
|
||||
Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)
|
||||
|
||||
```yaml
|
||||
Type: String[]
|
||||
Parameter Sets: (All)
|
||||
Aliases:
|
||||
|
||||
Required: False
|
||||
Position: 8
|
||||
Default value: None
|
||||
Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -Delimiter
|
||||
Selects , or ; as the delimeter for the exported data - if not specified , is used by default.
|
||||
|
||||
|
||||
@@ -395,6 +395,21 @@ Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -AsDate
|
||||
Not all date formats are recognized as indicating the number in the cell represents a date AsDate forces the number which would be returned to be converted to a date. (* is supported as a wildcard.)
|
||||
|
||||
```yaml
|
||||
Type: String[]
|
||||
Parameter Sets: (All)
|
||||
Aliases:
|
||||
|
||||
Required: False
|
||||
Position: Named
|
||||
Default value: None
|
||||
Accept pipeline input: False
|
||||
Accept wildcard characters: False
|
||||
```
|
||||
|
||||
### -Password
|
||||
Accepts a string that will be used to open a password protected Excel file.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user