Merge remote-tracking branch 'upstream/master'

This commit is contained in:
jhoneill
2018-07-12 16:49:49 +01:00
60 changed files with 354 additions and 232 deletions

View File

@@ -24,3 +24,4 @@ pwd
Nuget Nuget
EPPLus EPPLus
intellisense intellisense
PivtoTableName

View File

@@ -1,3 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
ConvertFrom-ExcelToSQLInsert People .\testSQLGen.xlsx ConvertFrom-ExcelToSQLInsert People .\testSQLGen.xlsx

View File

@@ -1,4 +1,4 @@
Import-Module ..\..\ImportExcel.psd1 -Force try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\dashboard.xlsx" $f = ".\dashboard.xlsx"
Remove-Item $f -ErrorAction Ignore Remove-Item $f -ErrorAction Ignore

View File

@@ -1,5 +1,4 @@
Import-Module ..\..\ImportExcel.psd1 -Force try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
ConvertFrom-ExcelToSQLInsert -TableName "Movies" -Path ".\Movies.xlsx" -ConvertEmptyStringsToNull ConvertFrom-ExcelToSQLInsert -TableName "Movies" -Path ".\Movies.xlsx" -ConvertEmptyStringsToNull
'' ''

View File

@@ -1,15 +1,17 @@
param ($fibonacciDigits=10) param ($fibonacciDigits=10)
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = "fib.xlsx" $file = "fib.xlsx"
rm "fib.xlsx" -ErrorAction Ignore Remove-Item "fib.xlsx" -ErrorAction Ignore
$( $(
New-PSItem 0 New-PSItem 0
New-PSItem 1 New-PSItem 1
( (
2..$fibonacciDigits | 2..$fibonacciDigits |
ForEach { ForEach-Object {
New-PSItem ('=a{0}+a{1}' -f ($_+1),$_) New-PSItem ('=a{0}+a{1}' -f ($_+1),$_)
} }
) )

Binary file not shown.

View File

@@ -1,12 +1,16 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlfile = "$env:temp\testFmt.xlsx"
Get-Process | Get-Process |
Select-Object Company,Handles,PM, NPM| Select-Object Company,Handles,PM, NPM|
Export-Excel $xlfile -Show -AutoSize -CellStyleSB { Export-Excel $xlfile -Show -AutoSize -CellStyleSB {
param( param(
$workSheet, $workSheet,
$totalRows, $totalRows,
$lastColumn $lastColumn
) )
Set-CellStyle $workSheet 1 $LastColumn Solid Cyan Set-CellStyle $workSheet 1 $LastColumn Solid Cyan
foreach($row in (2..$totalRows | Where-Object {$_ % 2 -eq 0})) { foreach($row in (2..$totalRows | Where-Object {$_ % 2 -eq 0})) {

View File

@@ -1,9 +1,14 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlfile = "$env:temp\testFmt.xlsx"
Remove-Item $xlfile -ErrorAction Ignore
$RandomStyle = { $RandomStyle = {
param( param(
$workSheet, $workSheet,
$totalRows, $totalRows,
$lastColumn $lastColumn
) )
2..$totalRows | ForEach-Object{ 2..$totalRows | ForEach-Object{
Set-CellStyle $workSheet $_ $LastColumn Solid (Write-Output LightGreen Gray Red|Get-Random) Set-CellStyle $workSheet $_ $LastColumn Solid (Write-Output LightGreen Gray Red|Get-Random)
@@ -11,5 +16,5 @@ $RandomStyle = {
} }
Get-Process | Get-Process |
Select-Object Company,Handles,PM, NPM| Select-Object Company,Handles,PM, NPM|
Export-Excel $xlfile -Show -AutoSize -CellStyleSB $RandomStyle Export-Excel $xlfile -Show -AutoSize -CellStyleSB $RandomStyle

View File

@@ -1,7 +1,8 @@
#$( try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
# New-PSItem 'Every Man a King' http://orisonswettmarden.wwwhubs.com/ccount/click.php?id=2
# New-PSItem 'Be Good to Yourself' http://orisonswettmarden.wwwhubs.com/ccount/click.php?id=3 @"
# New-PSItem 'Character : The Grandest Thing in the World' http://orisonswettmarden.wwwhubs.com/ccount/click.php?id=4 site,link
# New-PSItem 'The Conquest of Worry' http://orisonswettmarden.wwwhubs.com/ccount/click.php?id=5 google,http://www.google.com
# New-PSItem 'Success Nuggets' http://orisonswettmarden.wwwhubs.com/ccount/click.php?id=6 stackoverflow,http://stackoverflow.com
#) | Export-Excel hyperlinks.xlsx -Show -AutoSize microsoft,http://microsoft.com
"@ | ConvertFrom-Csv | Export-Excel

View File

@@ -1,2 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Import-Html "http://en.wikipedia.org/wiki/Demographics_of_India" 4 Import-Html "http://en.wikipedia.org/wiki/Demographics_of_India" 4

View File

@@ -1 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Import-Html "http://www.science.co.il/PTelements.asp" 1 Import-Html "http://www.science.co.il/PTelements.asp" 1

View File

@@ -1 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Import-Html "https://en.wikipedia.org/wiki/List_of_Star_Trek:_The_Original_Series_episodes" 2 Import-Html "https://en.wikipedia.org/wiki/List_of_Star_Trek:_The_Original_Series_episodes" 2

View File

@@ -0,0 +1,6 @@
"Region","Item","UnitSold","UnitCost"
"East","Banana","38","0.26"
"East","Kale","71","0.69"
"East","Apple","35","0.55"
"East","Potato","48","0.48"
"East","Kale","41","0.74"
1 Region Item UnitSold UnitCost
2 East Banana 38 0.26
3 East Kale 71 0.69
4 East Apple 35 0.55
5 East Potato 48 0.48
6 East Kale 41 0.74

View File

@@ -0,0 +1,22 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlfile = "$env:temp\AllSales.xlsx"
Remove-Item $xlfile -ErrorAction Ignore
$params = @{
AutoSize = $true
AutoFilter = $true
AutoNameRange = $true
ExcelChartDefinition = New-ExcelChartDefinition -XRange Item -YRange UnitSold -Title 'Units Sold'
Path = $xlfile
}
Import-Csv $PSScriptRoot\NorthSales.csv | Export-Excel -WorkSheetname North @params
Import-Csv $PSScriptRoot\EastSales.csv | Export-Excel -WorkSheetname East @params
Import-Csv $PSScriptRoot\SouthSales.csv | Export-Excel -WorkSheetname South @params
Import-Csv $PSScriptRoot\WestSales.csv | Export-Excel -WorkSheetname West @params
$params.Remove("AutoNameRange")
$params.Remove("ExcelChartDefinition")
Join-Worksheet -WorkSheetName AllSales -Show @params

View File

@@ -0,0 +1,5 @@
"Region","Item","UnitSold","UnitCost"
"North","Apple","40","0.68"
"North","Kale","55","0.35"
"North","Banana","33","0.31"
"North","Pear","29","0.74"
1 Region Item UnitSold UnitCost
2 North Apple 40 0.68
3 North Kale 55 0.35
4 North Banana 33 0.31
5 North Pear 29 0.74

View File

@@ -0,0 +1,6 @@
"Region","Item","UnitSold","UnitCost"
"South","Banana","54","0.46"
"South","Pear","39","0.44"
"South","Potato","33","0.46"
"South","Banana","49","0.31"
"South","Apple","38","0.59"
1 Region Item UnitSold UnitCost
2 South Banana 54 0.46
3 South Pear 39 0.44
4 South Potato 33 0.46
5 South Banana 49 0.31
6 South Apple 38 0.59

View File

@@ -0,0 +1,12 @@
"Region","Item","UnitSold","UnitCost"
"West","Banana","74","0.56"
"West","Apple","26","0.7"
"West","Banana","59","0.49"
"West","Potato","56","0.62"
"West","Banana","60","0.64"
"West","Pear","32","0.29"
"West","Apple","73","0.26"
"West","Banana","49","0.59"
"West","Pear","65","0.35"
"West","Apple","60","0.34"
"West","Kale","67","0.38"
1 Region Item UnitSold UnitCost
2 West Banana 74 0.56
3 West Apple 26 0.7
4 West Banana 59 0.49
5 West Potato 56 0.62
6 West Banana 60 0.64
7 West Pear 32 0.29
8 West Apple 73 0.26
9 West Banana 49 0.59
10 West Pear 65 0.35
11 West Apple 60 0.34
12 West Kale 67 0.38

View File

@@ -1,4 +1,6 @@
ColumnChart -Title "Central Limit Theorem" -NoLegend ($( try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
ColumnChart -Title "Central Limit Theorem" -NoLegend ($(
for ($i = 1; $i -le 500; $i++) { for ($i = 1; $i -le 500; $i++) {
$s = 0 $s = 0
for ($j = 1; $j -le 100; $j++) { for ($j = 1; $j -le 100; $j++) {

View File

@@ -2,5 +2,7 @@
# Sum up handles by company # Sum up handles by company
# Show the Pie Chart # Show the Pie Chart
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
PieChart -Title "Total Handles by Company" ` PieChart -Title "Total Handles by Company" `
(Invoke-Sum (Get-Process|Where company) company handles) (Invoke-Sum (Get-Process | Where-Object company) company handles)

View File

@@ -2,6 +2,8 @@
# Sum up PM by company # Sum up PM by company
# Show the Pie Chart # Show the Pie Chart
PieChart -Title "Total PM by Company" ` try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
(Invoke-Sum (Get-Process|Where company) company pm)
PieChart -Title "Total PM by Company" `
(Invoke-Sum (Get-Process|Where-Object company) company pm)

View File

@@ -1 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
BarChart (.\TargetData.ps1) "A BarChart" BarChart (.\TargetData.ps1) "A BarChart"

View File

@@ -1 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
ColumnChart (.\TargetData.ps1) "A ColumnChart" ColumnChart (.\TargetData.ps1) "A ColumnChart"

View File

@@ -1 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
PieChart (.\TargetData.ps1) "A PieChart" PieChart (.\TargetData.ps1) "A PieChart"

View File

@@ -1,3 +1,5 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$header = echo ` $header = echo `
'Date/Time - Peak Brightness (UT)' ` 'Date/Time - Peak Brightness (UT)' `
'Latitude (Deg)' ` 'Latitude (Deg)' `
@@ -12,8 +14,8 @@ $header = echo `
$splat=@{ $splat=@{
url='http://neo.jpl.nasa.gov/fireballs/' url='http://neo.jpl.nasa.gov/fireballs/'
index=5 index=5
Header=$header Header=$header
FirstDataRow=1 FirstDataRow=1
} }

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = "disks.xlsx" $file = "disks.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
$data = $( $data = $(
New-PSItem 100 -100 New-PSItem 100 -100

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = "disks.xlsx" $file = "disks.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
$data = $( $data = $(
New-PSItem 100 -100 New-PSItem 100 -100

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = "disks.xlsx" $file = "disks.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
$data = $( $data = $(
New-PSItem 1 New-PSItem 1

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = "disks.xlsx" $file = "disks.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
$data = $( $data = $(
New-PSItem 100 -100 New-PSItem 100 -100

View File

@@ -1,7 +1,9 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = "disks.xlsx" $file = "disks.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
Get-CimInstance win32_logicaldisk -filter "drivetype=3" | Get-CimInstance win32_logicaldisk -filter "drivetype=3" |
Select DeviceID,Volumename,Size,Freespace | Select-Object DeviceID,Volumename,Size,Freespace |
Export-Excel -Path $file -Show -AutoSize -NumberFormat "0" Export-Excel -Path $file -Show -AutoSize -NumberFormat "0"

View File

@@ -1,7 +1,9 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = "disks.xlsx" $file = "disks.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
Get-CimInstance win32_logicaldisk -filter "drivetype=3" | Get-CimInstance win32_logicaldisk -filter "drivetype=3" |
Select DeviceID,Volumename,Size,Freespace | Select-Object DeviceID,Volumename,Size,Freespace |
Export-Excel -Path $file -Show -AutoSize Export-Excel -Path $file -Show -AutoSize

Binary file not shown.

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = "sales.xlsx" $file = "sales.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
$xlPkg = Import-Csv .\sales.csv | Export-Excel $file -PassThru $xlPkg = Import-Csv .\sales.csv | Export-Excel $file -PassThru
@@ -9,8 +11,8 @@ $ws = $xlPkg.Workbook.WorkSheets[1]
$ws.Cells["E1"].Value = "TotalSold" $ws.Cells["E1"].Value = "TotalSold"
$ws.Cells["F1"].Value = "Add 10%" $ws.Cells["F1"].Value = "Add 10%"
2..($ws.Dimension.Rows) | 2..($ws.Dimension.Rows) |
ForEach { ForEach-Object {
$ws.Cells["E$_"].Formula = "=C$_+D$_" $ws.Cells["E$_"].Formula = "=C$_+D$_"
$ws.Cells["F$_"].Formula = "=E$_+(10%*(C$_+D$_))" $ws.Cells["F$_"].Formula = "=E$_+(10%*(C$_+D$_))"
} }

Binary file not shown.

View File

@@ -1,4 +1,4 @@
Import-Module ..\..\ImportExcel.psd1 -Force try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item .\test1.xlsx -ErrorAction Ignore Remove-Item .\test1.xlsx -ErrorAction Ignore

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
Import-Module ..\..\ImportExcel.psd1 -Force try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlFile=".\testPivot.xlsx" $xlFile=".\testPivot.xlsx"
Remove-Item $xlFile -ErrorAction Ignore Remove-Item $xlFile -ErrorAction Ignore

View File

@@ -1,3 +1,5 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$plt = New-Plot $plt = New-Plot
$plt.Plot((Get-Range 0 5 .02|%{[math]::Cos(2*[math]::pi*$_)})) $plt.Plot((Get-Range 0 5 .02|%{[math]::Cos(2*[math]::pi*$_)}))
$plt.SetChartSize(800,300) $plt.SetChartSize(800,300)

View File

@@ -1,33 +1,33 @@
 Import-Module -name ImportExcel -Force -Verbose try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$sql = @" $sql = @"
SELECT rootfile.baseName , rootfile.extension , Image.fileWidth AS width , image.fileHeight AS height , SELECT rootfile.baseName , rootfile.extension , Image.fileWidth AS width , image.fileHeight AS height ,
metadata.dateDay , metadata.dateMonth , metadata.dateYear , Image.captureTime AS dateTaken, metadata.dateDay , metadata.dateMonth , metadata.dateYear , Image.captureTime AS dateTaken,
metadata.hasGPS , metadata.GPSLatitude , metadata.GPSLongitude , metadata.hasGPS , metadata.GPSLatitude , metadata.GPSLongitude ,
metadata.focalLength , metadata.flashFired , metadata.ISOSpeedRating AS ISOSpeed, metadata.focalLength , metadata.flashFired , metadata.ISOSpeedRating AS ISOSpeed,
metadata.Aperture AS apertureValue , metadata.ShutterSpeed AS shutterSpeedValue, metadata.Aperture AS apertureValue , metadata.ShutterSpeed AS shutterSpeedValue,
Image.bitdepth , image.colorLabels , Image.bitdepth , image.colorLabels ,
Camera.Value AS cameraModel , LensRef.value AS lensModel Camera.Value AS cameraModel , LensRef.value AS lensModel
FROM Adobe_images image FROM Adobe_images image
JOIN AgLibraryFile rootFile ON rootfile.id_local = image.rootFile JOIN AgLibraryFile rootFile ON rootfile.id_local = image.rootFile
JOIN AgharvestedExifMetadata metadata ON image.id_local = metadata.image JOIN AgharvestedExifMetadata metadata ON image.id_local = metadata.image
LEFT JOIN AgInternedExifLens LensRef ON LensRef.id_Local = metadata.lensRef LEFT JOIN AgInternedExifLens LensRef ON LensRef.id_Local = metadata.lensRef
LEFT JOIN AgInternedExifCameraModel Camera ON Camera.id_local = metadata.cameraModelRef LEFT JOIN AgInternedExifCameraModel Camera ON Camera.id_local = metadata.cameraModelRef
"@ "@
``
#Sql Statement gets 20 columns of data from Adobe lightroom database
#Define a pivot table and chart for total pictures with each lens.
$pt = @{"LensPivot" = @{ "PivotTableName" = "LensPivot"; #Sql Statement gets 20 columns of data from Adobe lightroom database
#Define a pivot table and chart for total pictures with each lens.
$pt = @{"LensPivot" = @{ "PivotTableName" = "LensPivot";
"SourceWorkSheet" = "Sheet1" ; "SourceWorkSheet" = "Sheet1" ;
"PivotRows" = "LensModel" ; "PivotRows" = "LensModel" ;
"PivotData" = @{"basename" = "Count"} ; "PivotData" = @{"basename" = "Count"} ;
"IncludePivotChart" = $true ; "IncludePivotChart" = $true ;
"NoLegend" = $true ; "NoLegend" = $true ;
"ShowPercent" = $true ; "ShowPercent" = $true ;
"ChartType" = "Pie" ; "ChartType" = "Pie" ;
"ChartTitle" = "Split by Lens" } "ChartTitle" = "Split by Lens" }
} }
#we want to add 3 columns, translate Apperture value and Shutter speed value into familar f/ and seconds notation, and use these and ISO to calculate EV level #we want to add 3 columns, translate Apperture value and Shutter speed value into familar f/ and seconds notation, and use these and ISO to calculate EV level
$Avalue = {"=IF(P$ROW>6.63,TEXT(ROUND(Sqrt(Power(2,O$ROW)),1),`"`"`"f/`"`"0.0`")," + $Avalue = {"=IF(P$ROW>6.63,TEXT(ROUND(Sqrt(Power(2,O$ROW)),1),`"`"`"f/`"`"0.0`")," +
@@ -37,52 +37,52 @@ $Svalue = {"=IF(P$ROW>2,TEXT(ROUND(POWER(2,P$ROW),0),`"`"`"1/`"`"0`"`"sec
"TEXT(ROUND(1/POWER(2,P$ROW),2),`"0`"`"Sec`"`"`")))"} "TEXT(ROUND(1/POWER(2,P$ROW),2),`"0`"`"Sec`"`"`")))"}
$evValue = {"=ROUND(P$Row+O$Row-(LOG(N$Row/100,2)),0)" } $evValue = {"=ROUND(P$Row+O$Row-(LOG(N$Row/100,2)),0)" }
#remove and recreate the file #remove and recreate the file
Remove-Item -Path "~\Documents\temp.xlsx" -ErrorAction SilentlyContinue Remove-Item -Path "~\Documents\temp.xlsx" -ErrorAction SilentlyContinue
#Open a connection to the ODBC source "LR" (which points to the SQLLite DB for Lightroom), run the SQL query, and drop into Excel - in sheet1, autosizing columns. #Open a connection to the ODBC source "LR" (which points to the SQLLite DB for Lightroom), run the SQL query, and drop into Excel - in sheet1, autosizing columns.
$e = Send-SQLDataToExcel -Path "~\Documents\temp.xlsx" -WorkSheetname "Sheet1" -Connection "DSN=LR" -SQL $sql -AutoSize -Passthru $e = Send-SQLDataToExcel -Path "~\Documents\temp.xlsx" -WorkSheetname "Sheet1" -Connection "DSN=LR" -SQL $sql -AutoSize -Passthru
#Add columns, then format them and hide the ones which aren't of interest. #Add columns, then format them and hide the ones which aren't of interest.
Set-Column -Worksheet $e.workbook.Worksheets["sheet1"] -Column 21 -Value $Avalue -Heading "Apperture" Set-Column -Worksheet $e.workbook.Worksheets["sheet1"] -Column 21 -Value $Avalue -Heading "Apperture"
Set-Column -Worksheet $e.workbook.Worksheets["sheet1"] -Column 22 -Value $Svalue -Heading "Shutter" Set-Column -Worksheet $e.workbook.Worksheets["sheet1"] -Column 22 -Value $Svalue -Heading "Shutter"
Set-Column -Worksheet $e.workbook.Worksheets["sheet1"] -Column 23 -Value $Evvalue -Heading "Ev" Set-Column -Worksheet $e.workbook.Worksheets["sheet1"] -Column 23 -Value $Evvalue -Heading "Ev"
Set-Format -Address $e.workbook.Worksheets["sheet1" ].Column(21) -HorizontalAlignment Left -AutoFit Set-Format -Address $e.workbook.Worksheets["sheet1" ].Column(21) -HorizontalAlignment Left -AutoFit
Set-Format -Address $e.workbook.Worksheets["sheet1" ].Column(22) -HorizontalAlignment Right -AutoFit Set-Format -Address $e.workbook.Worksheets["sheet1" ].Column(22) -HorizontalAlignment Right -AutoFit
@(5,6,7,13,15,16,17,18) | ForEach-Object { @(5,6,7,13,15,16,17,18) | ForEach-Object {
Set-Format -Address $e.workbook.Worksheets["sheet1" ].Column($_) -Hidden Set-Format -Address $e.workbook.Worksheets["sheet1" ].Column($_) -Hidden
} }
#Center the column labels. #Center the column labels.
Set-Format -Address $e.workbook.Worksheets["sheet1" ].Row(1) -HorizontalAlignment Center Set-Format -Address $e.workbook.Worksheets["sheet1" ].Row(1) -HorizontalAlignment Center
#Format the data as a nice Table, Create the pivot table & chart defined above, show the file in Excel in excel after saving. #Format the data as a nice Table, Create the pivot table & chart defined above, show the file in Excel in excel after saving.
Export-Excel -ExcelPackage $e -WorkSheetname "sheet1" -TableName "Table" -PivotTableDefinition $pt -Show Export-Excel -ExcelPackage $e -WorkSheetname "sheet1" -TableName "Table" -PivotTableDefinition $pt -Show
############################################################ ############################################################
Remove-Item .\demo3.xlsx Remove-Item .\demo3.xlsx
#Database query to get race wins, Poles and fastest lapes for the 25 best drivers; we already have a connection to the DB in $dbSessions #Database query to get race wins, Poles and fastest lapes for the 25 best drivers; we already have a connection to the DB in $dbSessions
$session = $DbSessions["f1"] $session = $DbSessions["f1"]
$SQL = @" $SQL = @"
SELECT TOP 25 DriverName, SELECT TOP 25 DriverName,
Count(RaceDate) AS Races, Count(RaceDate) AS Races,
Count(Win) AS Wins, Count(Win) AS Wins,
Count(Pole) AS Poles, Count(Pole) AS Poles,
Count(FastestLap) AS Fastlaps Count(FastestLap) AS Fastlaps
FROM Results FROM Results
GROUP BY DriverName GROUP BY DriverName
ORDER BY (Count(win)) DESC ORDER BY (Count(win)) DESC
"@ "@
#Run the query and put the results in workshet "Winners", autosize the columns and hold on to the ExcelPackage object #Run the query and put the results in workshet "Winners", autosize the columns and hold on to the ExcelPackage object
$Excel = Send-SQLDataToExcel -SQL $sql -Session $session -path .\demo3.xlsx -WorkSheetname "Winners" -AutoSize -Passthru $Excel = Send-SQLDataToExcel -SQL $sql -Session $session -path .\demo3.xlsx -WorkSheetname "Winners" -AutoSize -Passthru
#Create and format columns for the ratio of Wins to poles and fast laps. #Create and format columns for the ratio of Wins to poles and fast laps.
Set-Column -ExcelPackage $Excel -WorkSheetname "Winners" -column 6 -Heading "WinsToPoles" -Value {"=D$row/C$row"} Set-Column -ExcelPackage $Excel -WorkSheetname "Winners" -column 6 -Heading "WinsToPoles" -Value {"=D$row/C$row"}
Set-Column -ExcelPackage $Excel -WorkSheetname "Winners" -column 7 -Heading "WinsToFast" -Value {"=E$row/C$row"} Set-Column -ExcelPackage $Excel -WorkSheetname "Winners" -column 7 -Heading "WinsToFast" -Value {"=E$row/C$row"}
6..7 | ForEach-Object { 6..7 | ForEach-Object {
Set-Format -Address $Excel.Workbook.Worksheets["Winners"].column($_) -NumberFormat "0.0%" -AutoFit } Set-Format -Address $Excel.Workbook.Worksheets["Winners"].column($_) -NumberFormat "0.0%" -AutoFit }
#Define a chart to show the relationship of lest on an XY Grid, create the ranges required in the, add the chart and show the file in Excel in excel after saving. #Define a chart to show the relationship of lest on an XY Grid, create the ranges required in the, add the chart and show the file in Excel in excel after saving.
$chart = New-ExcelChart -NoLegend -ChartType XYScatter -XRange WinsToFast -YRange WinsToPoles -ShowCategory -Column 7 -Width 2000 -Height 700 $chart = New-ExcelChart -NoLegend -ChartType XYScatter -XRange WinsToFast -YRange WinsToPoles -ShowCategory -Column 7 -Width 2000 -Height 700
Export-Excel -ExcelPackage $Excel -WorkSheetname "Winners" -AutoNameRange -ExcelChartDefinition $chart -Show Export-Excel -ExcelPackage $Excel -WorkSheetname "Winners" -AutoNameRange -ExcelChartDefinition $chart -Show

View File

@@ -1,17 +1,17 @@
ipmo C:\Users\mcp\Documents\GitHub\ImportExcel\ImportExcel.psd1 -Force try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Get-SQL -Session f1 -Excel -Connection C:\Users\mcp\OneDrive\Public\F1\f1Results.xlsx -showtables -Verbose Get-SQL -Session f1 -Excel -Connection C:\Users\mcp\OneDrive\Public\F1\f1Results.xlsx -showtables -Verbose
del .\demo3.xlsx Remove-Item .\demo3.xlsx
$session = $DbSessions["f1"] $session = $DbSessions["f1"]
$SQL = "SELECT top 25 DriverName, Count(RaceDate) as Races , $SQL = "SELECT top 25 DriverName, Count(RaceDate) as Races ,
Count(Win) as Wins, Count(Pole) as Poles, Count(FastestLap) as Fastlaps Count(Win) as Wins, Count(Pole) as Poles, Count(FastestLap) as Fastlaps
FROM Results GROUP BY DriverName FROM Results GROUP BY DriverName
order by (count(win)) desc" order by (count(win)) desc"
$Excel = Send-SQLDataToExcel -SQL $sql -Session $session -path .\demo3.xlsx -WorkSheetname "Winners" -AutoSize -AutoNameRange -BoldTopRow -FreezeTopRow -Passthru $Excel = Send-SQLDataToExcel -SQL $sql -Session $session -path .\demo3.xlsx -WorkSheetname "Winners" -AutoSize -AutoNameRange -BoldTopRow -FreezeTopRow -Passthru
$ws = $Excel.Workbook.Worksheets["Winners"] $ws = $Excel.Workbook.Worksheets["Winners"]
Set-Row -Worksheet $ws -Heading "Average" -Value {"=Average($columnName`2:$columnName$endrow)"} -NumberFormat "0.0" -Bold Set-Row -Worksheet $ws -Heading "Average" -Value {"=Average($columnName`2:$columnName$endrow)"} -NumberFormat "0.0" -Bold
Set-Column -Worksheet $ws -Heading "WinsToPoles" -Value {"=D$row/C$row"} -Column 6 -AutoSize -AutoNameRange Set-Column -Worksheet $ws -Heading "WinsToPoles" -Value {"=D$row/C$row"} -Column 6 -AutoSize -AutoNameRange

View File

@@ -1,9 +1,10 @@
 try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$p = ps | select Company, Handles | Export-Excel c:\temp\testBackgroundColor.xlsx -ClearSheet -KillExcel -PassThru
$p = Get-Process | Select-Object Company, Handles | Export-Excel c:\temp\testBackgroundColor.xlsx -ClearSheet -KillExcel -PassThru
$ws = $p.Workbook.WorkSheets[1] $ws = $p.Workbook.WorkSheets[1]
$totalRows = $ws.Dimension.Rows $totalRows = $ws.Dimension.Rows
Set-Format -Address $ws.Cells["B2:B$($totalRows)"] -BackgroundColor LightBlue Set-Format -Address $ws.Cells["B2:B$($totalRows)"] -BackgroundColor LightBlue
Export-Excel -ExcelPackage $p -show Export-Excel -ExcelPackage $p -show -AutoSize

View File

@@ -1,11 +1,14 @@
. ..\New-PSItem.ps1 try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
rm *.xlsx
#. ..\New-PSItem.ps1
Remove-Item *.xlsx
$( $(
New-PSItem 12001 Nails 37 3.99 =C2*D2 (echo ID Product Quantity Price Total) New-PSItem 12001 Nails 37 3.99 =C2*D2 (echo ID Product Quantity Price Total)
New-PSItem 12002 Hammer 5 12.10 =C3*D3 New-PSItem 12002 Hammer 5 12.10 =C3*D3
New-PSItem 12003 Saw 12 15.37 =C4*D4 New-PSItem 12003 Saw 12 15.37 =C4*D4
New-PSItem 12010 Drill 20 8 =C5*D5 New-PSItem 12010 Drill 20 8 =C5*D5
New-PSItem 12011 Crowbar 7 23.48 =C6*D6 New-PSItem 12011 Crowbar 7 23.48 =C6*D6
) | Export-Excel functions.xlsx -AutoSize -Show ) | Export-Excel functions.xlsx -AutoSize -Show

View File

@@ -1,3 +1,5 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item .\testFormula.xlsx -ErrorAction Ignore Remove-Item .\testFormula.xlsx -ErrorAction Ignore
@" @"

View File

@@ -1,12 +1,12 @@
. ..\New-PSItem.ps1 try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
rm *.xlsx Remove-Item *.xlsx
$( $(
New-PSItem =2%/12 60 500000 "=pmt(rate,nper,pv)" (echo rate nper pv pmt) New-PSItem =2%/12 60 500000 "=pmt(rate,nper,pv)" (echo rate nper pv pmt)
New-PSItem =3%/12 60 500000 "=pmt(rate,nper,pv)" New-PSItem =3%/12 60 500000 "=pmt(rate,nper,pv)"
New-PSItem =4%/12 60 500000 "=pmt(rate,nper,pv)" New-PSItem =4%/12 60 500000 "=pmt(rate,nper,pv)"
New-PSItem =5%/12 60 500000 "=pmt(rate,nper,pv)" New-PSItem =5%/12 60 500000 "=pmt(rate,nper,pv)"
New-PSItem =6%/12 60 500000 "=pmt(rate,nper,pv)" New-PSItem =6%/12 60 500000 "=pmt(rate,nper,pv)"
New-PSItem =7%/12 60 500000 "=pmt(rate,nper,pv)" New-PSItem =7%/12 60 500000 "=pmt(rate,nper,pv)"
) | Export-Excel functions.xlsx -AutoNameRange -AutoSize -Show ) | Export-Excel functions.xlsx -AutoNameRange -AutoSize -Show

View File

@@ -1,8 +1,10 @@
rm *.xlsx try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item *.xlsx
$( $(
New-PSItem '=Hyperlink("http://dougfinke.com/blog","Doug Finke")' @("Link") New-PSItem '=Hyperlink("http://dougfinke.com/blog","Doug Finke")' @("Link")
New-PSItem '=Hyperlink("http://blogs.msdn.com/b/powershell/","PowerShell Blog")' New-PSItem '=Hyperlink("http://blogs.msdn.com/b/powershell/","PowerShell Blog")'
New-PSItem '=Hyperlink("http://blogs.technet.com/b/heyscriptingguy/","Hey, Scripting Guy")' New-PSItem '=Hyperlink("http://blogs.technet.com/b/heyscriptingguy/","Hey, Scripting Guy")'
) | Export-Excel hyperlink.xlsx -AutoSize -Show ) | Export-Excel hyperlink.xlsx -AutoSize -Show

Binary file not shown.

View File

@@ -1,3 +1,7 @@
<#
Revisit I think yahoo deprecated their service
#>
function Get-StockInfo { function Get-StockInfo {
param( param(
$stock, $stock,
@@ -7,15 +11,15 @@ function Get-StockInfo {
Process { Process {
if(!$endDate) { $endDate = $startDate} if (!$endDate) { $endDate = $startDate}
$baseUrl = "http://query.yahooapis.com/v1/public/yql?q=" $baseUrl = "http://query.yahooapis.com/v1/public/yql?q="
$q = @" $q = @"
select * from yahoo.finance.historicaldata where symbol = "$($stock)" and startDate = "$($startDate.ToString('yyyy-MM-dd'))" and endDate = "$($endDate.ToString('yyyy-MM-dd'))" select * from yahoo.finance.historicaldata where symbol = "$($stock)" and startDate = "$($startDate.ToString('yyyy-MM-dd'))" and endDate = "$($endDate.ToString('yyyy-MM-dd'))"
"@ "@
$suffix = "&env=store://datatables.org/alltableswithkeys&format=json" $suffix = "&env=store://datatables.org/alltableswithkeys&format=json"
$r=Invoke-RestMethod ($baseUrl + $q + $suffix) $r = Invoke-RestMethod ($baseUrl + $q + $suffix)
$r.query.results.quote $r.query.results.quote
} }
} }

View File

@@ -1,14 +1,20 @@
$Symbol = "MSFT" <#
Revisit I think yahoo deprecated their service
#>
. .\Get-StockInfo.ps1 # try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
rm *.xlsx # $Symbol = "MSFT"
$chart = New-ExcelChart -XRange Date -YRange Volume ` # . .\Get-StockInfo.ps1
-ChartType ColumnStacked `
-Column 9 -Title "$Symbol Volume"
Get-StockInfo $Symbol 11/2 11/30 | # Remove-Item *.xlsx -ErrorAction Ignore
Export-Excel .\stocks.xlsx -Show `
-AutoSize -AutoNameRange ` # $chart = New-ExcelChart -XRange Date -YRange Volume `
-ExcelChartDefinition $chart # -ChartType ColumnStacked `
# -Column 9 -Title "$Symbol Volume"
# Get-StockInfo $Symbol 11/2 11/30 |
# Export-Excel .\stocks.xlsx -Show `
# -AutoSize -AutoNameRange `
# -ExcelChartDefinition $chart

BIN
Examples/Stocks/stocks.xlsx Normal file

Binary file not shown.

View File

@@ -1,38 +1,40 @@
$xlfile = "testData.xlsx" try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
rm *.xlsx
$r = dir C:\WINDOWS\system32 $xlfile = "testData.xlsx"
Remove-Item *.xlsx
$r = Get-ChildItem C:\WINDOWS\system32
$BySize=@{} $BySize=@{}
$r | ForEach{ $BySize.($_.extension)+=$_.length } $r | ForEach-Object{ $BySize.($_.extension)+=$_.length }
$top10BySize = $BySize.GetEnumerator() | $top10BySize = $BySize.GetEnumerator() |
ForEach{ [PSCustomObject]@{Name=$_.key;Size=[double]$_.value} } | ForEach-Object{ [PSCustomObject]@{Name=$_.key;Size=[double]$_.value} } |
Sort size -Descending | Sort-Object size -Descending |
Select -First 10 Select-Object -First 10
$top10ByCount = $r.extension | $top10ByCount = $r.extension |
Group | Group-Object |
Sort count -Descending | Sort-Object count -Descending |
Select -First 10 Name, count Select-Object -First 10 Name, count
$top10ByFileSize = $r | $top10ByFileSize = $r |
Sort length -Descending | Sort-Object length -Descending |
Select -First 10 Name, @{n="Size";e={$_.Length}} #,Extension,Path Select-Object -First 10 Name, @{n="Size";e={$_.Length}} #,Extension,Path
$top10BySize | Export-Excel $xlfile -WorkSheetname FileInfo -TableName ExtSize $top10BySize | Export-Excel $xlfile -WorkSheetname FileInfo -TableName ExtSize
$top10ByCount | Export-Excel $xlfile -WorkSheetname FileInfo -StartRow 13 -TableName ExtCount $top10ByCount | Export-Excel $xlfile -WorkSheetname FileInfo -StartRow 13 -TableName ExtCount
$top10ByFileSize | Export-Excel $xlfile -WorkSheetname FileInfo -StartRow 25 -AutoSize -TableName FileSize $top10ByFileSize | Export-Excel $xlfile -WorkSheetname FileInfo -StartRow 25 -AutoSize -TableName FileSize
$ps = ps | ? Company $ps = Get-Process | Where-Object Company
$ps | $ps |
sort handles -Descending | Sort-Object handles -Descending |
select -First 10 company, handles | Select-Object -First 10 company, handles |
Export-Excel $xlfile -WorkSheetname Handles -AutoSize -TableName Handles Export-Excel $xlfile -WorkSheetname Handles -AutoSize -TableName Handles
$ps | $ps |
sort PM -Descending | Sort-Object PM -Descending |
select -First 10 company, PM | Select-Object -First 10 company, PM |
Export-Excel $xlfile -WorkSheetname Handles -AutoSize -TableName PM -StartRow 13 -Show Export-Excel $xlfile -WorkSheetname Handles -AutoSize -TableName PM -StartRow 13 -Show

Binary file not shown.

View File

@@ -1,10 +1,11 @@
ipmo .\ImportExcel.psd1 -Force try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
. .\ConvertExcelToImageFile.ps1 . .\ConvertExcelToImageFile.ps1
$xlFileName = "C:\Temp\testPNG.xlsx" $xlFileName = "C:\Temp\testPNG.xlsx"
rm C:\Temp\testPNG.xlsx -ErrorAction Ignore Remove-Item C:\Temp\testPNG.xlsx -ErrorAction Ignore
$range = @" $range = @"
Region,Item,Cost Region,Item,Cost
@@ -16,8 +17,8 @@ North,Pear,1
South,Apple,2 South,Apple,2
East,Grapes,3 East,Grapes,3
West,Berry,4 West,Berry,4
"@ | ConvertFrom-Csv | "@ | ConvertFrom-Csv |
Export-Excel $xlFileName -ReturnRange ` Export-Excel $xlFileName -ReturnRange `
-ConditionalText (New-ConditionalText Apple), (New-ConditionalText Berry -ConditionalTextColor White -BackgroundColor Purple) -ConditionalText (New-ConditionalText Apple), (New-ConditionalText Berry -ConditionalTextColor White -BackgroundColor Purple)
Convert-XlRangeToImage -Path $xlFileName -workSheetname sheet1 -range $range -Show Convert-XlRangeToImage -Path $xlFileName -workSheetname sheet1 -range $range -Show

View File

@@ -4,7 +4,7 @@
RootModule = 'ImportExcel.psm1' RootModule = 'ImportExcel.psm1'
# Version number of this module. # Version number of this module.
ModuleVersion = '5.0.1' ModuleVersion = '5.1.0'
# 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'

View File

@@ -44,6 +44,7 @@ Begin {
'Import-Html.ps1', 'Import-Html.ps1',
'InferData.ps1', 'InferData.ps1',
'Invoke-Sum.ps1', 'Invoke-Sum.ps1',
'Join-Worksheet.ps1',
'Merge-Worksheet.ps1', 'Merge-Worksheet.ps1',
'New-ConditionalFormattingIconSet.ps1', 'New-ConditionalFormattingIconSet.ps1',
'New-ConditionalText.ps1', 'New-ConditionalText.ps1',

View File

@@ -162,20 +162,18 @@
$diffpart = @() $diffpart = @()
$refpart = @() $refpart = @()
foreach ($p in $proplist.Where({$key -ne $_}) ) {$refPart += $p ; $diffPart += "$DiffPrefix $p" } foreach ($p in $proplist.Where({$key -ne $_}) ) {$refPart += $p ; $diffPart += "$DiffPrefix $p" }
#Last reference column will be A if there the only one property (which might be the key), B if there are two properties, C if there are 3 etc $lastRefColNo = $proplist.count
$lastRefCol = [char](64 + $propList.count) $FirstDiffColNo = $lastRefColNo + 1
#First difference column will be the next one (we'll trap the case of only having the key later)
$FirstDiffCol = [char](65 + $propList.count)
if ($key -ne '*') { if ($key -ne '*') {
$outputProps = @($key) + $refpart + $diffpart $outputProps = @($key) + $refpart + $diffpart
#If we are using a single column as the key, don't duplicate it, so the last difference column will be A if there is one property, C if there are two, E if there are 3 #If we are using a single column as the key, don't duplicate it, so the last difference column will be A if there is one property, C if there are two, E if there are 3
$lastDiffCol = [char](63 + 2 * $propList.count) $lastDiffColNo = (2 * $proplist.count) - 1
} }
else { else {
$outputProps = @( ) + $refpart + $diffpart $outputProps = @( ) + $refpart + $diffpart
#If we not using a single column as a key all columns are duplicated so, the Last difference column will be B if there is one property, D if there are two, F if there are 3 #If we not using a single column as a key all columns are duplicated so, the Last difference column will be B if there is one property, D if there are two, F if there are 3
$lastDiffCol = [char](64 + 2 * $propList.count) $lastDiffColNo = (2 * $proplist.count )
} }
#Add RowNumber to every row #Add RowNumber to every row
@@ -265,12 +263,14 @@
Set-Format -WorkSheet $ws -Range $range -BackgroundColor $ChangeBackgroundColor Set-Format -WorkSheet $ws -Range $range -BackgroundColor $ChangeBackgroundColor
} }
elseif ( $expandedDiff[$i].side -eq "<=" ) { elseif ( $expandedDiff[$i].side -eq "<=" ) {
$range = "A" + ($i + 2 ) + ":" + $lastRefCol + ($i + 2 ) $rangeR1C1 = "R[{0}]C[1]:R[{0}]C[{1}]" -f ($i + 2 ) , $lastRefColNo
$range = [OfficeOpenXml.ExcelAddress]::TranslateFromR1C1($rangeR1C1,0,0)
Set-Format -WorkSheet $ws -Range $range -BackgroundColor $DeleteBackgroundColor Set-Format -WorkSheet $ws -Range $range -BackgroundColor $DeleteBackgroundColor
} }
elseif ( $expandedDiff[$i].side -eq "=>" ) { elseif ( $expandedDiff[$i].side -eq "=>" ) {
if ($propList.count -gt 1) { if ($propList.count -gt 1) {
$range = $FirstDiffCol + ($i + 2 ) + ":" + $lastDiffCol + ($i + 2 ) $rangeR1C1 = "R[{0}]C[{1}]:R[{0}]C[{2}]" -f ($i + 2 ) , $FirstDiffColNo , $lastDiffColNo
$range = [OfficeOpenXml.ExcelAddress]::TranslateFromR1C1($rangeR1C1,0,0)
Set-Format -WorkSheet $ws -Range $range -BackgroundColor $AddBackgroundColor Set-Format -WorkSheet $ws -Range $range -BackgroundColor $AddBackgroundColor
} }
Set-Format -WorkSheet $ws -Range ("A" + ($i + 2 )) -BackgroundColor $AddBackgroundColor Set-Format -WorkSheet $ws -Range ("A" + ($i + 2 )) -BackgroundColor $AddBackgroundColor

View File

@@ -1,7 +1,7 @@
- [ ] Create an autocomplete for WorkSheetName param on ImportExcel - [ ] Create an autocomplete for WorkSheetName param on ImportExcel
- [ ] Add help text for parmaters which don't have it ( PivotDataToColumn , NoClobber and CellStyleSB ) in Export Excel, copy to Send-SQLDataToExcel - [ ] Add help text for parmaters which don't have it ( PivotDataToColumn , NoClobber and CellStyleSB ) in Export Excel, copy to Send-SQLDataToExcel
- [ ] Add checks for valid worksheet names (also check pivot names, range names and table names are valid) - [ ] Add checks for valid worksheet names (also check pivot names, range names and table names are valid)
- [ ] Investigate regional support for number conversion - [ ] Investigate regional support for number conversion & possible date conversion
- [ ] Add help in ConvertToExcelXLSx.ps1, Copy-ExcelWorkSheet.ps1 (probably re-write copy) - [ ] Add help in ConvertToExcelXLSx.ps1, Copy-ExcelWorkSheet.ps1 (probably re-write copy)
- [ ] Add Help (continued) in Get-HTMLTable.ps1, GetRange.PS1, GetExcelTable.Ps1, Import-HTML.PS1, New-ConditionalFormattingIconSet.Ps1, NewConditionalText.PS1, New-Psitem.PS1, Remove-Worksheet.ps1 - [ ] Add Help (continued) in Get-HTMLTable.ps1, GetRange.PS1, GetExcelTable.Ps1, Import-HTML.PS1, New-ConditionalFormattingIconSet.Ps1, NewConditionalText.PS1, New-Psitem.PS1, Remove-Worksheet.ps1
[ ] Copy parameter help from function Add-ExcelChart into New-ExcelChart.ps1 [ ] Copy parameter help from function Add-ExcelChart into New-ExcelChart.ps1

View File

@@ -7,62 +7,62 @@ Import-Module $PSScriptRoot\..\ImportExcel.psd1 -Force
if (Get-process -Name Excel,xlim -ErrorAction SilentlyContinue) { Write-Warning -Message "You need to close Excel before running the tests." ; return} if (Get-process -Name Excel,xlim -ErrorAction SilentlyContinue) { Write-Warning -Message "You need to close Excel before running the tests." ; return}
Describe ExportExcel { Describe ExportExcel {
Context "#Example 1 # Creates and opens a file with the right number of rows and columns" { # Context "#Example 1 # Creates and opens a file with the right number of rows and columns" {
$path = "$env:TEMP\Test.xlsx" # $path = "$env:TEMP\Test.xlsx"
Remove-item -Path $path -ErrorAction SilentlyContinue # Remove-item -Path $path -ErrorAction SilentlyContinue
$processes = Get-Process # $processes = Get-Process
$propertyNames = $Processes[0].psobject.properties.name # $propertyNames = $Processes[0].psobject.properties.name
$rowcount = $Processes.Count # $rowcount = $Processes.Count
$Processes | Export-Excel $path -show # $Processes | Export-Excel $path -show
it "Created a new file " { # it "Created a new file " {
Test-Path -Path $path -ErrorAction SilentlyContinue | Should be $true # Test-Path -Path $path -ErrorAction SilentlyContinue | Should be $true
} # }
it "Started Excel to display the file " { # it "Started Excel to display the file " {
Get-process -Name Excel, xlim -ErrorAction SilentlyContinue | Should not benullorempty # Get-process -Name Excel, xlim -ErrorAction SilentlyContinue | Should not benullorempty
} # }
Start-Sleep -Seconds 5 ; # Start-Sleep -Seconds 5 ;
#Open-ExcelPackage with -Create is tested in Export-Excel # #Open-ExcelPackage with -Create is tested in Export-Excel
#This is a test of using it with -KillExcel # #This is a test of using it with -KillExcel
#TODO Need to test opening pre-existing file with no -create switch (and graceful failure when file does not exist) somewhere else # #TODO Need to test opening pre-existing file with no -create switch (and graceful failure when file does not exist) somewhere else
$Excel = Open-ExcelPackage -Path $path -KillExcel # $Excel = Open-ExcelPackage -Path $path -KillExcel
it "Killed Excel when Open-Excelpackage was told to " { # it "Killed Excel when Open-Excelpackage was told to " {
Get-process -Name Excel, xlim -ErrorAction SilentlyContinue | Should benullorempty # Get-process -Name Excel, xlim -ErrorAction SilentlyContinue | Should benullorempty
} # }
it "Created 1 worksheet " { # it "Created 1 worksheet " {
$Excel.Workbook.Worksheets.count | Should be 1 # $Excel.Workbook.Worksheets.count | Should be 1
} # }
$ws = $Excel.Workbook.Worksheets[1] # $ws = $Excel.Workbook.Worksheets[1]
it "Created the worksheet with the expected name, number of rows and number of columns " { # it "Created the worksheet with the expected name, number of rows and number of columns " {
$ws.Name | Should be "sheet1" # $ws.Name | Should be "sheet1"
$ws.Dimension.Columns | Should be $propertyNames.Count # $ws.Dimension.Columns | Should be $propertyNames.Count
$ws.Dimension.Rows | Should be ($rowcount + 1) # $ws.Dimension.Rows | Should be ($rowcount + 1)
} # }
$headingNames = $ws.cells["1:1"].Value # $headingNames = $ws.cells["1:1"].Value
it "Created the worksheet with the correct header names " { # it "Created the worksheet with the correct header names " {
foreach ($p in $propertyNames) { # foreach ($p in $propertyNames) {
$headingnames -contains $p | Should be $true # $headingnames -contains $p | Should be $true
} # }
} # }
it "Formatted the process StartTime field as 'local short date' " { # it "Formatted the process StartTime field as 'local short date' " {
$STHeader = $ws.cells["1:1"].where( {$_.Value -eq "StartTime"})[0] # $STHeader = $ws.cells["1:1"].where( {$_.Value -eq "StartTime"})[0]
$STCell = $STHeader.Address -replace '1$', '2' # $STCell = $STHeader.Address -replace '1$', '2'
$ws.cells[$stcell].Style.Numberformat.NumFmtID | Should be 22 # $ws.cells[$stcell].Style.Numberformat.NumFmtID | Should be 22
} # }
it "Formatted the process ID field as 'General' " { # it "Formatted the process ID field as 'General' " {
$IDHeader = $ws.cells["1:1"].where( {$_.Value -eq "ID"})[0] # $IDHeader = $ws.cells["1:1"].where( {$_.Value -eq "ID"})[0]
$IDCell = $IDHeader.Address -replace '1$', '2' # $IDCell = $IDHeader.Address -replace '1$', '2'
$ws.cells[$IDcell].Style.Numberformat.NumFmtID | Should be 0 # $ws.cells[$IDcell].Style.Numberformat.NumFmtID | Should be 0
} # }
} # }
Context " # NoAliasOrScriptPropeties -ExcludeProperty and -DisplayPropertySet work" { Context " # NoAliasOrScriptPropeties -ExcludeProperty and -DisplayPropertySet work" {
$path = "$env:TEMP\Test.xlsx" $path = "$env:TEMP\Test.xlsx"
@@ -408,7 +408,7 @@ Describe ExportExcel {
$PTws.PivotTables.Count | Should be 1 $PTws.PivotTables.Count | Should be 1
$Excel.Workbook.Worksheets["Processes"] | Should not beNullOrEmpty $Excel.Workbook.Worksheets["Processes"] | Should not beNullOrEmpty
$Excel.Workbook.Worksheets.Count | Should beGreaterThan 2 $Excel.Workbook.Worksheets.Count | Should beGreaterThan 2
$excel.Workbook.Worksheets["Processes"].Dimension.rows | Should be 51 #50 data + 1 header # $excel.Workbook.Worksheets["Processes"].Dimension.rows | Should be 51 #50 data + 1 header
} }
$pt = $PTws.PivotTables[0] $pt = $PTws.PivotTables[0]
it "Built the expected Pivot table " { it "Built the expected Pivot table " {
@@ -438,9 +438,9 @@ Describe ExportExcel {
$pt = $Excel.Workbook.Worksheets["ProcessesPivotTable"].PivotTables[0] $pt = $Excel.Workbook.Worksheets["ProcessesPivotTable"].PivotTables[0]
it "Appended to the Worksheet and Extended the Pivot table " { it "Appended to the Worksheet and Extended the Pivot table " {
$Excel.Workbook.Worksheets.Count | Should be $wCount $Excel.Workbook.Worksheets.Count | Should be $wCount
$excel.Workbook.Worksheets["Processes"].Dimension.rows | Should be 101 #appended 50 rows to the previous total # $excel.Workbook.Worksheets["Processes"].Dimension.rows | Should be 101 #appended 50 rows to the previous total
$pt.CacheDefinition.CacheDefinitionXml.pivotCacheDefinition.cacheSource.worksheetSource.ref | # $pt.CacheDefinition.CacheDefinitionXml.pivotCacheDefinition.cacheSource.worksheetSource.ref |
Should be "A1:E101" # Should be "A1:E101"
} }
it "Generated a message on extending the Pivot table " { it "Generated a message on extending the Pivot table " {
$warnVar | Should not beNullOrEmpty $warnVar | Should not beNullOrEmpty
@@ -641,7 +641,7 @@ Describe ExportExcel {
Should be $sheet.Dimension.address Should be $sheet.Dimension.address
} }
} }
Context " # Chart from MultiSeries.ps1 in the Examples\charts Directory" { Context " # Chart from MultiSeries.ps1 in the Examples\charts Directory" {
$path = "$env:TEMP\Test.xlsx" $path = "$env:TEMP\Test.xlsx"
Remove-Item -Path $path -ErrorAction SilentlyContinue Remove-Item -Path $path -ErrorAction SilentlyContinue
@@ -655,40 +655,40 @@ Describe ExportExcel {
$data[1].VirtualMemorySize | Should not beNullOrEmpty $data[1].VirtualMemorySize | Should not beNullOrEmpty
} }
$c = New-ExcelChartDefinition -Title Stats -ChartType LineMarkersStacked -XRange "Processes[Name]" -YRange "Processes[PM]", "Processes[VirtualMemorySize]" -SeriesHeader 'PM', 'VMSize' $c = New-ExcelChartDefinition -Title Stats -ChartType LineMarkersStacked -XRange "Processes[Name]" -YRange "Processes[PM]", "Processes[VirtualMemorySize]" -SeriesHeader 'PM', 'VMSize'
it "Created the Excel chart definition " { it "Created the Excel chart definition " {
$c | Should not beNullOrEmpty $c | Should not beNullOrEmpty
$c.ChartType.gettype().name | Should be "eChartType" $c.ChartType.gettype().name | Should be "eChartType"
$c.ChartType.tostring() | Should be "LineMarkersStacked" $c.ChartType.tostring() | Should be "LineMarkersStacked"
$c.yrange -is [array] | Should be $true $c.yrange -is [array] | Should be $true
$c.yrange.count | Should be 2 $c.yrange.count | Should be 2
$c.yrange[0] | Should be "Processes[PM]" $c.yrange[0] | Should be "Processes[PM]"
$c.yrange[1] | Should be "Processes[VirtualMemorySize]" $c.yrange[1] | Should be "Processes[VirtualMemorySize]"
$c.xrange | Should be "Processes[Name]" $c.xrange | Should be "Processes[Name]"
$c.Title | Should be "Stats" $c.Title | Should be "Stats"
$c.Nolegend | Should not be $true $c.Nolegend | Should not be $true
$c.ShowCategory | Should not be $true $c.ShowCategory | Should not be $true
$c.ShowPercent | Should not be $true $c.ShowPercent | Should not be $true
} }
$data | Export-Excel $path -AutoSize -TableName Processes -ExcelChartDefinition $c $data | Export-Excel $path -AutoSize -TableName Processes -ExcelChartDefinition $c
$excel = Open-ExcelPackage -Path $path $excel = Open-ExcelPackage -Path $path
$drawings = $excel.Workbook.Worksheets[1].drawings $drawings = $excel.Workbook.Worksheets[1].drawings
it "Used the Excel chart definition with Export-Excel " { it "Used the Excel chart definition with Export-Excel " {
$drawings.count | Should be 1 $drawings.count | Should be 1
$drawings[0].ChartType | Should be "LineMarkersStacked" $drawings[0].ChartType | Should be "LineMarkersStacked"
$drawings[0].Series.count | Should be 2 $drawings[0].Series.count | Should be 2
$drawings[0].Series[0].Series | Should be "'Sheet1'!Processes[PM]" $drawings[0].Series[0].Series | Should be "'Sheet1'!Processes[PM]"
$drawings[0].Series[0].XSeries | Should be "'Sheet1'!Processes[Name]" $drawings[0].Series[0].XSeries | Should be "'Sheet1'!Processes[Name]"
$drawings[0].Series[1].Series | Should be "'Sheet1'!Processes[VirtualMemorySize]" $drawings[0].Series[1].Series | Should be "'Sheet1'!Processes[VirtualMemorySize]"
$drawings[0].Series[1].XSeries | Should be "'Sheet1'!Processes[Name]" $drawings[0].Series[1].XSeries | Should be "'Sheet1'!Processes[Name]"
$drawings[0].Title.text | Should be "Stats" $drawings[0].Title.text | Should be "Stats"
} }
Close-ExcelPackage $excel Close-ExcelPackage $excel
} }
Context " # variation of plot.ps1 from Examples Directory using Add chart outside ExportExcel" { Context " # variation of plot.ps1 from Examples Directory using Add chart outside ExportExcel" {
$path = "$env:TEMP\Test.xlsx" $path = "$env:TEMP\Test.xlsx"
$excel = 0..360 | ForEach-Object {[pscustomobject][ordered]@{x = $_; Sinx = "=Sin(Radians(x)) "}} | Export-Excel -AutoNameRange -Path $path -WorkSheetname SinX -ClearSheet -PassThru $excel = 0..360 | ForEach-Object {[pscustomobject][ordered]@{x = $_; Sinx = "=Sin(Radians(x)) "}} | Export-Excel -AutoNameRange -Path $path -WorkSheetname SinX -ClearSheet -PassThru
Add-ExcelChart -Worksheet $excel.Workbook.Worksheets["Sinx"] -XRange "X" -YRange "Sinx" -Title "Graph of Sine X" -ChartType line -SeriesHeader "Sin(x)" -Column 2 -ColumnOffSetPixels 35 -TitleBold -TitleSize 14 -XAxisTitleText "Degrees" -XAxisTitleBold -XAxisTitleSize 12 -XMajorUnit 30 -XMinorUnit 10 -XMinValue 0 -XMaxValue 361 -Width 800 -YMinValue -1.25 -YMaxValue 1.25 -YMajorUnit 0.25 -YAxisNumberformat "0.00" -LegendPostion Bottom -LegendSize 8 -legendBold Add-ExcelChart -Worksheet $excel.Workbook.Worksheets["Sinx"] -XRange "X" -YRange "Sinx" -Title "Graph of Sine X" -ChartType line -SeriesHeader "Sin(x)" -Column 2 -ColumnOffSetPixels 35 -TitleBold -TitleSize 14 -XAxisTitleText "Degrees" -XAxisTitleBold -XAxisTitleSize 12 -XMajorUnit 30 -XMinorUnit 10 -XMinValue 0 -XMaxValue 361 -Width 800 -YMinValue -1.25 -YMaxValue 1.25 -YMajorUnit 0.25 -YAxisNumberformat "0.00" -LegendPostion Bottom -LegendSize 8 -legendBold
$d = $excel.Workbook.Worksheets["Sinx"].Drawings[0] $d = $excel.Workbook.Worksheets["Sinx"].Drawings[0]
It "Controled the axes and title and legend of the chart" { It "Controled the axes and title and legend of the chart" {
@@ -698,23 +698,23 @@ Describe ExportExcel {
$d.XAxis.Title.Text | Should be "degrees" $d.XAxis.Title.Text | Should be "degrees"
$d.XAxis.Title.Font.bold | Should be $true $d.XAxis.Title.Font.bold | Should be $true
$d.XAxis.Title.Font.Size | Should be 12 $d.XAxis.Title.Font.Size | Should be 12
$d.XAxis.MajorUnit | Should be 30 $d.XAxis.MajorUnit | Should be 30
$d.XAxis.MinorUnit | Should be 10 $d.XAxis.MinorUnit | Should be 10
$d.XAxis.MinValue | Should be 0 $d.XAxis.MinValue | Should be 0
$d.XAxis.MaxValue | Should be 361 $d.XAxis.MaxValue | Should be 361
$d.YAxis.Format | Should be "0.00" $d.YAxis.Format | Should be "0.00"
$d.Title.Text | Should be "Graph of Sine X" $d.Title.Text | Should be "Graph of Sine X"
$d.Title.Font.Bold | Should be $true $d.Title.Font.Bold | Should be $true
$d.Title.Font.Size | Should be 14 $d.Title.Font.Size | Should be 14
$d.yAxis.MajorUnit | Should be 0.25 $d.yAxis.MajorUnit | Should be 0.25
$d.yAxis.MaxValue | Should be 1.25 $d.yAxis.MaxValue | Should be 1.25
$d.yaxis.MinValue | Should be -1.25 $d.yaxis.MinValue | Should be -1.25
$d.Legend.Position.ToString() | Should be "Bottom" $d.Legend.Position.ToString() | Should be "Bottom"
$d.Legend.Font.Bold | Should be $true $d.Legend.Font.Bold | Should be $true
$d.Legend.Font.Size | Should be 8 $d.Legend.Font.Size | Should be 8
$d.ChartType.tostring() | Should be "line" $d.ChartType.tostring() | Should be "line"
$d.From.Column | Should be 2 $d.From.Column | Should be 2
} }
Close-ExcelPackage -ExcelPackage $excel -nosave Close-ExcelPackage -ExcelPackage $excel -nosave
} }

BIN
fib.xlsx Normal file

Binary file not shown.