mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-06 00:23:20 +00:00
Merge pull request #664 from jhoneill/master
Fixes issues with newer EPPLus.
This commit is contained in:
BIN
EPPlus.dll
BIN
EPPlus.dll
Binary file not shown.
@@ -118,6 +118,7 @@ Check out the How To Videos https://www.youtube.com/watch?v=U3Ne_yX4tYo&list=PL5
|
||||
'Set-ExcelColumn',
|
||||
'Set-ExcelRange',
|
||||
'Set-ExcelRow',
|
||||
'Set-WorkSheetProtection',
|
||||
'Test-Boolean',
|
||||
'Test-Date',
|
||||
'Test-Integer',
|
||||
|
||||
@@ -272,8 +272,11 @@
|
||||
Write-Warning -Message "PivotTable defined in $($pivotTableName) already exists, only the data range will be changed."
|
||||
$pivotTable = $wsPivot.PivotTables[$pivotTableName]
|
||||
if (-not $SourceRange) { $SourceRange = $SourceWorkSheet.Dimension.Address}
|
||||
$pivotTable.CacheDefinition.CacheDefinitionXml.pivotCacheDefinition.cacheSource.worksheetSource.ref = $SourceRange
|
||||
}
|
||||
$pivotTable.CacheDefinition.SourceRange = $SourceWorkSheet.cells[$SourceRange]
|
||||
#change for epPlus 4.5 - Previously needed to hack the xml
|
||||
# $pivotTable.CacheDefinition.CacheDefinitionXml.pivotCacheDefinition.cacheSource.worksheetSource.ref = $SourceRange
|
||||
|
||||
}
|
||||
|
||||
#Create the chart if it doesn't exist, leave alone if it does.
|
||||
if ($IncludePivotChart -and -not $wsPivot.Drawings["Chart$pivotTableName"] ) {
|
||||
|
||||
@@ -25,6 +25,14 @@
|
||||
"WinsToFastLaps" and the data cells should contain =E2/C2 , =E3/C3 etc
|
||||
the new data cells should become a named range, which will also be
|
||||
named "WinsToFastLaps" and the column width will be set automatically.
|
||||
When a value begins with "=", it is treated as a formula.
|
||||
If value is a script block it will be evaluated, so here the string "=E$row/C$Row"
|
||||
will have the number of the current row inserted. See the value parameter for a list of
|
||||
variables which can be used. Note than when evaluating an expression in a string,
|
||||
it is necessary to wrap it in $() so $row is valid but $($row+1) is needed. To prevent
|
||||
Variables merging into other parts of the string, use the back tick "$columnName`4" will
|
||||
be "G4" - withouth the backtick the string will look for a variable named "columnName4"
|
||||
|
||||
.EXAMPLE
|
||||
Set-ExcelColumn -Worksheet $ws -Heading "Link" -Value {"https://en.wikipedia.org" + $worksheet.cells["B$Row"].value } -AutoSize
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
.Example
|
||||
Set-WorkSheetProtection -WorkSheet $planSheet -IsProtected -AllowAll -AllowInsertColumns:$false -AllowDeleteColumns:$false -UnLockAddress "A:N"
|
||||
Turns on protection for the worksheet in $planSheet, checks all the allow boxes excel Insert and Delete columns and unlocks columns A-N
|
||||
Turns on protection for the worksheet in $planSheet, checks all the allow boxes except Insert and Delete columns and unlocks columns A-N
|
||||
#>
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '',Justification='Does not change system state')]
|
||||
param (
|
||||
@@ -48,7 +48,7 @@
|
||||
[switch]$BlockEditObject,
|
||||
##Opposite of the value in the 'Edit Scenarios' check box. Set to allow when Protect is first enabled
|
||||
[switch]$BlockEditScenarios,
|
||||
#Address range for cells to lock in the form "A:Z" or "1:10" or "A1:Z10"
|
||||
#Address range for cells to lock in the form "A:Z" or "1:10" or "A1:Z10". If No range is specified, the whole sheet is locked by default.
|
||||
[string]$LockAddress,
|
||||
#Address range for cells to Unlock in the form "A:Z" or "1:10" or "A1:Z10"
|
||||
[string]$UnLockAddress
|
||||
@@ -72,10 +72,13 @@
|
||||
}
|
||||
Else {Write-Warning -Message "You haven't said if you want to turn protection off, or on." }
|
||||
|
||||
if ($LockAddress) {
|
||||
Set-ExcelRange -Range $WorkSheet.cells[$LockAddress] -Locked
|
||||
}
|
||||
elseif ($IsProtected) {
|
||||
Set-ExcelRange -Range $WorkSheet.Cells -Locked
|
||||
}
|
||||
if ($UnlockAddress) {
|
||||
Set-ExcelRange -Range $WorkSheet.cells[$UnlockAddress] -Locked:$false
|
||||
}
|
||||
if ($lockAddress) {
|
||||
Set-ExcelRange -Range $WorkSheet.cells[$UnlockAddress] -Locked
|
||||
}
|
||||
}
|
||||
@@ -461,11 +461,13 @@ Describe ExportExcel {
|
||||
$excel.ProcessesPivotTable | Should not beNullOrEmpty
|
||||
$PTws | Should not beNullOrEmpty
|
||||
$PTws.PivotTables.Count | Should be 1
|
||||
$PTws.View.TabSelected | Should be $true
|
||||
$Excel.Workbook.Worksheets["Processes"] | Should not beNullOrEmpty
|
||||
$Excel.Workbook.Worksheets.Count | Should beGreaterThan 2
|
||||
$excel.Workbook.Worksheets["Processes"].Dimension.rows | Should be 21 #20 data + 1 header
|
||||
}
|
||||
it "Selected the Pivottable page " {
|
||||
$PTws.View.TabSelected | Should be $true
|
||||
} -Skip # << Bug in EPPLus 4.5
|
||||
$pt = $PTws.PivotTables[0]
|
||||
it "Built the expected Pivot table " {
|
||||
$pt.RowFields.Count | Should be 1
|
||||
@@ -678,10 +680,10 @@ Describe ExportExcel {
|
||||
$PC1 = $ptsheet1.Drawings[0]
|
||||
$PC2 = $ptsheet2.Drawings[0]
|
||||
it "Created the pivot tables linked to the right data. " {
|
||||
$PT1.CacheDefinition.CacheDefinitionXml.pivotCacheDefinition.cacheSource.worksheetSource.ref |
|
||||
Should be ("A1:" + $ws1.Dimension.End.Address)
|
||||
$PT2.CacheDefinition.CacheDefinitionXml.pivotCacheDefinition.cacheSource.worksheetSource.ref |
|
||||
Should be ("A2:" + $ws2.Dimension.End.Address) #Title in row 1
|
||||
$PT1.CacheDefinition.CacheDefinitionXml.pivotCacheDefinition.cacheSource.worksheetSource.name|
|
||||
Should be "All_services"
|
||||
$PT2.CacheDefinition.CacheDefinitionXml.pivotCacheDefinition.cacheSource.worksheetSource.name |
|
||||
Should be "Processes"
|
||||
}
|
||||
it "Set the other pivot tables and chart options from the definitions. " {
|
||||
$pt1.PageFields[0].Name | Should be 'StartType'
|
||||
|
||||
@@ -10,10 +10,10 @@ Banana, London , 300, 200
|
||||
Orange, Paris, 600, 500
|
||||
Banana, Paris, 300, 200
|
||||
Apple, New York, 1200,700
|
||||
|
||||
|
||||
"@ | Export-Excel -Path $path -TableStyle Medium13 -tablename "RawData" -ConditionalFormat @{Range="C2:C7"; DataBarColor="Green"} -ExcelChartDefinition @{ChartType="Doughnut";XRange="A2:B7"; YRange="C2:C7"; width=800; } -PivotTableDefinition @{Sales=@{
|
||||
PivotRows="City"; PivotColumns="Product"; PivotData=@{Gross="Sum";Net="Sum"}; PivotNumberFormat="$#,##0.00"; PivotTotals="Both"; PivotTableStyle="Medium12"; Activate=$true
|
||||
|
||||
|
||||
PivotChartDefinition=@{Title="Gross and net by city and product"; ChartType="ColumnClustered"; Column=6; Width=600; Height=360; YMajorUnit=500; YMinorUnit=100; YAxisNumberformat="$#,##0"; LegendPosition="Bottom"}}}
|
||||
|
||||
$excel = Open-ExcelPackage $path
|
||||
@@ -40,7 +40,7 @@ Describe "Creating workbook with a single line" {
|
||||
}
|
||||
}
|
||||
Context "PivotTable" {
|
||||
it "Created the PivotTable on a new page and made it active " {
|
||||
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
|
||||
@@ -49,8 +49,10 @@ Describe "Creating workbook with a single line" {
|
||||
$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.View.TabSelected | Should be $true
|
||||
}
|
||||
it "Made the PivotTable page active " {
|
||||
$ws2.View.TabSelected | Should be $true
|
||||
} -Skip # << Bug in EPPLus 4.5
|
||||
it "Created the Pivot Chart " {
|
||||
$ws2.Drawings[0] | Should not beNullOrEmpty
|
||||
$ws2.Drawings[0].ChartType.ToString() | Should be ColumnClustered
|
||||
|
||||
@@ -81,7 +81,7 @@ Describe "Creating small named ranges with hyperlinks" {
|
||||
$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
|
||||
}
|
||||
It "Applied ConditionalFormatting, including StopIfTrue, Priority and Reverse " {
|
||||
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
|
||||
@@ -90,11 +90,13 @@ Describe "Creating small named ranges with hyperlinks" {
|
||||
$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 " {
|
||||
$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
|
||||
}
|
||||
} -Skip # << Bug in EPPLus 4.5
|
||||
}
|
||||
Context "Adding a table" {
|
||||
it "Created a table " {
|
||||
|
||||
@@ -52,7 +52,7 @@ Describe "Join Worksheet part 1" {
|
||||
it "Activated the correct worksheet " {
|
||||
$excel.Workbook.worksheets["SummaryPivot"].View.TabSelected | Should be $true
|
||||
$excel.Workbook.worksheets["Total"].View.TabSelected | Should be $false
|
||||
}
|
||||
} -Skip # << Bug in EPPLus 4.5
|
||||
|
||||
}
|
||||
Context "Merging 3 blocks" {
|
||||
|
||||
37
__tests__/ProtectWorksheet.tests.ps1
Normal file
37
__tests__/ProtectWorksheet.tests.ps1
Normal file
@@ -0,0 +1,37 @@
|
||||
$path = "$Env:TEMP\test.xlsx"
|
||||
Remove-Item -path $path -ErrorAction SilentlyContinue
|
||||
$excel = ConvertFrom-Csv @"
|
||||
Product, City, Gross, Net
|
||||
Apple, London , 300, 250
|
||||
Orange, London , 400, 350
|
||||
Banana, London , 300, 200
|
||||
Orange, Paris, 600, 500
|
||||
Banana, Paris, 300, 200
|
||||
Apple, New York, 1200,700
|
||||
|
||||
"@ | Export-Excel -Path $path -WorksheetName Sheet1 -PassThru
|
||||
|
||||
$ws = $excel.sheet1
|
||||
|
||||
Set-WorkSheetProtection -WorkSheet $ws -IsProtected -BlockEditObject -AllowFormatRows -UnLockAddress "1:1"
|
||||
|
||||
Close-ExcelPackage -ExcelPackage $excel
|
||||
|
||||
Describe "Setting worksheet protection " {
|
||||
BeforeAll {
|
||||
$excel = Open-ExcelPackage -Path $path
|
||||
$ws = $ws = $excel.sheet1
|
||||
}
|
||||
it "Turned on protection for the sheet " {
|
||||
$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
|
||||
}
|
||||
it "Unprotected some cells " {
|
||||
$ws.cells["a1"].Style.Locked | should be $false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ Describe "Data validation and protection" {
|
||||
$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].Operator.tostring() | should be 'any'
|
||||
}
|
||||
It "Created an integer validation rule for values between X and Y " {
|
||||
$ws.DataValidations[1].ValidationType.Type.tostring() | Should be 'Whole'
|
||||
|
||||
Reference in New Issue
Block a user