mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-12 06:13:26 +00:00
Compare commits
4 Commits
v7.8.4
...
add-header
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6166f0e87c | ||
|
|
bb8297c528 | ||
|
|
b61aef888f | ||
|
|
4c002358fe |
@@ -1,22 +0,0 @@
|
|||||||
try { Import-Module $PSScriptRoot\..\..\ImportExcel.psd1 } catch { throw ; return }
|
|
||||||
|
|
||||||
$data = ConvertFrom-Csv @"
|
|
||||||
Region,State,Other,Units,Price,InStock
|
|
||||||
West,Texas,1,927,923.71,1
|
|
||||||
North,Tennessee,3,466,770.67,0
|
|
||||||
East,Florida,0,1520,458.68,1
|
|
||||||
East,Maine,1,1828,661.24,0
|
|
||||||
West,Virginia,1,465,053.58,1
|
|
||||||
North,Missouri,1,436,235.67,1
|
|
||||||
South,Kansas,0,214,992.47,1
|
|
||||||
North,North Dakota,1,789,640.72,0
|
|
||||||
South,Delaware,-1,712,508.55,1
|
|
||||||
"@
|
|
||||||
|
|
||||||
$xlfile = "$PSScriptRoot\test.xlsx"
|
|
||||||
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
$cfi1 = New-ConditionalFormattingIconSet -Range C:C -ConditionalFormat ThreeIconSet -IconType Symbols -ShowIconOnly
|
|
||||||
$cfi2 = New-ConditionalFormattingIconSet -Range F:F -ConditionalFormat ThreeIconSet -IconType Symbols2 -ShowIconOnly
|
|
||||||
|
|
||||||
$data | Export-Excel $xlfile -AutoSize -ConditionalFormat $cfi1, $cfi2 -Show
|
|
||||||
29
Examples/CopyRange/CopyFromOneSheetInSameWorkbook.ps1
Normal file
29
Examples/CopyRange/CopyFromOneSheetInSameWorkbook.ps1
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<#
|
||||||
|
Copy a range from WorksheetA to WorksheetB
|
||||||
|
#>
|
||||||
|
|
||||||
|
$data = ConvertFrom-Csv @"
|
||||||
|
Region,State,Units,Price
|
||||||
|
West,Texas,927,923.71
|
||||||
|
North,Tennessee,466,770.67
|
||||||
|
East,Florida,520,458.68
|
||||||
|
East,Maine,828,661.24
|
||||||
|
West,Virginia,465,053.58
|
||||||
|
North,Missouri,436,235.67
|
||||||
|
South,Kansas,214,992.47
|
||||||
|
North,North Dakota,789,640.72
|
||||||
|
South,Delaware,712,508.55
|
||||||
|
"@
|
||||||
|
|
||||||
|
$xlfile = "./test.xlsx"
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
$data | Export-Excel $xlfile -WorksheetName WorksheetA
|
||||||
|
$data | Export-Excel $xlfile -WorksheetName WorksheetB
|
||||||
|
|
||||||
|
$excel = Open-ExcelPackage $xlfile
|
||||||
|
|
||||||
|
# Copy a range from WorksheetA to WorksheetB
|
||||||
|
$excel.WorksheetA.Cells["A3:B5"].Copy($excel.WorksheetB.Cells["G3"])
|
||||||
|
|
||||||
|
Close-ExcelPackage $excel -Show
|
||||||
24
Examples/HeaderName/ConvertDictionaryOfArraysToExcel.ps1
Normal file
24
Examples/HeaderName/ConvertDictionaryOfArraysToExcel.ps1
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
function ConvertTo-Excel {
|
||||||
|
param(
|
||||||
|
$Path,
|
||||||
|
[System.Collections.IDictionary]$targetData
|
||||||
|
)
|
||||||
|
|
||||||
|
$column = 1
|
||||||
|
foreach ($key in $targetData.Keys) {
|
||||||
|
$cityData[$key] | Export-Excel $xlfile -StartColumn ($column++) -HeaderName $key -AutoSize
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$cityData = [Ordered]@{}
|
||||||
|
|
||||||
|
$cityData.City = "New York City", "Paris", "Barcelona", "Rome"
|
||||||
|
$cityData.Country = "United States", "France", "Spain", "Italy"
|
||||||
|
$cityData.Population = 8600000, 2141000, 5515000, 2873000
|
||||||
|
|
||||||
|
$xlfile = "$PSScriptRoot/test.xlsx"
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
ConvertTo-Excel $xlfile $cityData
|
||||||
|
|
||||||
|
. $xlfile
|
||||||
24
Examples/HeaderName/HeaderName.ps1
Normal file
24
Examples/HeaderName/HeaderName.ps1
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
try { Import-Module $PSScriptRoot\..\..\ImportExcel.psd1 } catch { throw ; return }
|
||||||
|
|
||||||
|
## This exports only the numbers
|
||||||
|
# 1..10 | Export-excel $PSScriptRoot\test.xlsx -Show
|
||||||
|
|
||||||
|
## This exports the numbers and in A1 the text "MyNum"
|
||||||
|
# 1..10 | Export-excel $PSScriptRoot\test.xlsx -HeaderName MyNum -Show
|
||||||
|
|
||||||
|
$xlfile = "$PSScriptRoot/testMultipleColumns.xlsx"
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
$Regions = 'West', 'North', 'East ', 'East ', 'West ', 'North', 'South', 'North', 'South'
|
||||||
|
$States = 'Texas', 'Tennessee', 'Florida', 'Maine', 'Virginia', 'Missouri', 'Kansas', 'North Dakota', 'Delaware'
|
||||||
|
$Units = 927, 466, 520, 828, 465, 436, 214, 789, 712
|
||||||
|
$Prices = 923.71, 770.67, 458.68, 661.24, 53.58, 235.67, 992.47, 640.72, 508.55
|
||||||
|
|
||||||
|
# Export each list (array) as a separate column to the same worksheet and workbook
|
||||||
|
$Regions | Export-Excel -Path $xlfile -HeaderName Region -StartColumn 1 -AutoSize
|
||||||
|
$States | Export-Excel -Path $xlfile -HeaderName State -StartColumn 2 -AutoSize
|
||||||
|
$Units | Export-Excel -Path $xlfile -HeaderName Units -StartColumn 3 -AutoSize
|
||||||
|
$Prices | Export-Excel -Path $xlfile -HeaderName Prices -StartColumn 4 -AutoSize
|
||||||
|
|
||||||
|
# Show the results in Excel
|
||||||
|
. $xlfile
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
try { Import-Module $PSScriptRoot\..\..\ImportExcel.psd1 } catch { throw ; return }
|
|
||||||
|
|
||||||
$data = ConvertFrom-Csv @"
|
|
||||||
OrderId,Category,Sales,Quantity,Discount
|
|
||||||
1,Cosmetics,744.01,07,0.7
|
|
||||||
2,Grocery,349.13,25,0.3
|
|
||||||
3,Apparels,535.11,88,0.2
|
|
||||||
4,Electronics,524.69,60,0.1
|
|
||||||
5,Electronics,439.10,41,0.0
|
|
||||||
6,Apparels,56.84,54,0.8
|
|
||||||
7,Electronics,326.66,97,0.7
|
|
||||||
8,Cosmetics,17.25,74,0.6
|
|
||||||
9,Grocery,199.96,39,0.4
|
|
||||||
10,Grocery,731.77,20,0.3
|
|
||||||
"@
|
|
||||||
|
|
||||||
$xlfile = "$PSScriptRoot\TotalsRow.xlsx"
|
|
||||||
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
$TableTotalSettings = @{
|
|
||||||
Quantity = 'Sum'
|
|
||||||
Category = '=COUNTIF([Category],"<>Electronics")' # Count the number of categories not equal to Electronics
|
|
||||||
Sales = @{
|
|
||||||
Function = '=SUMIF([Category],"<>Electronics",[Sales])'
|
|
||||||
Comment = "Sum of sales for everything that is NOT Electronics"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$data | Export-Excel -Path $xlfile -TableName Sales -TableStyle Medium10 -TableTotalSettings $TableTotalSettings -AutoSize -Show
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
|
|
||||||
|
|
||||||
$r = Get-ChildItem C:\WINDOWS\system32 -File
|
|
||||||
|
|
||||||
$TotalSettings = @{
|
|
||||||
Name = "Count"
|
|
||||||
# You can create the formula in an Excel workbook first and copy-paste it here
|
|
||||||
# This syntax can only be used for the Custom type
|
|
||||||
Extension = "=COUNTIF([Extension];`".exe`")"
|
|
||||||
Length = @{
|
|
||||||
Function = "=SUMIF([Extension];`".exe`";[Length])"
|
|
||||||
Comment = "Sum of all exe sizes"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$r | Export-Excel -TableName system32files -TableStyle Medium10 -TableTotalSettings $TotalSettings -Show
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
RootModule = 'ImportExcel.psm1'
|
RootModule = 'ImportExcel.psm1'
|
||||||
|
|
||||||
# Version number of this module.
|
# Version number of this module.
|
||||||
ModuleVersion = '7.8.4'
|
ModuleVersion = '7.8.2'
|
||||||
|
|
||||||
# ID used to uniquely identify this module
|
# ID used to uniquely identify this module
|
||||||
GUID = '60dd4136-feff-401a-ba27-a84458c57ede'
|
GUID = '60dd4136-feff-401a-ba27-a84458c57ede'
|
||||||
@@ -88,7 +88,6 @@ Check out the How To Videos https://www.youtube.com/watch?v=U3Ne_yX4tYo&list=PL5
|
|||||||
'Remove-Worksheet',
|
'Remove-Worksheet',
|
||||||
'Select-Worksheet',
|
'Select-Worksheet',
|
||||||
'Send-SQLDataToExcel',
|
'Send-SQLDataToExcel',
|
||||||
'Set-CellComment',
|
|
||||||
'Set-CellStyle',
|
'Set-CellStyle',
|
||||||
'Set-ExcelColumn',
|
'Set-ExcelColumn',
|
||||||
'Set-ExcelRange',
|
'Set-ExcelRange',
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
[Parameter(ParameterSetName = "FourIconSet")]
|
[Parameter(ParameterSetName = "FourIconSet")]
|
||||||
[Parameter(ParameterSetName = "FiveIconSet")]
|
[Parameter(ParameterSetName = "FiveIconSet")]
|
||||||
[switch]$Reverse,
|
[switch]$Reverse,
|
||||||
[switch]$ShowIconOnly,
|
|
||||||
[Parameter(ParameterSetName = "NamedRule",Position = 2)]
|
[Parameter(ParameterSetName = "NamedRule",Position = 2)]
|
||||||
$ConditionValue,
|
$ConditionValue,
|
||||||
[Parameter(ParameterSetName = "NamedRule",Position = 3)]
|
[Parameter(ParameterSetName = "NamedRule",Position = 3)]
|
||||||
@@ -85,9 +84,6 @@
|
|||||||
elseif ($PSBoundParameters.ContainsKey("FourIconsSet" ) ) {$rule = $Worksheet.ConditionalFormatting.AddFourIconSet( $Address , $FourIconsSet )}
|
elseif ($PSBoundParameters.ContainsKey("FourIconsSet" ) ) {$rule = $Worksheet.ConditionalFormatting.AddFourIconSet( $Address , $FourIconsSet )}
|
||||||
elseif ($PSBoundParameters.ContainsKey("FiveIconsSet" ) ) {$rule = $Worksheet.ConditionalFormatting.AddFiveIconSet( $Address , $FiveIconsSet )}
|
elseif ($PSBoundParameters.ContainsKey("FiveIconsSet" ) ) {$rule = $Worksheet.ConditionalFormatting.AddFiveIconSet( $Address , $FiveIconsSet )}
|
||||||
else {$rule = ($Worksheet.ConditionalFormatting)."Add$RuleType"($Address ) }
|
else {$rule = ($Worksheet.ConditionalFormatting)."Add$RuleType"($Address ) }
|
||||||
If($ShowIconOnly) {
|
|
||||||
$rule.ShowValue = $false
|
|
||||||
}
|
|
||||||
if ($Reverse) {
|
if ($Reverse) {
|
||||||
if ($rule.type -match 'IconSet$' ) {$rule.reverse = $true}
|
if ($rule.type -match 'IconSet$' ) {$rule.reverse = $true}
|
||||||
elseif ($rule.type -match 'ColorScale$') {$temp =$rule.LowValue.Color ; $rule.LowValue.Color = $rule.HighValue.Color; $rule.HighValue.Color = $temp}
|
elseif ($rule.type -match 'ColorScale$') {$temp =$rule.LowValue.Color ; $rule.LowValue.Color = $rule.HighValue.Color; $rule.HighValue.Color = $temp}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ function Add-ExcelTable {
|
|||||||
[Switch]$ShowHeader ,
|
[Switch]$ShowHeader ,
|
||||||
[Switch]$ShowFilter,
|
[Switch]$ShowFilter,
|
||||||
[Switch]$ShowTotal,
|
[Switch]$ShowTotal,
|
||||||
[hashtable]$TableTotalSettings,
|
[hashtable]$TotalSettings,
|
||||||
[Switch]$ShowFirstColumn,
|
[Switch]$ShowFirstColumn,
|
||||||
[Switch]$ShowLastColumn,
|
[Switch]$ShowLastColumn,
|
||||||
[Switch]$ShowRowStripes,
|
[Switch]$ShowRowStripes,
|
||||||
@@ -51,65 +51,14 @@ function Add-ExcelTable {
|
|||||||
}
|
}
|
||||||
#it seems that show total changes some of the others, so the sequence matters.
|
#it seems that show total changes some of the others, so the sequence matters.
|
||||||
if ($PSBoundParameters.ContainsKey('ShowHeader')) {$tbl.ShowHeader = [bool]$ShowHeader}
|
if ($PSBoundParameters.ContainsKey('ShowHeader')) {$tbl.ShowHeader = [bool]$ShowHeader}
|
||||||
if ($PSBoundParameters.ContainsKey('TableTotalSettings') -And $Null -ne $TableTotalSettings) {
|
if ($PSBoundParameters.ContainsKey('TotalSettings')) {
|
||||||
$tbl.ShowTotal = $true
|
$tbl.ShowTotal = $true
|
||||||
foreach ($k in $TableTotalSettings.keys) {
|
foreach ($k in $TotalSettings.keys) {
|
||||||
|
|
||||||
# Get the Function to be added in the totals row
|
|
||||||
if ($TableTotalSettings[$k] -is [HashTable]) {
|
|
||||||
If ($TableTotalSettings[$k].Keys -contains "Function") {
|
|
||||||
$TotalFunction = $TableTotalSettings[$k]["Function"]
|
|
||||||
}
|
|
||||||
Else { Write-Warning -Message "TableTotalSettings parameter for column '$k' needs a key 'Function'" }
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$TotalFunction = [String]($TableTotalSettings[$k])
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add the totals row
|
|
||||||
if (-not $tbl.Columns[$k]) {Write-Warning -Message "Table does not have a Column '$k'."}
|
if (-not $tbl.Columns[$k]) {Write-Warning -Message "Table does not have a Column '$k'."}
|
||||||
elseif ($TotalFunction -match "^=") {
|
elseif ($TotalSettings[$k] -notin @("Average", "Count", "CountNums", "Max", "Min", "None", "StdDev", "Sum", "Var") ) {
|
||||||
### A function in Excel uses ";" between parameters but the OpenXML parameter separator is ","
|
Write-Warning -Message "'$($TotalSettings[$k])' is not a valid total function."
|
||||||
### Only replace semicolon when it's NOT somewhere between quotes quotes.
|
|
||||||
# Get all text between quotes
|
|
||||||
$QuoteMatches = [Regex]::Matches($TotalFunction,"`"[^`"]*`"|'[^']*'")
|
|
||||||
# Create array with all indexes of characters between quotes (and the quotes themselves)
|
|
||||||
$QuoteCharIndexes = $(
|
|
||||||
Foreach ($QuoteMatch in $QuoteMatches) {
|
|
||||||
(($QuoteMatch.Index)..($QuoteMatch.Index + $QuoteMatch.Length - 1))
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Get all semicolons
|
|
||||||
$SemiColonMatches = [Regex]::Matches($TotalFunction, ";")
|
|
||||||
# Replace the semicolons of which the index is not in the list of quote-text indexes
|
|
||||||
Foreach ($SemiColonMatch in $SemiColonMatches.Index) {
|
|
||||||
If ($QuoteCharIndexes -notcontains $SemiColonMatch) {
|
|
||||||
$TotalFunction = $TotalFunction.remove($SemiColonMatch,1).Insert($SemiColonMatch,",")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure the formula. The TotalsRowFunction is automatically set to "Custom" when the TotalsRowFormula is set.
|
|
||||||
$tbl.Columns[$k].TotalsRowFormula = $TotalFunction
|
|
||||||
}
|
|
||||||
elseif ($TotalFunction -notin @("Average", "Count", "CountNums", "Max", "Min", "None", "StdDev", "Sum", "Var") ) {
|
|
||||||
Write-Warning -Message "'$($TotalFunction)' is not a valid total function."
|
|
||||||
}
|
|
||||||
else {$tbl.Columns[$k].TotalsRowFunction = $TotalFunction}
|
|
||||||
|
|
||||||
# Set comment on totals row
|
|
||||||
If ($TableTotalSettings[$k] -is [HashTable] -and $TableTotalSettings[$k].Keys -contains "Comment" -and ![String]::IsNullOrEmpty($TableTotalSettings[$k]["Comment"])) {
|
|
||||||
$ColumnLetter = [officeOpenXml.ExcelAddress]::GetAddressCol(($tbl.columns | ? { $_.name -eq $k }).Id, $False)
|
|
||||||
$CommentRange = "{0}{1}" -f $ColumnLetter, $tbl.Address.End.Row
|
|
||||||
|
|
||||||
$CellCommentParams = @{
|
|
||||||
Worksheet = $tbl.WorkSheet
|
|
||||||
Range = $CommentRange
|
|
||||||
Text = $TableTotalSettings[$k]["Comment"]
|
|
||||||
}
|
|
||||||
|
|
||||||
Set-CellComment @CellCommentParams
|
|
||||||
}
|
}
|
||||||
|
else {$tbl.Columns[$k].TotalsRowFunction = $TotalSettings[$k]}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elseif ($PSBoundParameters.ContainsKey('ShowTotal')) {$tbl.ShowTotal = [bool]$ShowTotal}
|
elseif ($PSBoundParameters.ContainsKey('ShowTotal')) {$tbl.ShowTotal = [bool]$ShowTotal}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ function Add-Worksheet {
|
|||||||
}
|
}
|
||||||
else {$ExcelWorkbook.Worksheets.MoveBefore($WorksheetName, $MoveBefore)}
|
else {$ExcelWorkbook.Worksheets.MoveBefore($WorksheetName, $MoveBefore)}
|
||||||
}
|
}
|
||||||
else {Write-Warning "Can't find worksheet '$MoveBefore'; worksheet '$WorksheetName' will not be moved."}
|
else {Write-Warning "Can't find worksheet '$MoveBefore'; worsheet '$WorksheetName' will not be moved."}
|
||||||
}
|
}
|
||||||
elseif ($MoveAfter ) {
|
elseif ($MoveAfter ) {
|
||||||
if ($MoveAfter -eq "*") {
|
if ($MoveAfter -eq "*") {
|
||||||
@@ -68,7 +68,7 @@ function Add-Worksheet {
|
|||||||
$ExcelWorkbook.Worksheets.MoveAfter($WorksheetName, $MoveAfter)
|
$ExcelWorkbook.Worksheets.MoveAfter($WorksheetName, $MoveAfter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {Write-Warning "Can't find worksheet '$MoveAfter'; worksheet '$WorksheetName' will not be moved."}
|
else {Write-Warning "Can't find worksheet '$MoveAfter'; worsheet '$WorksheetName' will not be moved."}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
if ($Activate) {Select-Worksheet -ExcelWorksheet $ws }
|
if ($Activate) {Select-Worksheet -ExcelWorksheet $ws }
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
[Switch]$Calculate,
|
[Switch]$Calculate,
|
||||||
[Switch]$Show,
|
[Switch]$Show,
|
||||||
[String]$WorksheetName = 'Sheet1',
|
[String]$WorksheetName = 'Sheet1',
|
||||||
|
[String]$HeaderName,
|
||||||
[Alias("PW")]
|
[Alias("PW")]
|
||||||
[String]$Password,
|
[String]$Password,
|
||||||
[switch]$ClearSheet,
|
[switch]$ClearSheet,
|
||||||
@@ -56,8 +57,7 @@
|
|||||||
[Alias('Table')]
|
[Alias('Table')]
|
||||||
$TableName,
|
$TableName,
|
||||||
[OfficeOpenXml.Table.TableStyles]$TableStyle = [OfficeOpenXml.Table.TableStyles]::Medium6,
|
[OfficeOpenXml.Table.TableStyles]$TableStyle = [OfficeOpenXml.Table.TableStyles]::Medium6,
|
||||||
[HashTable]$TableTotalSettings,
|
[Switch]$Barchart,
|
||||||
[Switch]$BarChart,
|
|
||||||
[Switch]$PieChart,
|
[Switch]$PieChart,
|
||||||
[Switch]$LineChart ,
|
[Switch]$LineChart ,
|
||||||
[Switch]$ColumnChart ,
|
[Switch]$ColumnChart ,
|
||||||
@@ -212,7 +212,7 @@
|
|||||||
$row ++
|
$row ++
|
||||||
$null = $ws.Cells[$row, $StartColumn].LoadFromDataTable($InputObject, $false )
|
$null = $ws.Cells[$row, $StartColumn].LoadFromDataTable($InputObject, $false )
|
||||||
if ($TableName -or $PSBoundParameters.ContainsKey('TableStyle')) {
|
if ($TableName -or $PSBoundParameters.ContainsKey('TableStyle')) {
|
||||||
Add-ExcelTable -Range $ws.Cells[$ws.Dimension] -TableName $TableName -TableStyle $TableStyle -TableTotalSettings $TableTotalSettings
|
Add-ExcelTable -Range $ws.Cells[$ws.Dimension] -TableName $TableName -TableStyle $TableStyle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -259,6 +259,11 @@
|
|||||||
try {
|
try {
|
||||||
if ($null -eq $InputObject) { $row += 1 }
|
if ($null -eq $InputObject) { $row += 1 }
|
||||||
foreach ($TargetData in $InputObject) {
|
foreach ($TargetData in $InputObject) {
|
||||||
|
|
||||||
|
if ($HeaderName -and $TargetData.psobject.TypeNames[0] -match 'System.String|System.Int32|System.Double|System.Char') {
|
||||||
|
$TargetData = [PSCustomObject]@{ $HeaderName = $TargetData }
|
||||||
|
}
|
||||||
|
|
||||||
if ($firstTimeThru) {
|
if ($firstTimeThru) {
|
||||||
$firstTimeThru = $false
|
$firstTimeThru = $false
|
||||||
$isDataTypeValueType = ($null -eq $TargetData) -or ($TargetData.GetType().name -match 'string|timespan|datetime|bool|byte|char|decimal|double|float|int|long|sbyte|short|uint|ulong|ushort|URI|ExcelHyperLink')
|
$isDataTypeValueType = ($null -eq $TargetData) -or ($TargetData.GetType().name -match 'string|timespan|datetime|bool|byte|char|decimal|double|float|int|long|sbyte|short|uint|ulong|ushort|URI|ExcelHyperLink')
|
||||||
@@ -425,7 +430,7 @@
|
|||||||
if ($null -ne $TableName -or $PSBoundParameters.ContainsKey('TableStyle')) {
|
if ($null -ne $TableName -or $PSBoundParameters.ContainsKey('TableStyle')) {
|
||||||
#Already inserted Excel table if input was a DataTable
|
#Already inserted Excel table if input was a DataTable
|
||||||
if ($InputObject -isnot [System.Data.DataTable]) {
|
if ($InputObject -isnot [System.Data.DataTable]) {
|
||||||
Add-ExcelTable -Range $ws.Cells[$dataRange] -TableName $TableName -TableStyle $TableStyle -TableTotalSettings $TableTotalSettings
|
Add-ExcelTable -Range $ws.Cells[$dataRange] -TableName $TableName -TableStyle $TableStyle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elseif ($AutoFilter) {
|
elseif ($AutoFilter) {
|
||||||
@@ -637,9 +642,9 @@
|
|||||||
}
|
}
|
||||||
elseif ($c.formatter) {
|
elseif ($c.formatter) {
|
||||||
switch ($c.formatter) {
|
switch ($c.formatter) {
|
||||||
"ThreeIconSet" { Add-ConditionalFormatting -Worksheet $ws -ThreeIconsSet $c.IconType -range $c.range -reverse:$c.reverse -ShowIconOnly:$c.ShowIconOnly}
|
"ThreeIconSet" { Add-ConditionalFormatting -Worksheet $ws -ThreeIconsSet $c.IconType -range $c.range -reverse:$c.reverse }
|
||||||
"FourIconSet" { Add-ConditionalFormatting -Worksheet $ws -FourIconsSet $c.IconType -range $c.range -reverse:$c.reverse -ShowIconOnly:$c.ShowIconOnly}
|
"FourIconSet" { Add-ConditionalFormatting -Worksheet $ws -FourIconsSet $c.IconType -range $c.range -reverse:$c.reverse }
|
||||||
"FiveIconSet" { Add-ConditionalFormatting -Worksheet $ws -FiveIconsSet $c.IconType -range $c.range -reverse:$c.reverse -ShowIconOnly:$c.ShowIconOnly}
|
"FiveIconSet" { Add-ConditionalFormatting -Worksheet $ws -FiveIconsSet $c.IconType -range $c.range -reverse:$c.reverse }
|
||||||
}
|
}
|
||||||
Write-Verbose -Message "Added conditional formatting to range $($c.range)"
|
Write-Verbose -Message "Added conditional formatting to range $($c.range)"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ function Get-ExcelFileSummary {
|
|||||||
[PSCustomObject][Ordered]@{
|
[PSCustomObject][Ordered]@{
|
||||||
ExcelFile = Split-Path -Leaf $Path
|
ExcelFile = Split-Path -Leaf $Path
|
||||||
WorksheetName = $workSheet.Name
|
WorksheetName = $workSheet.Name
|
||||||
Visible = $workSheet.Hidden -eq 'Visible'
|
|
||||||
Rows = $workSheet.Dimension.Rows
|
Rows = $workSheet.Dimension.Rows
|
||||||
Columns = $workSheet.Dimension.Columns
|
Columns = $workSheet.Dimension.Columns
|
||||||
Address = $workSheet.Dimension.Address
|
Address = $workSheet.Dimension.Address
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
[Parameter(ParameterSetName = 'PackageC', Mandatory)]
|
[Parameter(ParameterSetName = 'PackageC', Mandatory)]
|
||||||
[Switch]$NoHeader ,
|
[Switch]$NoHeader ,
|
||||||
[Alias('HeaderRow', 'TopRow')]
|
[Alias('HeaderRow', 'TopRow')]
|
||||||
[ValidateRange(1, 1048576)]
|
[ValidateRange(1, 9999)]
|
||||||
[Int]$StartRow = 1,
|
[Int]$StartRow = 1,
|
||||||
[Alias('StopRow', 'BottomRow')]
|
[Alias('StopRow', 'BottomRow')]
|
||||||
[Int]$EndRow ,
|
[Int]$EndRow ,
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
function New-ConditionalFormattingIconSet {
|
function New-ConditionalFormattingIconSet {
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Does not change system State')]
|
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '',Justification='Does not change system State')]
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory = $true)]
|
[Parameter(Mandatory=$true)]
|
||||||
$Range,
|
$Range,
|
||||||
[ValidateSet("ThreeIconSet", "FourIconSet", "FiveIconSet")]
|
[ValidateSet("ThreeIconSet","FourIconSet","FiveIconSet")]
|
||||||
$ConditionalFormat,
|
$ConditionalFormat,
|
||||||
[Switch]$Reverse,
|
[Switch]$Reverse
|
||||||
[Switch]$ShowIconOnly
|
|
||||||
)
|
)
|
||||||
|
|
||||||
DynamicParam {
|
DynamicParam {
|
||||||
@@ -41,14 +40,13 @@ function New-ConditionalFormattingIconSet {
|
|||||||
|
|
||||||
End {
|
End {
|
||||||
|
|
||||||
$bp = @{} + $PSBoundParameters
|
$bp = @{}+$PSBoundParameters
|
||||||
|
|
||||||
$obj = [PSCustomObject]@{
|
$obj = [PSCustomObject]@{
|
||||||
Range = $Range
|
Range = $Range
|
||||||
Formatter = $ConditionalFormat
|
Formatter = $ConditionalFormat
|
||||||
IconType = $bp.IconType
|
IconType = $bp.IconType
|
||||||
Reverse = $Reverse
|
Reverse = $Reverse
|
||||||
ShowIconOnly = $ShowIconOnly
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$obj.pstypenames.Clear()
|
$obj.pstypenames.Clear()
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Scope='Function', Target='Set*', Justification='Does not change system state')]
|
|
||||||
param()
|
|
||||||
|
|
||||||
function Set-CellComment {
|
|
||||||
[CmdletBinding(DefaultParameterSetName = "Range")]
|
|
||||||
param(
|
|
||||||
[Parameter(Mandatory = $True, ParameterSetName = "ColumnLetter")]
|
|
||||||
[Parameter(Mandatory = $True, ParameterSetName = "ColumnNumber")]
|
|
||||||
[Parameter(Mandatory = $False, ParameterSetName = "Range")]
|
|
||||||
[OfficeOpenXml.ExcelWorkSheet]$Worksheet,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $True, ParameterSetName = "Range", ValueFromPipeline = $true,Position=0)]
|
|
||||||
[Alias("Address")]
|
|
||||||
$Range,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $True, ParameterSetName = "ColumnLetter")]
|
|
||||||
[Parameter(Mandatory = $True, ParameterSetName = "ColumnNumber")]
|
|
||||||
[Int]$Row,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $True, ParameterSetName = "ColumnLetter")]
|
|
||||||
[String]$ColumnLetter,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $True, ParameterSetName = "ColumnNumber")]
|
|
||||||
[Int]$ColumnNumber,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $True)]
|
|
||||||
[String]$Text
|
|
||||||
)
|
|
||||||
|
|
||||||
If ($PSCmdlet.ParameterSetName -eq "Range") {
|
|
||||||
Write-Verbose "Using 'Range' Parameter Set"
|
|
||||||
if ($Range -is [Array]) {
|
|
||||||
$null = $PSBoundParameters.Remove("Range")
|
|
||||||
$Range | Set-CellComment @PSBoundParameters
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
#We should accept, a worksheet and a name of a range or a cell address; a table; the address of a table; a named range; a row, a column or .Cells[ ]
|
|
||||||
if ($Range -is [OfficeOpenXml.Table.ExcelTable]) {$Range = $Range.Address}
|
|
||||||
elseif ($Worksheet -and $Range -is [string]) {
|
|
||||||
# Convert range as string to OfficeOpenXml.ExcelAddress
|
|
||||||
$Range = [OfficeOpenXml.ExcelAddress]::new($Range)
|
|
||||||
}
|
|
||||||
elseif ($Range -is [string]) {Write-Warning -Message "The range parameter you have specified also needs a worksheet parameter." ;return}
|
|
||||||
#else we assume $Range is a OfficeOpenXml.ExcelAddress
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ElseIf ($PSCmdlet.ParameterSetName -eq "ColumnNumber") {
|
|
||||||
$Range = [OfficeOpenXml.ExcelAddress]::new($Row, $ColumnNumber, $Row, $ColumnNumber)
|
|
||||||
}
|
|
||||||
ElseIf ($PSCmdlet.ParameterSetName -eq "ColumnLetter") {
|
|
||||||
$Range = [OfficeOpenXml.ExcelAddress]::new(("{0}{1}" -f $ColumnLetter,$Row))
|
|
||||||
}
|
|
||||||
|
|
||||||
If ($Range -isnot [Array]) {
|
|
||||||
Foreach ($c in $Worksheet.Cells[$Range]) {
|
|
||||||
write-verbose $c.address
|
|
||||||
Try {
|
|
||||||
If ($Null -eq $c.comment) {
|
|
||||||
[Void]$c.AddComment($Text, "ImportExcel")
|
|
||||||
}
|
|
||||||
Else {
|
|
||||||
$c.Comment.Text = $Text
|
|
||||||
$c.Comment.Author = "ImportExcel"
|
|
||||||
}
|
|
||||||
$c.Comment.AutoFit = $True
|
|
||||||
}
|
|
||||||
Catch { "Could not add comment to cell {0}: {1}" -f $c.Address, $_.ToString() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
elseif ($Worksheet -and ($Range -is [string] -or $Range -is [OfficeOpenXml.ExcelAddress])) {
|
elseif ($Worksheet -and ($Range -is [string] -or $Range -is [OfficeOpenXml.ExcelAddress])) {
|
||||||
$Range = $Worksheet.Cells[$Range]
|
$Range = $Worksheet.Cells[$Range]
|
||||||
}
|
}
|
||||||
elseif ($Range -is [string]) {Write-Warning -Message "The range parameter you have specified also needs a worksheet parameter." ;return}
|
elseif ($Range -is [string]) {Write-Warning -Message "The range pararameter you have specified also needs a worksheet parameter." ;return}
|
||||||
#else we assume $Range is a range.
|
#else we assume $Range is a range.
|
||||||
if ($ClearAll) {
|
if ($ClearAll) {
|
||||||
$Range.Clear()
|
$Range.Clear()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#Requires -Modules @{ ModuleName="Pester"; ModuleVersion="4.0.0" }
|
#Requires -Modules Pester
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '', Justification = 'False Positives')]
|
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '', Justification = 'False Positives')]
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidAssignmentToAutomaticVariable', '', Justification = 'Only executes on versions without the automatic variable')]
|
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidAssignmentToAutomaticVariable', '', Justification = 'Only executes on versions without the automatic variable')]
|
||||||
param()
|
param()
|
||||||
@@ -683,72 +683,6 @@ Describe ExportExcel -Tag "ExportExcel" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Context "#Example 10 # Creates a file with a table with a 'totals' row".PadRight(87) {
|
|
||||||
BeforeEach {
|
|
||||||
$path = "TestDrive:\test.xlsx"
|
|
||||||
Remove-item -Path $path -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
#Test with a maximum of 50 processes for speed; export limited set of properties.
|
|
||||||
$processes = Get-Process | Where-Object { $_.StartTime } | Select-Object -First 50
|
|
||||||
|
|
||||||
# Export as table with a totals row with a set of possibilities
|
|
||||||
$TableTotalSettings = @{
|
|
||||||
Id = "COUNT"
|
|
||||||
WS = "SUM"
|
|
||||||
Handles = "AVERAGE"
|
|
||||||
CPU = '=COUNTIF([CPU];"<1")'
|
|
||||||
NPM = @{
|
|
||||||
Function = '=SUMIF([Name];"=Chrome";[NPM])'
|
|
||||||
Comment = "Sum of Non-Paged Memory (NPM) for all chrome processes"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$Processes | Export-Excel $path -TableName "processes" -TableTotalSettings $TableTotalSettings
|
|
||||||
$TotalRows = $Processes.count + 2 # Column header + Data (50 processes) + Totals row
|
|
||||||
$Excel = Open-ExcelPackage -Path $path
|
|
||||||
$ws = $Excel.Workbook.Worksheets[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
it "Totals row was created".PadRight(87) {
|
|
||||||
$ws.Tables[0].Address.Rows | Should -Be $TotalRows
|
|
||||||
$ws.tables[0].ShowTotal | Should -Be $True
|
|
||||||
}
|
|
||||||
|
|
||||||
it "Added four calculations in the totals row".PadRight(87) {
|
|
||||||
$IDcolumn = $ws.Tables[0].Columns | Where-Object { $_.Name -eq "id" }
|
|
||||||
$WScolumn = $ws.Tables[0].Columns | Where-Object { $_.Name -eq "WS" }
|
|
||||||
$HandlesColumn = $ws.Tables[0].Columns | Where-Object { $_.Name -eq "Handles" }
|
|
||||||
$CPUColumn = $ws.Tables[0].Columns | Where-Object { $_.Name -eq "CPU" }
|
|
||||||
$NPMColumn = $ws.Tables[0].Columns | Where-Object { $_.Name -eq "NPM" }
|
|
||||||
|
|
||||||
# Testing column properties
|
|
||||||
$IDcolumn | Select-Object -ExpandProperty TotalsRowFunction | Should -Be "Count"
|
|
||||||
$WScolumn | Select-Object -ExpandProperty TotalsRowFunction | Should -Be "Sum"
|
|
||||||
$HandlesColumn | Select-Object -ExpandProperty TotalsRowFunction | Should -Be "Average"
|
|
||||||
$CPUColumn | Select-Object -ExpandProperty TotalsRowFunction | Should -Be "Custom"
|
|
||||||
$CPUColumn | Select-Object -ExpandProperty TotalsRowFormula | Should -Be 'COUNTIF([CPU],"<1")'
|
|
||||||
$NPMColumn | Select-Object -ExpandProperty TotalsRowFunction | Should -Be "Custom"
|
|
||||||
$NPMColumn | Select-Object -ExpandProperty TotalsRowFormula | Should -Be 'SUMIF([Name],"=Chrome",[NPM])'
|
|
||||||
|
|
||||||
# Testing actual cell properties
|
|
||||||
$CountAddress = "{0}{1}" -f (Get-ExcelColumnName -ColumnNumber $IDcolumn.Id).ColumnName, $TotalRows
|
|
||||||
$SumAddress = "{0}{1}" -f (Get-ExcelColumnName -ColumnNumber $WScolumn.Id).ColumnName, $TotalRows
|
|
||||||
$AverageAddress = "{0}{1}" -f (Get-ExcelColumnName -ColumnNumber $HandlesColumn.Id).ColumnName, $TotalRows
|
|
||||||
$CustomAddress = "{0}{1}" -f (Get-ExcelColumnName -ColumnNumber $CPUColumn.Id).ColumnName, $TotalRows
|
|
||||||
$CustomCommentAddress = "{0}{1}" -f (Get-ExcelColumnName -ColumnNumber $NPMColumn.Id).ColumnName, $TotalRows
|
|
||||||
|
|
||||||
$ws.Cells[$CountAddress].Formula | Should -Be "SUBTOTAL(103,processes[Id])"
|
|
||||||
$ws.Cells[$SumAddress].Formula | Should -Be "SUBTOTAL(109,processes[Ws])"
|
|
||||||
$ws.Cells[$AverageAddress].Formula | Should -Be "SUBTOTAL(101,processes[Handles])"
|
|
||||||
$ws.Cells[$CustomAddress].Formula | Should -Be 'COUNTIF([CPU],"<1")'
|
|
||||||
$ws.Cells[$CustomCommentAddress].Formula | Should -Be 'SUMIF([Name],"=Chrome",[NPM])'
|
|
||||||
$ws.Cells[$CustomCommentAddress].Comment.Text | Should -Not -BeNullOrEmpty
|
|
||||||
}
|
|
||||||
|
|
||||||
AfterEach {
|
|
||||||
Close-ExcelPackage -ExcelPackage $Excel
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Context "#Example 11 # Create and append with title, inc ranges and Pivot table" {
|
# Context "#Example 11 # Create and append with title, inc ranges and Pivot table" {
|
||||||
# $path = "TestDrive:\test.xlsx"
|
# $path = "TestDrive:\test.xlsx"
|
||||||
# #Test New-PivotTableDefinition builds definition using -Pivotfilter and -PivotTotals options.
|
# #Test New-PivotTableDefinition builds definition using -Pivotfilter and -PivotTotals options.
|
||||||
|
|||||||
@@ -3,7 +3,9 @@
|
|||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidAssignmentToAutomaticVariable', '', Justification = 'Only executes on versions without the automatic variable')]
|
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidAssignmentToAutomaticVariable', '', Justification = 'Only executes on versions without the automatic variable')]
|
||||||
param()
|
param()
|
||||||
|
|
||||||
Import-Module $PSScriptRoot\..\ImportExcel.psd1 -Force
|
if (-not (Get-command Import-Excel -ErrorAction SilentlyContinue)) {
|
||||||
|
Import-Module $PSScriptRoot\..\ImportExcel.psd1
|
||||||
|
}
|
||||||
|
|
||||||
Describe 'All tests for Get-ExcelFileSummary' -Tag "Get-ExcelFileSummary" {
|
Describe 'All tests for Get-ExcelFileSummary' -Tag "Get-ExcelFileSummary" {
|
||||||
Context "Test Get-ExcelFileSummary" {
|
Context "Test Get-ExcelFileSummary" {
|
||||||
@@ -12,7 +14,6 @@ Describe 'All tests for Get-ExcelFileSummary' -Tag "Get-ExcelFileSummary" {
|
|||||||
|
|
||||||
$actual.ExcelFile | Should -BeExactly 'TestData1.xlsx'
|
$actual.ExcelFile | Should -BeExactly 'TestData1.xlsx'
|
||||||
$actual.WorksheetName | Should -BeExactly 'Sheet1'
|
$actual.WorksheetName | Should -BeExactly 'Sheet1'
|
||||||
$actual.Visible | Should -BeTrue
|
|
||||||
$actual.Rows | Should -Be 3
|
$actual.Rows | Should -Be 3
|
||||||
$actual.Columns | Should -Be 2
|
$actual.Columns | Should -Be 2
|
||||||
$actual.Address | Should -BeExactly 'A1:B3'
|
$actual.Address | Should -BeExactly 'A1:B3'
|
||||||
@@ -25,7 +26,6 @@ Describe 'All tests for Get-ExcelFileSummary' -Tag "Get-ExcelFileSummary" {
|
|||||||
|
|
||||||
$actual[0].ExcelFile | Should -BeExactly 'MultipleSheets.xlsx'
|
$actual[0].ExcelFile | Should -BeExactly 'MultipleSheets.xlsx'
|
||||||
$actual[0].WorksheetName | Should -BeExactly 'Sheet1'
|
$actual[0].WorksheetName | Should -BeExactly 'Sheet1'
|
||||||
$actual[0].Visible | Should -BeTrue
|
|
||||||
$actual[0].Rows | Should -Be 1
|
$actual[0].Rows | Should -Be 1
|
||||||
$actual[0].Columns | Should -Be 4
|
$actual[0].Columns | Should -Be 4
|
||||||
$actual[0].Address | Should -BeExactly 'A1:D1'
|
$actual[0].Address | Should -BeExactly 'A1:D1'
|
||||||
@@ -33,20 +33,11 @@ Describe 'All tests for Get-ExcelFileSummary' -Tag "Get-ExcelFileSummary" {
|
|||||||
|
|
||||||
$actual[1].ExcelFile | Should -BeExactly 'MultipleSheets.xlsx'
|
$actual[1].ExcelFile | Should -BeExactly 'MultipleSheets.xlsx'
|
||||||
$actual[1].WorksheetName | Should -BeExactly 'Sheet2'
|
$actual[1].WorksheetName | Should -BeExactly 'Sheet2'
|
||||||
$actual[1].Visible | Should -BeTrue
|
|
||||||
$actual[1].Rows | Should -Be 2
|
$actual[1].Rows | Should -Be 2
|
||||||
$actual[1].Columns | Should -Be 2
|
$actual[1].Columns | Should -Be 2
|
||||||
$actual[1].Address | Should -BeExactly 'A1:B2'
|
$actual[1].Address | Should -BeExactly 'A1:B2'
|
||||||
$actual[1].Path | Should -Not -BeNullOrEmpty
|
$actual[1].Path | Should -Not -BeNullOrEmpty
|
||||||
}
|
}
|
||||||
|
|
||||||
It "Tests if sheet is hidden or not" {
|
|
||||||
$actual = Get-ExcelFileSummary "$PSScriptRoot\ImportExcelTests\SheetVisibleTesting.xlsx"
|
|
||||||
|
|
||||||
$actual[0].Visible | Should -BeTrue
|
|
||||||
$actual[1].Visible | Should -BeFalse
|
|
||||||
$actual[2].Visible | Should -BeTrue
|
|
||||||
$actual[3].Visible | Should -BeFalse
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
88
__tests__/HeaderName.tests.ps1
Normal file
88
__tests__/HeaderName.tests.ps1
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
if (-not (Get-command Import-Excel -ErrorAction SilentlyContinue)) {
|
||||||
|
Import-Module $PSScriptRoot\..\ImportExcel.psd1
|
||||||
|
}
|
||||||
|
|
||||||
|
Describe "Test HeaderName parameter" -Tag HeaderName {
|
||||||
|
It "Should add data as usual" {
|
||||||
|
$xlfile = "TestDrive:\headername.xlsx"
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
1..10 | Export-Excel -Path $xlfile
|
||||||
|
|
||||||
|
{ Test-Path $xlfile } | Should -BeTrue
|
||||||
|
|
||||||
|
$excel = Open-ExcelPackage $xlfile
|
||||||
|
|
||||||
|
1..10 | ForEach-Object {
|
||||||
|
$excel.Sheet1.Cells[$_, 1].Text | Should -BeExactly $_
|
||||||
|
}
|
||||||
|
|
||||||
|
Close-ExcelPackage $excel
|
||||||
|
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should add data and the first cell should have the header name" {
|
||||||
|
$xlfile = "TestDrive:\headername.xlsx"
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
1..10 | Export-Excel -Path $xlfile -HeaderName MyNum
|
||||||
|
|
||||||
|
{ Test-Path $xlfile } | Should -BeTrue
|
||||||
|
|
||||||
|
$excel = Open-ExcelPackage $xlfile
|
||||||
|
|
||||||
|
$excel.Sheet1.Cells[1, 1].Text | Should -BeExactly "MyNum"
|
||||||
|
|
||||||
|
1..10 | ForEach-Object {
|
||||||
|
$excel.Sheet1.Cells[($_ + 1), 1].Text | Should -BeExactly $_
|
||||||
|
}
|
||||||
|
|
||||||
|
Close-ExcelPackage $excel
|
||||||
|
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should ignore the header name" {
|
||||||
|
$data = ConvertFrom-Csv @"
|
||||||
|
Region,State,Units,Price
|
||||||
|
West,Texas,927,923.71
|
||||||
|
North,Tennessee,466,770.67
|
||||||
|
East,Florida,520,458.68
|
||||||
|
East,Maine,828,661.24
|
||||||
|
West,Virginia,465,053.58
|
||||||
|
North,Missouri,436,235.67
|
||||||
|
South,Kansas,214,992.47
|
||||||
|
North,North Dakota,789,640.72
|
||||||
|
South,Delaware,712,508.55
|
||||||
|
"@
|
||||||
|
|
||||||
|
$xlfile = "TestDrive:\headername.xlsx"
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
$data | Export-Excel -Path $xlfile -HeaderName MyNum
|
||||||
|
|
||||||
|
{ Test-Path $xlfile } | Should -BeTrue
|
||||||
|
|
||||||
|
$excel = Open-ExcelPackage $xlfile
|
||||||
|
|
||||||
|
$excel.Sheet1.Cells[1, 1].Text | Should -BeExactly "Region"
|
||||||
|
$excel.Sheet1.Cells[1, 2].Text | Should -BeExactly "State"
|
||||||
|
$excel.Sheet1.Cells[1, 3].Text | Should -BeExactly "Units"
|
||||||
|
$excel.Sheet1.Cells[1, 4].Text | Should -BeExactly "Price"
|
||||||
|
|
||||||
|
$excel.Sheet1.Cells[2, 1].Text | Should -BeExactly "West"
|
||||||
|
$excel.Sheet1.Cells[2, 2].Text | Should -BeExactly "Texas"
|
||||||
|
$excel.Sheet1.Cells[2, 3].Text | Should -Be 927
|
||||||
|
$excel.Sheet1.Cells[2, 4].Text | Should -Be 923.71
|
||||||
|
|
||||||
|
$excel.Sheet1.Cells[10, 1].Text | Should -BeExactly "South"
|
||||||
|
$excel.Sheet1.Cells[10, 2].Text | Should -BeExactly "Delaware"
|
||||||
|
$excel.Sheet1.Cells[10, 3].Text | Should -Be 712
|
||||||
|
$excel.Sheet1.Cells[10, 4].Text | Should -Be 508.55
|
||||||
|
|
||||||
|
Close-ExcelPackage $excel
|
||||||
|
|
||||||
|
Remove-Item $xlfile -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,12 +32,6 @@ Describe 'Test' -Tag ImportExcelEndRowAndCols {
|
|||||||
$colNames[0] | Should -Be 'Units'
|
$colNames[0] | Should -Be 'Units'
|
||||||
$colNames[1] | Should -Be 'Price'
|
$colNames[1] | Should -Be 'Price'
|
||||||
}
|
}
|
||||||
|
|
||||||
It 'Should read any row up to maximum allowed row' {
|
|
||||||
$xlMaxRows = "$PSScriptRoot\MaxRows.xlsx"
|
|
||||||
$actual = Import-Excel $xlMaxRows -StartRow 1048576 -EndRow 1048576 -NoHeader
|
|
||||||
$actual.P1 | Should -Be 1048576
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Context 'Test reading multiple sheets with data in differnt rows and columns' {
|
Context 'Test reading multiple sheets with data in differnt rows and columns' {
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,66 +0,0 @@
|
|||||||
if (-not (Get-command Import-Excel -ErrorAction SilentlyContinue)) {
|
|
||||||
Import-Module $PSScriptRoot\..\ImportExcel.psd1
|
|
||||||
}
|
|
||||||
|
|
||||||
Describe "Test New Conditional Formatting IconSet" -Tag ConditionalFormattingIconSet {
|
|
||||||
BeforeEach {
|
|
||||||
$xlFilename = "TestDrive:\ConditionalFormattingIconSet.xlsx"
|
|
||||||
Remove-Item $xlFilename -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
$data = ConvertFrom-Csv @"
|
|
||||||
Region,State,Other,Units,Price,InStock
|
|
||||||
West,Texas,1,927,923.71,1
|
|
||||||
North,Tennessee,3,466,770.67,0
|
|
||||||
East,Florida,0,1520,458.68,1
|
|
||||||
East,Maine,1,1828,661.24,0
|
|
||||||
West,Virginia,1,465,053.58,1
|
|
||||||
North,Missouri,1,436,235.67,1
|
|
||||||
South,Kansas,0,214,992.47,1
|
|
||||||
North,North Dakota,1,789,640.72,0
|
|
||||||
South,Delaware,-1,712,508.55,1
|
|
||||||
"@
|
|
||||||
}
|
|
||||||
|
|
||||||
It "Should set ThreeIconSet" {
|
|
||||||
# $cfi1 = New-ConditionalFormattingIconSet -Range C:C -ConditionalFormat ThreeIconSet -IconType Symbols -ShowIconOnly
|
|
||||||
$cfi1 = New-ConditionalFormattingIconSet -Range C:C -ConditionalFormat ThreeIconSet -IconType Symbols
|
|
||||||
|
|
||||||
$data | Export-Excel $xlFilename -ConditionalFormat $cfi1
|
|
||||||
$actual = Import-Excel $xlFilename
|
|
||||||
$actual.count | Should -Be 9
|
|
||||||
|
|
||||||
$xl = Open-ExcelPackage $xlFilename
|
|
||||||
$xl.Workbook.Worksheets.Count | Should -Be 1
|
|
||||||
$targetSheet = $xl.Workbook.Worksheets[1]
|
|
||||||
|
|
||||||
$targetSheet.Name | Should -Be "Sheet1"
|
|
||||||
$targetSheet.ConditionalFormatting.Count | Should -Be 1
|
|
||||||
$targetSheet.ConditionalFormatting[0].Type | Should -Be "ThreeIconSet"
|
|
||||||
$targetSheet.ConditionalFormatting[0].IconSet | Should -Be "Symbols"
|
|
||||||
$targetSheet.ConditionalFormatting[0].Reverse | Should -BeFalse
|
|
||||||
$targetSheet.ConditionalFormatting[0].ShowValue | Should -BeTrue
|
|
||||||
|
|
||||||
Close-ExcelPackage $xl -NoSave
|
|
||||||
}
|
|
||||||
|
|
||||||
It "Should set ThreeIconSet with ShowOnlyIcon" {
|
|
||||||
$cfi1 = New-ConditionalFormattingIconSet -Range C:C -ConditionalFormat ThreeIconSet -IconType Symbols -ShowIconOnly
|
|
||||||
|
|
||||||
$data | Export-Excel $xlFilename -ConditionalFormat $cfi1
|
|
||||||
$actual = Import-Excel $xlFilename
|
|
||||||
$actual.count | Should -Be 9
|
|
||||||
|
|
||||||
$xl = Open-ExcelPackage $xlFilename
|
|
||||||
$xl.Workbook.Worksheets.Count | Should -Be 1
|
|
||||||
$targetSheet = $xl.Workbook.Worksheets[1]
|
|
||||||
|
|
||||||
$targetSheet.Name | Should -Be "Sheet1"
|
|
||||||
$targetSheet.ConditionalFormatting.Count | Should -Be 1
|
|
||||||
$targetSheet.ConditionalFormatting[0].Type | Should -Be "ThreeIconSet"
|
|
||||||
$targetSheet.ConditionalFormatting[0].IconSet | Should -Be "Symbols"
|
|
||||||
$targetSheet.ConditionalFormatting[0].Reverse | Should -BeFalse
|
|
||||||
$targetSheet.ConditionalFormatting[0].ShowValue | Should -BeFalse
|
|
||||||
|
|
||||||
Close-ExcelPackage $xl -NoSave
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
Describe "Test reading relative paths" {
|
Describe "Test reading relative paths" {
|
||||||
BeforeAll {
|
BeforeAll {
|
||||||
$script:xlfileName = "TestR.xlsx"
|
$script:xlfileName = "TestR.xlsx"
|
||||||
If ([String]::IsNullOrEmpty($PWD)) { $PWD = $PSScriptRoot }
|
|
||||||
@{data = 1 } | Export-Excel (Join-Path $PWD "TestR.xlsx")
|
@{data = 1 } | Export-Excel (Join-Path $PWD "TestR.xlsx")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
if (-not (Get-command Import-Excel -ErrorAction SilentlyContinue)) {
|
|
||||||
Import-Module $PSScriptRoot\..\ImportExcel.psd1
|
|
||||||
}
|
|
||||||
|
|
||||||
Describe "Test setting comment on cells in different ways" -Tag SetCellComment {
|
|
||||||
BeforeAll {
|
|
||||||
$data = ConvertFrom-Csv @"
|
|
||||||
OrderId,Category,Sales,Quantity,Discount
|
|
||||||
1,Cosmetics,744.01,07,0.7
|
|
||||||
2,Grocery,349.13,25,0.3
|
|
||||||
3,Apparels,535.11,88,0.2
|
|
||||||
4,Electronics,524.69,60,0.1
|
|
||||||
5,Electronics,439.10,41,0.0
|
|
||||||
6,Apparels,56.84,54,0.8
|
|
||||||
7,Electronics,326.66,97,0.7
|
|
||||||
8,Cosmetics,17.25,74,0.6
|
|
||||||
9,Grocery,199.96,39,0.4
|
|
||||||
10,Grocery,731.77,20,0.3
|
|
||||||
"@
|
|
||||||
|
|
||||||
$Excel = $data | Export-Excel -PassThru
|
|
||||||
$ws = $Excel.Workbook.Worksheets | Select-Object -First 1
|
|
||||||
}
|
|
||||||
|
|
||||||
AfterAll {
|
|
||||||
Close-ExcelPackage $Excel
|
|
||||||
}
|
|
||||||
|
|
||||||
It "Should add comments to multiple cells".PadRight(87) {
|
|
||||||
Set-CellComment -Range "A1" -Worksheet $ws -Text "This was added with a single cell range"
|
|
||||||
Set-CellComment -Range "A2:C2" -Worksheet $ws -Text "This was added with a multiple cell range"
|
|
||||||
Set-CellComment -ColumnLetter A -Row 3 -Worksheet $ws -Text "This was added using a column letter and rownumber"
|
|
||||||
Set-CellComment -ColumnNumber 1 -Row 4 -Worksheet $ws -Text "This was added using a column number and row number"
|
|
||||||
|
|
||||||
Set-CellComment -Range "B2" -Worksheet $ws -Text "This demonstrates an overwrite of a previously set comment"
|
|
||||||
|
|
||||||
$ws.Cells["A1"].Comment.Text | Should -BeExactly "This was added with a single cell range"
|
|
||||||
$ws.Cells["A2"].Comment.Text | Should -BeExactly "This was added with a multiple cell range"
|
|
||||||
$ws.Cells["B2"].Comment.Text | Should -BeExactly "This demonstrates an overwrite of a previously set comment"
|
|
||||||
$ws.Cells["C2"].Comment.Text | Should -BeExactly "This was added with a multiple cell range"
|
|
||||||
$ws.Cells["A3"].Comment.Text | Should -BeExactly "This was added using a column letter and rownumber"
|
|
||||||
$ws.Cells["A4"].Comment.Text | Should -BeExactly "This was added using a column number and row number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -132,11 +132,6 @@ Describe "Set-ExcelColumn, Set-ExcelRow and Set-ExcelRange" {
|
|||||||
12011,Crowbar,7,23.48
|
12011,Crowbar,7,23.48
|
||||||
"@
|
"@
|
||||||
|
|
||||||
# Pester errors for countries with ',' as decimal separator
|
|
||||||
Foreach ($datarow in $data) {
|
|
||||||
$datarow.Price = [decimal]($datarow.Price)
|
|
||||||
}
|
|
||||||
|
|
||||||
$DriverData = convertFrom-CSv @"
|
$DriverData = convertFrom-CSv @"
|
||||||
Name,Wikipage,DateOfBirth
|
Name,Wikipage,DateOfBirth
|
||||||
Fernando Alonso,/wiki/Fernando_Alonso,1981-07-29
|
Fernando Alonso,/wiki/Fernando_Alonso,1981-07-29
|
||||||
@@ -397,7 +392,7 @@ Describe "Table Formatting" {
|
|||||||
$excel = $data2 | Export-excel -path $path -WorksheetName Hardware -AutoNameRange -AutoSize -BoldTopRow -FreezeTopRow -PassThru
|
$excel = $data2 | Export-excel -path $path -WorksheetName Hardware -AutoNameRange -AutoSize -BoldTopRow -FreezeTopRow -PassThru
|
||||||
$ws = $excel.Workbook.Worksheets[1]
|
$ws = $excel.Workbook.Worksheets[1]
|
||||||
#test showfilter & TotalSettings
|
#test showfilter & TotalSettings
|
||||||
$Table = Add-ExcelTable -PassThru -Range $ws.Cells[$($ws.Dimension.address)] -TableStyle Light1 -TableName HardwareTable -TableTotalSettings @{"Total" = "Sum"} -ShowFirstColumn -ShowFilter:$false
|
$Table = Add-ExcelTable -PassThru -Range $ws.Cells[$($ws.Dimension.address)] -TableStyle Light1 -TableName HardwareTable -TotalSettings @{"Total" = "Sum"} -ShowFirstColumn -ShowFilter:$false
|
||||||
#test expnading named number formats
|
#test expnading named number formats
|
||||||
Set-ExcelColumn -Worksheet $ws -Column 4 -NumberFormat 'Currency'
|
Set-ExcelColumn -Worksheet $ws -Column 4 -NumberFormat 'Currency'
|
||||||
Set-ExcelColumn -Worksheet $ws -Column 5 -NumberFormat 'Currency'
|
Set-ExcelColumn -Worksheet $ws -Column 5 -NumberFormat 'Currency'
|
||||||
|
|||||||
27
changelog.md
27
changelog.md
@@ -1,22 +1,15 @@
|
|||||||
# 7.8.3
|
|
||||||
|
|
||||||
- Add -ShowOnlyIcon to `New-ConditionalFormattingIconSet` does not show data in the cell, just the icon. Based on this discussion https://github.com/dfinke/ImportExcel/discussions/1340
|
|
||||||
# 7.8.3
|
|
||||||
|
|
||||||
Thanks [Thomas Hofkens](https://github.com/thkn-hofa)
|
|
||||||
|
|
||||||
- Extended Export-Excel with parameter TableTotalSettings
|
|
||||||
- New Feature: Set-CellComment
|
|
||||||
- Fix Pester error for countries with ',' as decimal separator
|
|
||||||
- Fix Pester error for Windows PowerShell 5.1
|
|
||||||
|
|
||||||
# 7.8.2
|
# 7.8.2
|
||||||
|
|
||||||
- Fix docs [#1254](https://github.com/dfinke/ImportExcel/pull/1251)`Add-Worksheet` warning. Thank you [Wilson Stewart](https://github.com/WilsonStewart)
|
- Added `HeaderName` parameter to `Export-Excel`. Allows you to output an object with a property name. Otherwise the data is just the array of values.
|
||||||
- Fix docs [#1251](https://github.com/dfinke/ImportExcel/pull/1251)`Add-Worksheet` warning. Thank you [Jeremiah Adams](https://github.com/JeremiahTheFirst)
|
|
||||||
- Fix docs [#1253](https://github.com/dfinke/ImportExcel/pull/1253) `convertfrom-exceltosqlinsert`. Thank you [Wes Stahler](https://github.com/stahler)
|
```powershell
|
||||||
- Set Validate Range for rows to max rows available [#1273](https://github.com/dfinke/ImportExcel/pull/1273). Thank you [Stephen Brown](https://github.com/steve-daedilus)
|
1..10 | Export-Excel -Path .\test.xlsx -HeaderName MyNum
|
||||||
- Extended Get-ExcelFileSummary to include more Visible -eq $true|$false
|
```
|
||||||
|
|
||||||
|
- Added example `CopyFromOneSheetInSameWorkbook`. Shows how to copy a range of data from WorksheetA to WorksheetB
|
||||||
|
- Added example `HeaderName`. Shows how to use the new `-HeaderName` parameter
|
||||||
|
- Added example `HeaderName`. Shows how to use the new `-HeaderName` parameter
|
||||||
|
- Added example `ConvertDictionaryOfArraysToExcel` example. Takes a dictionary of arrays and converts it Rows and Columns of data in Excel.
|
||||||
|
|
||||||
# 7.8.1
|
# 7.8.1
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -112,7 +112,7 @@ An existing Sheet where the chart will be created.
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: ExcelWorksheet
|
Type: ExcelWorksheet
|
||||||
Parameter Sets: Worksheet
|
Parameter Sets: Workshet
|
||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Adds Tables to Excel workbooks.
|
|||||||
## SYNTAX
|
## SYNTAX
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Add-ExcelTable [-Range] <ExcelRange> [[-TableName] <String>] [[-TableStyle] <TableStyles>] [-ShowHeader] [-ShowFilter] [-ShowTotal] [[-TableTotalSettings] <Hashtable>] [-ShowFirstColumn] [-ShowLastColumn] [-ShowRowStripes] [-ShowColumnStripes] [-PassThru] [<CommonParameters>]
|
Add-ExcelTable [-Range] <ExcelRange> [[-TableName] <String>] [[-TableStyle] <TableStyles>] [-ShowHeader] [-ShowFilter] [-ShowTotal] [[-TotalSettings] <Hashtable>] [-ShowFirstColumn] [-ShowLastColumn] [-ShowRowStripes] [-ShowColumnStripes] [-PassThru] [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
## DESCRIPTION
|
## DESCRIPTION
|
||||||
@@ -142,19 +142,9 @@ Accept pipeline input: False
|
|||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
### -TableTotalSettings
|
### -TotalSettings
|
||||||
|
|
||||||
A HashTable in the form of either
|
A HashTable in the form ColumnName = "Average"\|"Count"\|"CountNums"\|"Max"\|"Min"\|"None"\|"StdDev"\|"Sum"\|"Var" - if specified, -ShowTotal is not needed.
|
||||||
|
|
||||||
- ColumnName = "Average"\|"Count"\|"CountNums"\|"Max"\|"Min"\|"None"\|"StdDev"\|"Sum"\|"Var"|\<Custom Excel function starting with "="\>
|
|
||||||
- ```powershell
|
|
||||||
ColumnName = @{
|
|
||||||
Function = "Average"\|"Count"\|"CountNums"\|"Max"\|"Min"\|"None"\|"StdDev"\|"Sum"\|"Var"|<Custom Excel function starting with "=">
|
|
||||||
Comment = $HoverComment
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
if specified, -ShowTotal is not needed.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: Hashtable
|
Type: Hashtable
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ Accept wildcard characters: False
|
|||||||
|
|
||||||
### -Header
|
### -Header
|
||||||
|
|
||||||
Specifies custom property names to use, instead of the values defined in the column headers of the TopRow. If you provide fewer header names than there is data in the worksheet, then only the data with a corresponding header name will be imported and the data without header name will be disregarded. If you provide more header names than there is data in the worksheet, then all data will be imported and all objects will have all the property names you defined in the header names. As such, the last properties will be blank as there is no data for them.
|
Specifies custom property names to use, instead of the values defined in the column headers of the TopRow. If you provide fewr header names than there is data in the worksheet, then only the data with a corresponding header name will be imported and the data without header name will be disregarded. If you provide more header names than there is data in the worksheet, then all data will be imported and all objects will have all the property names you defined in the header names. As such, the last properties will be blank as there is no data for them.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: String[]
|
Type: String[]
|
||||||
|
|||||||
@@ -16,13 +16,13 @@ Exports data to an Excel worksheet.
|
|||||||
### Default \(Default\)
|
### Default \(Default\)
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Export-Excel [[-Path] <String>] [-InputObject <Object>] [-Calculate] [-Show] [-WorksheetName <String>] [-Password <String>] [-ClearSheet] [-Append] [-Title <String>] [-TitleFillPattern <ExcelFillStyle>] [-TitleBold] [-TitleSize <Int32>] [-TitleBackgroundColor <Object>][-IncludePivotTable] [-PivotTableName <String>] [-PivotRows <String[]> [-PivotColumns <String[]>] [-PivotData <Object>] [-PivotFilter <String[]>] [-PivotDataToColumn] [-PivotTableDefinition <Hashtable>] [-IncludePivotChart] [-ChartType <eChartType>] [-NoLegend] [-ShowCategory] [-ShowPercent] [-AutoSize] [-MaxAutoSizeRows <Object>] [-NoClobber] [-FreezeTopRow] [-FreezeFirstColumn] [-FreezeTopRowFirstColumn] [-FreezePane <Int32[]>] [-AutoFilter] [-BoldTopRow] [-NoHeader] [-RangeName <String>] [-TableName <Object>] [-TableStyle <TableStyles>] [-TableTotalSettings <HashTable>] [-Barchart] [-PieChart] [-LineChart] [-ColumnChart] [-ExcelChartDefinition <Object[]>] [-HideSheet <String[]>] [-UnHideSheet <String[]>] [-MoveToStart] [-MoveToEnd] [-MoveBefore <Object>] [-MoveAfter <Object>] [-KillExcel] [-AutoNameRange] [-StartRow <Int32>] [-StartColumn <Int32>] [-PassThru] [-Numberformat <String>] [-ExcludeProperty <String[]>] [-NoAliasOrScriptPropeties] [-DisplayPropertySet] [-NoNumberConversion <String[]>] [-ConditionalFormat <Object[]>] [-ConditionalText <Object[]>] [-Style <Object[]>] [-CellStyleSB <ScriptBlock>] [-Activate] [-Now] [-ReturnRange] [-PivotTotals <String>] [-NoTotalsInPivot] [-ReZip] [<CommonParameters>]
|
Export-Excel [[-Path] <String>] [-InputObject <Object>] [-Calculate] [-Show] [-WorksheetName <String>] [-Password <String>] [-ClearSheet] [-Append] [-Title <String>] [-TitleFillPattern <ExcelFillStyle>] [-TitleBold] [-TitleSize <Int32>] [-TitleBackgroundColor <Object>][-IncludePivotTable] [-PivotTableName <String>] [-PivotRows <String[]> [-PivotColumns <String[]>] [-PivotData <Object>] [-PivotFilter <String[]>] [-PivotDataToColumn] [-PivotTableDefinition <Hashtable>] [-IncludePivotChart] [-ChartType <eChartType>] [-NoLegend] [-ShowCategory] [-ShowPercent] [-AutoSize] [-MaxAutoSizeRows <Object>] [-NoClobber] [-FreezeTopRow] [-FreezeFirstColumn] [-FreezeTopRowFirstColumn] [-FreezePane <Int32[]>] [-AutoFilter] [-BoldTopRow] [-NoHeader] [-RangeName <String>] [-TableName <Object>] [-TableStyle <TableStyles>] [-Barchart] [-PieChart] [-LineChart] [-ColumnChart] [-ExcelChartDefinition <Object[]>] [-HideSheet <String[]>] [-UnHideSheet <String[]>] [-MoveToStart] [-MoveToEnd] [-MoveBefore <Object>] [-MoveAfter <Object>] [-KillExcel] [-AutoNameRange] [-StartRow <Int32>] [-StartColumn <Int32>] [-PassThru] [-Numberformat <String>] [-ExcludeProperty <String[]>] [-NoAliasOrScriptPropeties] [-DisplayPropertySet] [-NoNumberConversion <String[]>] [-ConditionalFormat <Object[]>] [-ConditionalText <Object[]>] [-Style <Object[]>] [-CellStyleSB <ScriptBlock>] [-Activate] [-Now] [-ReturnRange] [-PivotTotals <String>] [-NoTotalsInPivot] [-ReZip] [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Package
|
### Package
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Export-Excel -ExcelPackage <ExcelPackage> [-InputObject <Object>] [-Calculate] [-Show] [-WorksheetName <String>] [-Password <String>] [-ClearSheet] [-Append] [-Title <String>] [-TitleFillPattern <ExcelFillStyle>] [-TitleBold] [-TitleSize <Int32>] [-TitleBackgroundColor <Object>] [-IncludePivotTable] [-PivotTableName <String>] [-PivotRows <String[]>] [-PivotColumns <String[]>] [-PivotData <Object>] [-PivotFilter <String[]>] [-PivotDataToColumn] [-PivotTableDefinition <Hashtable>] [-IncludePivotChart] [-ChartType <eChartType>] [-NoLegend] [-ShowCategory] [-ShowPercent] [-AutoSize] [-MaxAutoSizeRows <Object>] [-NoClobber] [-FreezeTopRow] [-FreezeFirstColumn] [-FreezeTopRowFirstColumn] [-FreezePane <Int32[]>] [-AutoFilter] [-BoldTopRow] [-NoHeader] [-RangeName <String>] [-TableName <Object>] [-TableStyle <TableStyles>] [-TableTotalSettings <HashTable>] [-Barchart] [-PieChart] [-LineChart] [-ColumnChart] [-ExcelChartDefinition <Object[]>] [-HideSheet <String[]>] [-UnHideSheet <String[]>] [-MoveToStart] [-MoveToEnd] [-MoveBefore <Object>] [-MoveAfter <Object>] [-KillExcel] [-AutoNameRange] [-StartRow <Int32>] [-StartColumn <Int32>] [-PassThru] [-Numberformat <String>] [-ExcludeProperty <String[]>]
|
Export-Excel -ExcelPackage <ExcelPackage> [-InputObject <Object>] [-Calculate] [-Show] [-WorksheetName <String>] [-Password <String>] [-ClearSheet] [-Append] [-Title <String>] [-TitleFillPattern <ExcelFillStyle>] [-TitleBold] [-TitleSize <Int32>] [-TitleBackgroundColor <Object>] [-IncludePivotTable] [-PivotTableName <String>] [-PivotRows <String[]>] [-PivotColumns <String[]>] [-PivotData <Object>] [-PivotFilter <String[]>] [-PivotDataToColumn] [-PivotTableDefinition <Hashtable>] [-IncludePivotChart] [-ChartType <eChartType>] [-NoLegend] [-ShowCategory] [-ShowPercent] [-AutoSize] [-MaxAutoSizeRows <Object>] [-NoClobber] [-FreezeTopRow] [-FreezeFirstColumn] [-FreezeTopRowFirstColumn] [-FreezePane <Int32[]>] [-AutoFilter] [-BoldTopRow] [-NoHeader] [-RangeName <String>] [-TableName <Object>] [-TableStyle <TableStyles>] [-Barchart] [-PieChart] [-LineChart] [-ColumnChart] [-ExcelChartDefinition <Object[]>] [-HideSheet <String[]>] [-UnHideSheet <String[]>] [-MoveToStart] [-MoveToEnd] [-MoveBefore <Object>] [-MoveAfter <Object>] [-KillExcel] [-AutoNameRange] [-StartRow <Int32>] [-StartColumn <Int32>] [-PassThru] [-Numberformat <String>] [-ExcludeProperty <String[]>]
|
||||||
[-NoAliasOrScriptPropeties] [-DisplayPropertySet] [-NoNumberConversion <String[]>] [-ConditionalFormat <Object[]>] [-ConditionalText <Object[]>] [-Style <Object[]>] [-CellStyleSB <ScriptBlock>] [-Activate] [-ReturnRange] [-PivotTotals <String>] [-NoTotalsInPivot] [-ReZip] [<CommonParameters>]
|
[-NoAliasOrScriptPropeties] [-DisplayPropertySet] [-NoNumberConversion <String[]>] [-ConditionalFormat <Object[]>] [-ConditionalText <Object[]>] [-Style <Object[]>] [-CellStyleSB <ScriptBlock>] [-Activate] [-ReturnRange] [-PivotTotals <String>] [-NoTotalsInPivot] [-ReZip] [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -156,29 +156,6 @@ If neither condition is met, the color will be the default, black text on a whit
|
|||||||
|
|
||||||
### EXAMPLE 7
|
### EXAMPLE 7
|
||||||
|
|
||||||
```text
|
|
||||||
PS\> $r = Get-ChildItem C:\WINDOWS\system32 -File
|
|
||||||
|
|
||||||
PS\> $TotalSettings = @{
|
|
||||||
Name = "Count"
|
|
||||||
Extension = "=COUNTIF([Extension];`".exe`")"
|
|
||||||
Length = @{
|
|
||||||
Function = "=SUMIF([Extension];`".exe`";[Length])"
|
|
||||||
Comment = "Sum of all exe sizes"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PS\> $r | Export-Excel -TableName system32files -TableStyle Medium10 -TableTotalSettings $TotalSettings -Show
|
|
||||||
```
|
|
||||||
|
|
||||||
Exports a list of files with a totals row with three calculated totals:
|
|
||||||
|
|
||||||
- Total count of names
|
|
||||||
- Count of files with the extension ".exe"
|
|
||||||
- Total size of all file with extension ".exe" and add a comment as to not be mistaken that is is the total size of all files
|
|
||||||
|
|
||||||
### EXAMPLE 8
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> $ExcelParams = @{
|
PS\> $ExcelParams = @{
|
||||||
Path = $env:TEMP + '\Excel.xlsx'
|
Path = $env:TEMP + '\Excel.xlsx'
|
||||||
@@ -212,25 +189,25 @@ PS\> $Array | Update-FirstObjectProperties | Export-Excel @ExcelParams -Workshee
|
|||||||
|
|
||||||
Updates the first object of the array by adding property 'Member3' and 'Member4'. Afterwards, all objects are exported to an Excel file and all column headers are visible.
|
Updates the first object of the array by adding property 'Member3' and 'Member4'. Afterwards, all objects are exported to an Excel file and all column headers are visible.
|
||||||
|
|
||||||
### EXAMPLE 9
|
### EXAMPLE 8
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> Get-Process | Export-Excel .\test.xlsx -WorksheetName Processes -IncludePivotTable -Show -PivotRows Company -PivotData PM
|
PS\> Get-Process | Export-Excel .\test.xlsx -WorksheetName Processes -IncludePivotTable -Show -PivotRows Company -PivotData PM
|
||||||
```
|
```
|
||||||
|
|
||||||
### EXAMPLE 10
|
### EXAMPLE 9
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> Get-Process | Export-Excel .\test.xlsx -WorksheetName Processes -ChartType PieExploded3D -IncludePivotChart -IncludePivotTable -Show -PivotRows Company -PivotData PM
|
PS\> Get-Process | Export-Excel .\test.xlsx -WorksheetName Processes -ChartType PieExploded3D -IncludePivotChart -IncludePivotTable -Show -PivotRows Company -PivotData PM
|
||||||
```
|
```
|
||||||
|
|
||||||
### EXAMPLE 11
|
### EXAMPLE 10
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> Get-Service | Export-Excel 'c:\temp\test.xlsx' -Show -IncludePivotTable -PivotRows status -PivotData @{status='count'}
|
PS\> Get-Service | Export-Excel 'c:\temp\test.xlsx' -Show -IncludePivotTable -PivotRows status -PivotData @{status='count'}
|
||||||
```
|
```
|
||||||
|
|
||||||
### EXAMPLE 12
|
### EXAMPLE 11
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> $pt = [ordered]@{}
|
PS\> $pt = [ordered]@{}
|
||||||
@@ -260,7 +237,7 @@ Then it puts Service data on Sheet1 with one call to Export-Excel and Process Da
|
|||||||
|
|
||||||
The third and final call adds the two PivotTables and opens the spreadsheet in Excel.
|
The third and final call adds the two PivotTables and opens the spreadsheet in Excel.
|
||||||
|
|
||||||
### EXAMPLE 13
|
### EXAMPLE 12
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> Remove-Item -Path .\test.xlsx
|
PS\> Remove-Item -Path .\test.xlsx
|
||||||
@@ -281,7 +258,7 @@ It then uses the package object to apply formatting, and then saves the workbook
|
|||||||
|
|
||||||
Note: Other commands in the module remove the need to work directly with the package object in this way.
|
Note: Other commands in the module remove the need to work directly with the package object in this way.
|
||||||
|
|
||||||
### EXAMPLE 14
|
### EXAMPLE 13
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> Remove-Item -Path .\test.xlsx -ErrorAction Ignore
|
PS\> Remove-Item -Path .\test.xlsx -ErrorAction Ignore
|
||||||
@@ -304,7 +281,7 @@ This a more sophisticated version of the previous example showing different ways
|
|||||||
|
|
||||||
In the final command a PivotChart is added and the workbook is opened in Excel.
|
In the final command a PivotChart is added and the workbook is opened in Excel.
|
||||||
|
|
||||||
### EXAMPLE 15
|
### EXAMPLE 14
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> 0..360 | ForEach-Object {[pscustomobject][ordered]@{X=$_; Sinx="=Sin(Radians(x)) "} } |
|
PS\> 0..360 | ForEach-Object {[pscustomobject][ordered]@{X=$_; Sinx="=Sin(Radians(x)) "} } |
|
||||||
@@ -313,7 +290,7 @@ PS\> 0..360 | ForEach-Object {[pscustomobject][ordered]@{X=$_; Sinx="=Sin(Radian
|
|||||||
|
|
||||||
Creates a line chart showing the value of Sine\(x\) for values of X between 0 and 360 degrees.
|
Creates a line chart showing the value of Sine\(x\) for values of X between 0 and 360 degrees.
|
||||||
|
|
||||||
### EXAMPLE 16
|
### EXAMPLE 15
|
||||||
|
|
||||||
```text
|
```text
|
||||||
PS\> Invoke-Sqlcmd -ServerInstance localhost\DEFAULT -Database AdventureWorks2014 -Query "select * from sys.tables" -OutputAs DataRows |
|
PS\> Invoke-Sqlcmd -ServerInstance localhost\DEFAULT -Database AdventureWorks2014 -Query "select * from sys.tables" -OutputAs DataRows |
|
||||||
@@ -360,7 +337,7 @@ Accept wildcard characters: False
|
|||||||
|
|
||||||
### -InputObject
|
### -InputObject
|
||||||
|
|
||||||
Data is usually piped into Export-Excel, but it also accepts data through the InputObject parameter
|
Date is usually piped into Export-Excel, but it also accepts data through the InputObject parameter
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: Object
|
Type: Object
|
||||||
@@ -975,32 +952,6 @@ Accept pipeline input: False
|
|||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
### -TableTotalSettings
|
|
||||||
|
|
||||||
A HashTable in the form of either
|
|
||||||
|
|
||||||
- ColumnName = "Average"\|"Count"\|"CountNums"\|"Max"\|"Min"\|"None"\|"StdDev"\|"Sum"\|"Var"|\<Custom Excel function starting with "="\>
|
|
||||||
- ```powershell
|
|
||||||
ColumnName = @{
|
|
||||||
Function = "Average"\|"Count"\|"CountNums"\|"Max"\|"Min"\|"None"\|"StdDev"\|"Sum"\|"Var"|<Custom Excel function starting with "=">
|
|
||||||
Comment = $HoverComment
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
if specified, -ShowTotal is not needed.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: Hashtable
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: 4
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -Barchart
|
### -Barchart
|
||||||
|
|
||||||
Creates a "quick" bar chart using the first text column as labels and the first numeric column as values.
|
Creates a "quick" bar chart using the first text column as labels and the first numeric column as values.
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ If the default behavior is not desired and you want to import the complete works
|
|||||||
### EXAMPLE 1
|
### EXAMPLE 1
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
| File: Movies.xlsx - Sheet: Actors |
|
| File: Movies.xlsx - Sheet: Actors |
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
@@ -90,7 +89,6 @@ Notice that column 'B' is not imported because there's no value in cell 'B1' tha
|
|||||||
### EXAMPLE 2
|
### EXAMPLE 2
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
| File: Movies.xlsx - Sheet: Actors |
|
| File: Movies.xlsx - Sheet: Actors |
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
@@ -122,7 +120,6 @@ Notice that the column header \(row 1\) is imported as an object too.
|
|||||||
### EXAMPLE 3
|
### EXAMPLE 3
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
| File: Movies.xlsx - Sheet: Movies |
|
| File: Movies.xlsx - Sheet: Movies |
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
@@ -163,7 +160,6 @@ Notice that empty rows are imported and that data for the property 'Genre' is no
|
|||||||
### EXAMPLE 4
|
### EXAMPLE 4
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
| File: Movies.xlsx - Sheet: Movies |
|
| File: Movies.xlsx - Sheet: Movies |
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
@@ -196,7 +192,6 @@ Notice that empty rows and empty columns are not imported.
|
|||||||
### EXAMPLE 5
|
### EXAMPLE 5
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
| File: Movies.xlsx - Sheet: Actors |
|
| File: Movies.xlsx - Sheet: Actors |
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user