Compare commits

..

96 Commits

Author SHA1 Message Date
dfinke
4fee745a7f Fix brace 2019-12-07 11:05:42 -05:00
dfinke
8b5fa9e798 Updated msg for Autosize on Linux 2019-12-07 10:59:34 -05:00
dfinke
4608c0bd04 updated 2019-12-05 18:20:43 -05:00
dfinke
c0b3297bd7 add link 2019-12-05 18:20:21 -05:00
dfinke
1baed182c3 Updated 2019-12-05 18:19:32 -05:00
dfinke
270a5d921c Start on readme 2019-12-05 18:03:13 -05:00
dfinke
a1ef937619 bump version 2019-12-05 18:03:02 -05:00
Doug Finke
481e2c6cc8 Merge pull request #743 from dfinke/refactor
Refactor
2019-12-05 17:40:56 -05:00
Doug Finke
0bf85de2a2 Merge pull request #738 from jhoneill/refactor
Refactor
2019-12-05 17:32:03 -05:00
jhoneill
1667ba33eb Fix error caused by empty private dir 2019-12-01 22:48:11 +00:00
jhoneill
b534bd974b Repeat 2019-12-01 22:43:37 +00:00
jhoneill
d89346c89c Fix CI getting out of sync with directory changes 2019-12-01 22:39:53 +00:00
jhoneill
229f69313b final tidy for PR 2019-12-01 22:30:57 +00:00
jhoneill
a37f6f3754 Relocate files (hopefully final!) 2019-12-01 18:46:45 +00:00
jhoneill
88e2a23e1b directory renames 2019-12-01 17:04:27 +00:00
jhoneill
6b033d7451 Fix for CI 2019-12-01 00:15:05 +00:00
jhoneill
d1c347285f Move DLL load into PSD1 2019-11-30 15:28:31 +00:00
jhoneill
6508043bc0 Make Update-1st object props an advanced cmdlet & faster 2019-11-30 15:28:05 +00:00
jhoneill
163eaebf66 Merge branch 'refactor' of https://github.com/dfinke/ImportExcel into refactor 2019-11-30 14:22:18 +00:00
jhoneill
5e87c3f6a7 fixes to casing, and some basic functions changed to advanced 2019-11-25 23:40:51 +00:00
jhoneill
feb493e397 fix naming consitency (case mostly) 2019-11-25 01:01:55 +00:00
jhoneill
f6c66e21a7 Sync to Doug's 6.5.3 release 2019-11-23 16:12:29 +00:00
dfinke
02d2fa9975 Updated change notes 2019-11-23 09:09:22 -05:00
dfinke
eb3a394013 bump version 2019-11-23 09:06:26 -05:00
Doug Finke
b517b0a974 Merge pull request #726 from ili101/PipelineVariable
support PipelineVariable
2019-11-23 09:01:05 -05:00
Doug Finke
d56fd89557 Merge pull request #732 from beckerben/master
Fix for #512 & #525
2019-11-23 08:51:15 -05:00
Doug Finke
9d2a1e4d47 Merge pull request #729 from jhoneill/master
Fix for #720,  plus some linting

- #730 Send-SQLDataToExcel -Append // The last row of data is overwritten by a header
- #720 Incorrect table when supplying DataTable with zero rows
2019-11-23 08:02:32 -05:00
ili101
5f3c41e669 Support multiple Paths from pipeline and param 2019-11-22 05:09:00 +02:00
jhoneill
d4da73e8f4 file list no longer needed 2019-11-22 00:52:34 +00:00
jhoneill
0d0fd5ac80 Merge branch 'refactor' of https://github.com/jhoneill/ImportExcel into refactor 2019-11-21 21:44:56 +00:00
jhoneill
3fb3ba0e0e Add test for new table support in export 2019-11-21 21:43:58 +00:00
jhoneill
e49b4ee6e8 Add test for new table support in export 2019-11-21 21:04:32 +00:00
jhoneill
5595aee407 sync export changes from master into refactor 2019-11-21 20:35:17 +00:00
jhoneill
c38adba49d Add tests for improved datatable handling in export 2019-11-21 20:22:06 +00:00
jhoneill
30e4515287 improve DataTable passing to Export 2019-11-21 20:20:56 +00:00
jhoneill
e42f23cd7c Major linting push 2019-11-21 17:29:58 +00:00
jhoneill
5fee49967a sync export with master updtes for #720 2019-11-21 08:42:51 +00:00
jhoneill
98b91ce19d Fix append behavior passing data tables to export 2019-11-21 07:40:21 +00:00
jhoneill
5aa841c225 aggressive linting 2019-11-20 19:14:19 +00:00
jhoneill
aaf18b4d9a Linting mostly 2019-11-20 19:07:22 +00:00
jhoneill
2e0cd4f97d Linting 2019-11-20 18:27:17 +00:00
Ben Becker
e132755061 Fix for #512 & #525
There is an issue with the ConvertFromExcelToSQLInsert where a quote in the text will not be converted properly and will cause invalid insert statements to be created, this commit makes the correction to handle the scenario.
2019-11-20 09:32:32 -05:00
Ben Becker
5617a960ec fix for #512 & #525
There is an issue with the ConvertFromExcelToSQLInsert where a quote in the text will not be converted properly and will cause invalid insert statements to be created, this commit makes the correction to handle the scenario.
2019-11-20 08:13:11 -05:00
jhoneill
873f1a365b Merge pull request #2 from ili101/xml
EPPlus empty row on an empty table
2019-11-19 11:39:03 +00:00
ili101
cc7d18cc59 EPPlus empty row on an empty table 2019-11-18 12:21:21 +02:00
jhoneill
f27729d2ab Remove 72 empty catch blocks and Loadpsd1 2019-11-18 07:50:20 +00:00
jhoneill
d3a2edcc5f default CI/Install-PowerShell version to stable release 2019-11-18 01:32:14 +00:00
jhoneill
cc5eff1157 sync export-excel to 321699e spec. 2019-11-18 01:30:37 +00:00
jhoneill
66bf3adf17 remove LoadPSD calls & 72 empty catch blocks from examples 2019-11-17 22:45:29 +00:00
jhoneill
36f27e3d40 commented pull request 2019-11-17 22:43:42 +00:00
jhoneill
a7104b729c Merge pull request #1 from ili101/jhoneillDTT
Some Fixes
2019-11-17 20:28:51 +00:00
ili101
2ef632ad32 support PipelineVariable 2019-11-17 22:20:54 +02:00
ili101
43927ca078 Export-Excel.ps1
532: Now mode TableName is auto generated if not specified (shouldn't matter just in case).
632: Fix -DataTable "" to use LoadFromDataTable with style (auto generated name)
820: DataTable + TableStyle without TableName corruption fix. Also simplified even more.
822: Change back to "-TableName $TableName" as cange broke test:
Export-Excel.Tests.ps1
617: Undo change test was correct.
2019-11-17 19:58:14 +02:00
jhoneill
1f767338f2 Fix path error in PSM1 2019-11-17 16:04:10 +00:00
jhoneill
6d97018de6 Move help from Comment-based to md. Relocate functions (sans help) 2019-11-17 15:30:15 +00:00
dfinke
6f2e7d682b Added items for next release 2019-11-16 10:21:48 -05:00
jhoneill
07b36e5e56 improve table options on export 2019-11-16 11:01:57 +00:00
jhoneill
16bc380b65 Fix datatable issues with duplicate names & empty tables 2019-11-16 00:33:53 +00:00
jhoneill
d378674d30 Merge remote-tracking branch 'upstream/master' 2019-11-10 18:46:37 +00:00
Doug Finke
5959a97439 Merge pull request #713 from dfinke/FixImportExcelHeaders
Fix import excel headers
2019-11-10 08:57:36 -05:00
jhoneill
3def13e1d9 Merge remote-tracking branch 'upstream/master' 2019-11-10 13:33:27 +00:00
jhoneill
e2c6495340 Re-enabled compare worksheet test on V6. 2019-11-10 13:29:17 +00:00
dfinke
ef6defd75c Change the order of HeaderName and NoHeader. Adding tests. 2019-11-08 16:07:14 -05:00
dfinke
076a494523 Add tests for ImportExcel 2019-11-04 17:06:36 -05:00
dfinke
031c9b9c73 Add If to test for headername parameter 2019-11-04 17:06:26 -05:00
dfinke
321699e427 Update readme about CI improvements 2019-11-03 09:02:04 -05:00
Doug Finke
98b82fc3ba Merge pull request #691 from ili101/ScriptAnalyzer
ScriptAnalyzer 

- Module.Template update
- ScriptAnalyzer report is generated
2019-11-03 08:34:08 -05:00
ili101
394210d41f Module.Template 2.0.4 Update 2019-11-02 18:26:11 +02:00
dfinke
9afc1dbec2 Update readme 2019-11-02 08:54:34 -04:00
dfinke
7e684b87e3 Version should be 6.5.2 2019-11-02 08:54:26 -04:00
dfinke
6b9aed612c Added modules back to the gallery. 2019-11-02 08:54:04 -04:00
dfinke
2647081312 tweak readme 2019-11-01 19:27:27 -04:00
dfinke
e6827ba2c5 Updated readme 2019-11-01 19:10:05 -04:00
dfinke
c6b188f915 bump version 2019-11-01 19:09:48 -04:00
dfinke
3f79a43dc4 Remove requires, formatting updated 2019-11-01 19:04:22 -04:00
Doug Finke
53e57b25a6 Merge pull request #706 from jhoneill/master
SQL -Force , import -asText , test fixes, better Linux behavior
2019-11-01 18:57:02 -04:00
Doug Finke
b87fcf6c08 Merge pull request #711 from uSlackr/patch-2
Adding test for Get-ColumnName for https://github.com/dfinke/ImportExcel/issues/708
2019-11-01 18:53:48 -04:00
Doug Finke
35066c0f5d Merge pull request #710 from uSlackr/patch-1
Fixes Column order issue for https://github.com/dfinke/ImportExcel/issues/708
2019-11-01 18:53:14 -04:00
uSlackr
912fc35693 Update Get-ExcelColumnName.Test.ps1 2019-11-01 17:15:27 -04:00
uSlackr
2711ad5522 Adding test for Get-ColumnName 2019-11-01 17:13:10 -04:00
uSlackr
79c3077162 Fixes Column order issue
Column letters were returned out of order.  Issue #708
2019-11-01 13:41:31 -04:00
jhoneill
24ca8da4c3 Merge remote-tracking branch 'upstream/master' 2019-11-01 01:57:47 +00:00
jhoneill
6b626e8f5f Better handling of autosize (again) 2019-11-01 01:57:04 +00:00
jhoneill
4d17a09537 Better .NET version detection 2019-11-01 01:56:11 +00:00
jhoneill
065fc2f1ad Better handling of linux autosize issue. 2019-10-31 15:48:49 +00:00
jhoneill
c71afe802e *Selective* -asText on import & 1 linux test bug 2019-10-31 15:47:44 +00:00
jhoneill
3284f592b9 -Force behavior clearer in Send-SQLData 2019-10-31 10:31:54 +00:00
jhoneill
5d92442488 New tests for import -asText and send-SQL -Force 2019-10-30 17:38:09 +00:00
jhoneill
fb9a592e9e Wasn't removing force from Param to passed thru 2019-10-30 16:16:41 +00:00
jhoneill
d2a378ffda Ensured tests the module in Azure CI 2019-10-30 11:55:54 +00:00
jhoneill
463944ae2d Added support for Send-SQLData -force 2019-10-30 10:59:45 +00:00
jhoneill
34fe2f429a Added support for Import-Excel -ASTEXT 2019-10-30 10:59:23 +00:00
jhoneill
f65e198986 Adaptation for V6 broke under V5. Fixed 2019-10-30 10:58:59 +00:00
dfinke
9e92f2dbc6 Refactored 2019-09-22 11:58:13 -04:00
dfinke
e45c07c40b Add ReadAllSheets example, update readme bump version 2019-09-22 11:43:47 -04:00
dfinke
fbae59b386 Bumped the version 2019-08-31 19:40:42 -04:00
272 changed files with 42401 additions and 5995 deletions

2
.gitignore vendored
View File

@@ -63,3 +63,5 @@ ImportExcel.zip
.vscode/settings.json .vscode/settings.json
~$* ~$*
# InstallModule.ps1
# PublishToGallery.ps1

View File

@@ -1,99 +0,0 @@
Function Add-ExcelDataValidationRule {
<#
.Synopsis
Adds data validation to a range of cells
.Example
>
>Add-ExcelDataValidationRule -WorkSheet $PlanSheet -Range 'E2:E1001' -ValidationType Integer -Operator between -Value 0 -Value2 100 `
-ShowErrorMessage -ErrorStyle stop -ErrorTitle 'Invalid Data' -ErrorBody 'Percentage must be a whole number between 0 and 100'
This defines a validation rule on cells E2-E1001; it is an integer rule and requires a number between 0 and 100
If a value is input with a fraction, negative number, or positive number > 100 a stop dialog box appears.
.Example
>
>Add-ExcelDataValidationRule -WorkSheet $PlanSheet -Range 'B2:B1001' -ValidationType List -Formula 'values!$a$2:$a$1000'
-ShowErrorMessage -ErrorStyle stop -ErrorTitle 'Invalid Data' -ErrorBody 'You must select an item from the list'
This defines a list rule on Cells B2:1001, and the posible values are in a sheet named "values" at cells A2 to A1000
Blank cells in this range are ignored. If $ signs are left out of the fomrmula B2 would be checked against A2-A1000
B3, against A3-A1001, B4 against A4-A1002 up to B1001 beng checked against A1001-A1999
.Example
>
>Add-ExcelDataValidationRule -WorkSheet $PlanSheet -Range 'I2:N1001' -ValidationType List -ValueSet @('yes','YES','Yes')
-ShowErrorMessage -ErrorStyle stop -ErrorTitle 'Invalid Data' -ErrorBody "Select Yes or leave blank for no"
Similar to the previous example but this time provides a value set; Excel comparisons are case sesnsitive, hence 3 versions of Yes.
#>
[CmdletBinding()]
Param(
#The range of cells to be validate, e.g. "B2:C100"
[Parameter(ValueFromPipeline = $true,Position=0)]
[Alias("Address")]
$Range ,
#The worksheet where the cells should be validated
[OfficeOpenXml.ExcelWorksheet]$WorkSheet ,
#An option corresponding to a choice from the 'Allow' pull down on the settings page in the Excel dialog. Any means "any allowed" i.e. no Validation
[ValidateSet('Any','Custom','DateTime','Decimal','Integer','List','TextLength','Time')]
$ValidationType,
#The operator to apply to Decimal, Integer, TextLength, DateTime and time fields, e.g. equal, between
[OfficeOpenXml.DataValidation.ExcelDataValidationOperator]$Operator = [OfficeOpenXml.DataValidation.ExcelDataValidationOperator]::equal ,
#For Decimal, Integer, TextLength, DateTime the [first] data value
$Value,
#When using the between operator, the second data value
$Value2,
#The [first] data value as a formula. Use absolute formulas $A$1 if (e.g.) you want all cells to check against the same list
$Formula,
#When using the between operator, the second data value as a formula
$Formula2,
#When using the list validation type, a set of values (rather than refering to Sheet!B$2:B$100 )
$ValueSet,
#Corresponds to the the 'Show Error alert ...' check box on error alert page in the Excel dialog
[switch]$ShowErrorMessage,
#Stop, Warning, or Infomation, corresponding to to the style setting in the Excel dialog
[OfficeOpenXml.DataValidation.ExcelDataValidationWarningStyle]$ErrorStyle,
#The title for the message box corresponding to to the title setting in the Excel dialog
[String]$ErrorTitle,
#The error message corresponding to to the Error message setting in the Excel dialog
[String]$ErrorBody,
#Corresponds to the the 'Show Input message ...' check box on input message page in the Excel dialog
[switch]$ShowPromptMessage,
#The prompt message corresponding to to the Input message setting in the Excel dialog
[String]$PromptBody,
#The title for the message box corresponding to to the title setting in the Excel dialog
[String]$PromptTitle,
#By default the 'Ignore blank' option will be selected, unless NoBlank is sepcified.
[String]$NoBlank
)
if ($Range -is [Array]) {
$null = $PSBoundParameters.Remove("Range")
$Range | Add-ExcelDataValidationRule @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 (-not $WorkSheet -and $Range.worksheet) {$WorkSheet = $Range.worksheet}
if ($Range.Address) {$Range = $Range.Address}
if ($Range -isnot [string] -or -not $WorkSheet) {Write-Warning -Message "You need to provide a worksheet and range of cells." ;return}
#else we assume Range is a range.
$validation = $WorkSheet.DataValidations."Add$ValidationType`Validation"($Range)
if ($validation.AllowsOperator) {$validation.Operator = $Operator}
if ($PSBoundParameters.ContainsKey('value')) {
$validation.Formula.Value = $Value
}
elseif ($Formula) {$validation.Formula.ExcelFormula = $Formula}
elseif ($ValueSet) {Foreach ($v in $ValueSet) {$validation.Formula.Values.Add($V)}}
if ($PSBoundParameters.ContainsKey('Value2')) {
$validation.Formula2.Value = $Value2
}
elseif ($Formula2) {$validation.Formula2.ExcelFormula = $Formula}
$validation.ShowErrorMessage = [bool]$ShowErrorMessage
$validation.ShowInputMessage = [bool]$ShowPromptMessage
$validation.AllowBlank = -not $NoBlank
if ($PromptTitle) {$validation.PromptTitle = $PromptTitle}
if ($ErrorTitle) {$validation.ErrorTitle = $ErrorTitle}
if ($PromptBody) {$validation.Prompt = $PromptBody}
if ($ErrorBody) {$validation.Error = $ErrorBody}
if ($ErrorStyle) {$validation.ErrorStyle = $ErrorStyle}
}
}

133
ArgumentCompletion.ps1 Normal file
View File

@@ -0,0 +1,133 @@
function ColorCompletion {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
[System.Drawing.KnownColor].GetFields() | Where-Object {$_.IsStatic -and $_.name -like "$wordToComplete*" } |
Sort-Object name | ForEach-Object {New-CompletionResult $_.name $_.name
}
}
function ListFonts {
[CmdletBinding()]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingEmptyCatchBlock", "")]
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
if (-not $script:FontFamilies) {
$script:FontFamilies = @("","")
try {
$script:FontFamilies = (New-Object System.Drawing.Text.InstalledFontCollection).Families.Name
}
catch {}
}
$script:FontFamilies.where({$_ -Gt "" -and $_ -like "$wordToComplete*"} ) | ForEach-Object {
New-Object -TypeName System.Management.Automation.CompletionResult -ArgumentList "'$_'" , $_ ,
([System.Management.Automation.CompletionResultType]::ParameterValue) , $_
}
}
function NumberFormatCompletion {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
$numformats = [ordered]@{
"General" = "General" # format ID 0
"Number" = "0.00" # format ID 2
"Percentage" = "0.00%" # format ID 10
"Scientific" = "0.00E+00" # format ID 11
"Fraction" = "# ?/?" # format ID 12
"Short Date" = "Localized" # format ID 14 - will be translated to "mm-dd-yy" which is localized on load by Excel.
"Short Time" = "Localized" # format ID 20 - will be translated to "h:mm" which is localized on load by Excel.
"Long Time" = "Localized" # format ID 21 - will be translated to "h:mm:ss" which is localized on load by Excel.
"Date-Time" = "Localized" # format ID 22 - will be translated to "m/d/yy h:mm" which is localized on load by Excel.
"Currency" = [cultureinfo]::CurrentCulture.NumberFormat.CurrencySymbol + "#,##0.00"
"Text" = "@" # format ID 49
"h:mm AM/PM" = "h:mm AM/PM" # format ID 18
"h:mm:ss AM/PM" = "h:mm:ss AM/PM" # format ID 19
"mm:ss" = "mm:ss" # format ID 45
"[h]:mm:ss" = "Elapsed hours" # format ID 46
"mm:ss.0" = "mm:ss.0" # format ID 47
"d-mmm-yy" = "Localized" # format ID 15 which is localized on load by Excel.
"d-mmm" = "Localized" # format ID 16 which is localized on load by Excel.
"mmm-yy" = "mmm-yy" # format ID 17 which is localized on load by Excel.
"0" = "Whole number" # format ID 1
"0.00" = "Number, 2 decimals" # format ID 2 or "number"
"#,##0" = "Thousand separators" # format ID 3
"#,##0.00" = "Thousand separators and 2 decimals" # format ID 4
"#," = "Whole thousands"
"#.0,," = "Millions, 1 Decimal"
"0%" = "Nearest whole percentage" # format ID 9
"0.00%" = "Percentage with decimals" # format ID 10 or "Percentage"
"00E+00" = "Scientific" # format ID 11 or "Scientific"
"# ?/?" = "One Digit fraction" # format ID 12 or "Fraction"
"# ??/??" = "Two Digit fraction" # format ID 13
"@" = "Text" # format ID 49 or "Text"
}
$numformats.keys.where({$_ -like "$wordToComplete*"} ) | ForEach-Object {
New-Object -TypeName System.Management.Automation.CompletionResult -ArgumentList "'$_'" , $_ ,
([System.Management.Automation.CompletionResultType]::ParameterValue) , $numformats[$_]
}
}
function WorksheetArgumentCompleter {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
$xlPath = $fakeBoundParameter['Path']
if (Test-Path -Path $xlPath) {
$xlpkg = Open-ExcelPackage -ReadOnly -Path $xlPath
$WorksheetNames = $xlPkg.Workbook.Worksheets.Name
Close-ExcelPackage -nosave -ExcelPackage $xlpkg
$WorksheetNames.where( { $_ -like "*$wordToComplete*" }) | foreach-object {
New-Object -TypeName System.Management.Automation.CompletionResult -ArgumentList "'$_'",
$_ , ([System.Management.Automation.CompletionResultType]::ParameterValue) , $_
}
}
}
if (Get-Command -ErrorAction SilentlyContinue -name Register-ArgumentCompleter) {
Register-ArgumentCompleter -CommandName Export-Excel -ParameterName TitleBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName DataBarColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName ForeGroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName AllDataBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName TabColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Join-Worksheet -ParameterName TitleBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-Worksheet -ParameterName AddBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-Worksheet -ParameterName ChangeBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-Worksheet ` -ParameterName DeleteBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets -ParameterName KeyFontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets -ParameterName AddBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets -ParameterName ChangeBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets ` -ParameterName DeleteBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets -ParameterName KeyFontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ConditionalText -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ConditionalText -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ConditionalText -ParameterName ConditionalTextColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName BorderColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName BorderColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelColumn -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelColumn -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelColumn -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRow -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRow -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRow -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName FontName -ScriptBlock $Function:ListFonts
Register-ArgumentCompleter -CommandName Set-ExcelColumn -ParameterName FontName -ScriptBlock $Function:ListFonts
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName FontName -ScriptBlock $Function:ListFonts
Register-ArgumentCompleter -CommandName Set-ExcelRow -ParameterName FontName -ScriptBlock $Function:ListFonts
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName NumberFormat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName Export-Excel -ParameterName NumberFormat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName NumberFormat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName NumberFormat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName Set-ExcelColumn -ParameterName NumberFormat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRow -ParameterName NumberFormat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName Add-PivotTable -ParameterName PivotNumberFormat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName New-PivotTableDefinition -ParameterName PivotNumberFormat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName New-ExcelChartDefinition -ParameterName XAxisNumberformat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName New-ExcelChartDefinition -ParameterName YAxisNumberformat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName Add-ExcelChart -ParameterName XAxisNumberformat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName Add-ExcelChart -ParameterName YAxisNumberformat -ScriptBlock $Function:NumberFormatCompletion
Register-ArgumentCompleter -CommandName Import-Excel -ParameterName WorksheetName -ScriptBlock $Function:WorksheetArgumentCompleter
}

View File

@@ -11,7 +11,9 @@ param
# AppVeyor Only - Upload results to AppVeyor "Tests" tab. # AppVeyor Only - Upload results to AppVeyor "Tests" tab.
[Switch]$Finalize, [Switch]$Finalize,
# AppVeyor and Azure - Upload module as AppVeyor Artifact. # AppVeyor and Azure - Upload module as AppVeyor Artifact.
[Switch]$Artifact [Switch]$Artifact,
# Azure - Runs PsScriptAnalyzer against one or more folders and pivots the results to form a report.
[Switch]$Analyzer
) )
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if ($Initialize) { if ($Initialize) {
@@ -21,7 +23,7 @@ if ($Initialize) {
} }
if ($Test) { if ($Test) {
function Get-EnvironmentInfo { function Get-EnvironmentInfo {
if ($null -eq $IsWindows -or $IsWindows) { if ([environment]::OSVersion.Platform -like "win*") {
# Get Windows Version # Get Windows Version
try { try {
$WinRelease, $WinVer = Get-ItemPropertyValue "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ReleaseId, CurrentMajorVersionNumber, CurrentMinorVersionNumber, CurrentBuildNumber, UBR $WinRelease, $WinVer = Get-ItemPropertyValue "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ReleaseId, CurrentMajorVersionNumber, CurrentMinorVersionNumber, CurrentBuildNumber, UBR
@@ -30,8 +32,18 @@ if ($Test) {
catch { catch {
$WindowsVersion = [System.Environment]::OSVersion.Version $WindowsVersion = [System.Environment]::OSVersion.Version
} }
#TODO FIXME BUG this gets the latest version of the .NET Framework on the machine (ok for powershell.exe), not the version of .NET CORE in use by PWSH.EXE
<#
$VersionFilePath = (Get-Process -Id $PID | Select-Object -ExpandProperty Modules |
Where-Object -Property modulename -eq "clrjit.dll").FileName
if (-not $VersionFilePath) {
$VersionFilePath = [System.Reflection.Assembly]::LoadWithPartialName("System.Core").location
}
(Get-ItemProperty -Path $VersionFilePath).VersionInfo |
Select-Object -Property @{n="Version"; e={$_.ProductName + " " + $_.FileVersion}}, ProductName, FileVersionRaw, FileName
#>
# Get .Net Version # Get .Net Version
# https://stackoverflow.com/questions/3487265/powershell-script-to-return-versions-of-net-framework-on-a-machine # https://stackoverflow.com/questions/3487265/powershell-script-to-return-versions-of-net-framework-on-a-machine
$Lookup = @{ $Lookup = @{
378389 = [version]'4.5' 378389 = [version]'4.5'
@@ -130,3 +142,67 @@ if ($Artifact) {
Copy-Item -Path $ModulePath -Destination $env:Build_ArtifactStagingDirectory -Recurse Copy-Item -Path $ModulePath -Destination $env:Build_ArtifactStagingDirectory -Recurse
} }
} }
if ($Analyzer) {
if (!(Get-Module -Name PSScriptAnalyzer -ListAvailable)) {
'[Progress] Installing PSScriptAnalyzer.'
Install-Module -Name PSScriptAnalyzer -Force
}
if ($env:System_PullRequest_TargetBranch) {
'[Progress] Get target branch.'
$TempGitClone = Join-Path ([IO.Path]::GetTempPath()) (New-Guid)
Copy-Item -Path $PWD -Destination $TempGitClone -Recurse
(Get-Item (Join-Path $TempGitClone '.git')).Attributes += 'Hidden'
"[Progress] git clean."
git -C $TempGitClone clean -f
"[Progress] git reset."
git -C $TempGitClone reset --hard
"[Progress] git checkout."
git -C $TempGitClone checkout -q $env:System_PullRequest_TargetBranch
$DirsToProcess = @{ 'Pull Request' = $PWD ; $env:System_PullRequest_TargetBranch = $TempGitClone }
}
else {
$DirsToProcess = @{ 'GitHub' = $PWD }
}
"[Progress] Running Script Analyzer."
$AnalyzerResults = $DirsToProcess.GetEnumerator() | ForEach-Object {
$DirName = $_.Key
Write-Verbose "[Progress] Running Script Analyzer on $DirName."
Invoke-ScriptAnalyzer -Path $_.Value -Recurse -ErrorAction SilentlyContinue |
Add-Member -MemberType NoteProperty -Name Location -Value $DirName -PassThru
}
if ($AnalyzerResults) {
if (!(Get-Module -Name ImportExcel -ListAvailable)) {
'[Progress] Installing ImportExcel.'
Install-Module -Name ImportExcel -Force
}
'[Progress] Creating ScriptAnalyzer.xlsx.'
$ExcelParams = @{
Path = 'ScriptAnalyzer.xlsx'
WorksheetName = 'FullResults'
Now = $true
Activate = $true
Show = $false
}
$PivotParams = @{
PivotTableName = 'BreakDown'
PivotData = @{RuleName = 'Count' }
PivotRows = 'Severity', 'RuleName'
PivotColumns = 'Location'
PivotTotals = 'Rows'
}
Remove-Item -Path $ExcelParams['Path'] -ErrorAction SilentlyContinue
$PivotParams['PivotChartDefinition'] = New-ExcelChartDefinition -ChartType 'BarClustered' -Column (1 + $DirsToProcess.Count) -Title "Script analysis" -LegendBold
$ExcelParams['PivotTableDefinition'] = New-PivotTableDefinition @PivotParams
$AnalyzerResults | Export-Excel @ExcelParams
'[Progress] Analyzer finished.'
}
else {
"[Info] Invoke-ScriptAnalyzer didn't return any problems."
}
}

View File

@@ -6,11 +6,15 @@
Param Param
( (
# Version to install in the format from the .msi, for example "7.0.0-preview.1" # Version to install in the format from the .msi, for example "7.0.0-preview.1"
[Parameter(Mandatory)]
[String]$Version [String]$Version
) )
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if (-not $Version) {
$Version = (Invoke-RestMethod https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/metadata.json).StableReleaseTag
}
$Version = $Version -replace "^v",""
'[Progress] Downloading PowerShell Core.' '[Progress] Downloading PowerShell Core.'
$MsiPath = Join-Path $env:TEMP "PowerShell-$Version-win-x64.msi" $MsiPath = Join-Path $env:TEMP "PowerShell-$Version-win-x64.msi"
[System.Net.WebClient]::new().DownloadFile("https://github.com/PowerShell/PowerShell/releases/download/v$Version/PowerShell-$Version-win-x64.msi", $MsiPath) [System.Net.WebClient]::new().DownloadFile("https://github.com/PowerShell/PowerShell/releases/download/v$Version/PowerShell-$Version-win-x64.msi", $MsiPath)

View File

@@ -2,6 +2,7 @@
.SYNOPSIS .SYNOPSIS
Deploy module to PowerShellGallery. Deploy module to PowerShellGallery.
#> #>
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseDeclaredVarsMoreThanAssignments", "Success")]
[CmdletBinding(DefaultParameterSetName = 'ModuleName')] [CmdletBinding(DefaultParameterSetName = 'ModuleName')]
Param Param
( (

View File

@@ -0,0 +1,54 @@

function Test-SingleFunction {
param (
[parameter(ValueFromPipeline=$true)]
$path )
begin {
$psd = Get-Content -Raw "$PSScriptRoot\..\ImportExcel.psd1"
$exportedFunctions = (Invoke-Command ([scriptblock]::Create($psd))).functionsToExport
$reg = [Regex]::new(@"
function\s*[-\w]+\s*{ # The function name and opening '{'
(?:
[^{}]+ # Match all non-braces
|
(?<open> { ) # Match '{', and capture into 'open'
|
(?<-open> } ) # Match '}', and delete the 'open' capture
)*
(?(open)(?!)) # Fails if 'open' stack isn't empty
} # Functions closing '}'
"@, 57) # 41 = compile ignore case and white space.
$reg2 = [Regex]::new(@"
^function\s*[-\w]+\s*{ # The function name and opening '{'
(
\#.*?[\r\n]+ # single line comment
| # or
\s*<\#.*?\#> # <#comment block#>
| # or
\s*\[.*?\] # [attribute tags]
)*
"@, 57)
# 43 = compile, multi-line, ignore case and white space.
}
process {
$item = Get-item $Path
$name = $item.Name -replace "\.\w+$",""
Write-Verbose $name
$file = Get-Content $item -Raw
$m = $reg.Matches($file)
#based on https://stackoverflow.com/questions/7898310/using-regex-to-balance-match-parenthesis
if ($m.Count -eq 0) {return "Could not find $name function in $($item.name)"}
elseif ($m.Count -ge 2) {return "Multiple functions in $($item.name)"}
elseif ($exportedFunctions -cnotcontains $name) {return "$name not exported (or in the wrong case)"}
elseif ($m[0] -cnotmatch "^\w+\s+$name") {return "function $name in wrong case"}
$m2 = [regex]::Match($m[0],"param",[System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
if (-not $m2.Success) {return "No param block in $name"}
# elseif ($m[0] -inotmatch "(?s)^function\s*$name\s*{(\s*<\#.*?\#>|\s*\[.*?\])*\s*param")
# elseif ($reg2.IsMatch($m[0].Value)) {return "function $name has comment-based help"}
elseif ($m[0] -inotmatch "\[CmdletBinding\(" -and
$m[0] -inotmatch "\[parameter\(" ) {return "$name has is not an advanced function"}
#elseif (-not (& $Name -?).synopsis) {return "$name has no help"}
else {Write-Verbose "$name OK"}
}
}

80
CI/build.ps1 Normal file
View File

@@ -0,0 +1,80 @@
[CmdletBinding(DefaultParameterSetName = 'Default')]
param(
# Path to install the module to, if not provided -Scope used.
[Parameter(Mandatory, ParameterSetName = 'ModulePath')]
[ValidateNotNullOrEmpty()]
[String]$ModulePath,
# Path to install the module to, PSModulePath "CurrentUser" or "AllUsers", if not provided "CurrentUser" used.
[Parameter(Mandatory, ParameterSetName = 'Scope')]
[ValidateSet('CurrentUser', 'AllUsers')]
[string]
$Scope = 'CurrentUser',
[switch]$Passthru,
[switch]$Tests
)
if ($PSScriptRoot) { Push-Location $PSScriptRoot }
$psdpath = Get-Item "*.psd1"
if (-not $psdpath -or $psdpath.count -gt 1) {
throw "Did not find a unique PSD file "
}
else {
$ModuleName = $psdpath.Name -replace '\.psd1$' , ''
$Settings = $(& ([scriptblock]::Create(($psdpath | Get-Content -Raw))))
}
try {
Write-Verbose -Message 'Module installation started'
if (!$ModulePath) {
if ($IsLinux -or $IsMacOS) {$ModulePathSeparator = ':' }
else {$ModulePathSeparator = ';' }
if ($Scope -eq 'CurrentUser') { $dir = [System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::UserProfile) }
else { $dir = [System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::ProgramFiles) }
$ModulePath = ($env:PSModulePath -split $ModulePathSeparator).where({$_ -like "$dir*"},"First",1)
$ModulePath = Join-Path -Path $ModulePath -ChildPath $ModuleName
$ModulePath = Join-Path -Path $ModulePath -ChildPath $Settings.ModuleVersion
}
# Create Directory
if (-not (Test-Path -Path $ModulePath)) {
$null = New-Item -Path $ModulePath -ItemType Directory -ErrorAction Stop
Write-Verbose -Message ('Created module folder: "{0}"' -f $ModulePath)
}
Write-Verbose -Message ('Copying files to "{0}"' -f $ModulePath)
$outputFile = $psdpath | Copy-Item -Destination $ModulePath -PassThru
Foreach ($file in $Settings.FileList) {
if ($file -like '.\*') {
$dest = ($file -replace '\.\\',"$ModulePath\")
if (-not (Test-Path -PathType Container (Split-Path -Parent $dest))) {
$null = New-item -Type Directory -Path (Split-Path -Parent $dest)
}
}
else {$dest = $ModulePath }
Copy-Item $file -Destination $dest -Force -Recurse
}
if (Test-Path -PathType Container "mdHelp") {
if (-not (Get-Module -ListAvailable platyPS)) {
Write-Verbose-Message ('Installing Platyps to build help files')
Install-Module -Name platyPS -Force -SkipPublisherCheck
}
Import-Module platyPS
Get-ChildItem .\mdHelp -Directory | ForEach-Object {
New-ExternalHelp -Path $_.FullName -OutputPath (Join-Path $ModulePath $_.Name) -Force -Verbose
}
}
$env:PSNewBuildModule = $ModulePath
if ($Passthru) {$outputFile}
}
catch {
throw ('Failed installing module "{0}". Error: "{1}" in Line {2}' -f $ModuleName, $_, $_.InvocationInfo.ScriptLineNumber)
}
finally {
Write-Verbose -Message 'Module installation end'
}

137
Charting/BarChart.md Normal file
View File

@@ -0,0 +1,137 @@
---
external help file: ImportExcel-help.xml
Module Name: ImportExcel
online version:
schema: 2.0.0
---
# BarChart
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
BarChart [[-targetData] <Object>] [[-title] <Object>] [[-ChartType] <eChartType>] [-NoLegend] [-ShowCategory]
[-ShowPercent] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -ChartType
{{ Fill ChartType Description }}
```yaml
Type: eChartType
Parameter Sets: (All)
Aliases:
Accepted values: Area, Line, Pie, Bubble, ColumnClustered, ColumnStacked, ColumnStacked100, ColumnClustered3D, ColumnStacked3D, ColumnStacked1003D, BarClustered, BarStacked, BarStacked100, BarClustered3D, BarStacked3D, BarStacked1003D, LineStacked, LineStacked100, LineMarkers, LineMarkersStacked, LineMarkersStacked100, PieOfPie, PieExploded, PieExploded3D, BarOfPie, XYScatterSmooth, XYScatterSmoothNoMarkers, XYScatterLines, XYScatterLinesNoMarkers, AreaStacked, AreaStacked100, AreaStacked3D, AreaStacked1003D, DoughnutExploded, RadarMarkers, RadarFilled, Surface, SurfaceWireframe, SurfaceTopView, SurfaceTopViewWireframe, Bubble3DEffect, StockHLC, StockOHLC, StockVHLC, StockVOHLC, CylinderColClustered, CylinderColStacked, CylinderColStacked100, CylinderBarClustered, CylinderBarStacked, CylinderBarStacked100, CylinderCol, ConeColClustered, ConeColStacked, ConeColStacked100, ConeBarClustered, ConeBarStacked, ConeBarStacked100, ConeCol, PyramidColClustered, PyramidColStacked, PyramidColStacked100, PyramidBarClustered, PyramidBarStacked, PyramidBarStacked100, PyramidCol, XYScatter, Radar, Doughnut, Pie3D, Line3D, Column3D, Area3D
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -NoLegend
{{ Fill NoLegend Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowCategory
{{ Fill ShowCategory Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowPercent
{{ Fill ShowPercent Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -targetData
{{ Fill targetData Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 0
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
```
### -title
{{ Fill title Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### System.Object
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS

137
Charting/ColumnChart.md Normal file
View File

@@ -0,0 +1,137 @@
---
external help file: ImportExcel-help.xml
Module Name: ImportExcel
online version:
schema: 2.0.0
---
# ColumnChart
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
ColumnChart [[-targetData] <Object>] [[-title] <Object>] [[-ChartType] <eChartType>] [-NoLegend]
[-ShowCategory] [-ShowPercent] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -ChartType
{{ Fill ChartType Description }}
```yaml
Type: eChartType
Parameter Sets: (All)
Aliases:
Accepted values: Area, Line, Pie, Bubble, ColumnClustered, ColumnStacked, ColumnStacked100, ColumnClustered3D, ColumnStacked3D, ColumnStacked1003D, BarClustered, BarStacked, BarStacked100, BarClustered3D, BarStacked3D, BarStacked1003D, LineStacked, LineStacked100, LineMarkers, LineMarkersStacked, LineMarkersStacked100, PieOfPie, PieExploded, PieExploded3D, BarOfPie, XYScatterSmooth, XYScatterSmoothNoMarkers, XYScatterLines, XYScatterLinesNoMarkers, AreaStacked, AreaStacked100, AreaStacked3D, AreaStacked1003D, DoughnutExploded, RadarMarkers, RadarFilled, Surface, SurfaceWireframe, SurfaceTopView, SurfaceTopViewWireframe, Bubble3DEffect, StockHLC, StockOHLC, StockVHLC, StockVOHLC, CylinderColClustered, CylinderColStacked, CylinderColStacked100, CylinderBarClustered, CylinderBarStacked, CylinderBarStacked100, CylinderCol, ConeColClustered, ConeColStacked, ConeColStacked100, ConeBarClustered, ConeBarStacked, ConeBarStacked100, ConeCol, PyramidColClustered, PyramidColStacked, PyramidColStacked100, PyramidBarClustered, PyramidBarStacked, PyramidBarStacked100, PyramidCol, XYScatter, Radar, Doughnut, Pie3D, Line3D, Column3D, Area3D
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -NoLegend
{{ Fill NoLegend Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowCategory
{{ Fill ShowCategory Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowPercent
{{ Fill ShowPercent Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -targetData
{{ Fill targetData Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 0
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
```
### -title
{{ Fill title Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### System.Object
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS

137
Charting/LineChart.md Normal file
View File

@@ -0,0 +1,137 @@
---
external help file: ImportExcel-help.xml
Module Name: ImportExcel
online version: https://github.com/dfinke/ImportExcel
schema: 2.0.0
---
# LineChart
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
LineChart [[-targetData] <Object>] [[-title] <Object>] [[-ChartType] <eChartType>] [-NoLegend] [-ShowCategory]
[-ShowPercent] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -ChartType
{{ Fill ChartType Description }}
```yaml
Type: eChartType
Parameter Sets: (All)
Aliases:
Accepted values: Area, Line, Pie, Bubble, ColumnClustered, ColumnStacked, ColumnStacked100, ColumnClustered3D, ColumnStacked3D, ColumnStacked1003D, BarClustered, BarStacked, BarStacked100, BarClustered3D, BarStacked3D, BarStacked1003D, LineStacked, LineStacked100, LineMarkers, LineMarkersStacked, LineMarkersStacked100, PieOfPie, PieExploded, PieExploded3D, BarOfPie, XYScatterSmooth, XYScatterSmoothNoMarkers, XYScatterLines, XYScatterLinesNoMarkers, AreaStacked, AreaStacked100, AreaStacked3D, AreaStacked1003D, DoughnutExploded, RadarMarkers, RadarFilled, Surface, SurfaceWireframe, SurfaceTopView, SurfaceTopViewWireframe, Bubble3DEffect, StockHLC, StockOHLC, StockVHLC, StockVOHLC, CylinderColClustered, CylinderColStacked, CylinderColStacked100, CylinderBarClustered, CylinderBarStacked, CylinderBarStacked100, CylinderCol, ConeColClustered, ConeColStacked, ConeColStacked100, ConeBarClustered, ConeBarStacked, ConeBarStacked100, ConeCol, PyramidColClustered, PyramidColStacked, PyramidColStacked100, PyramidBarClustered, PyramidBarStacked, PyramidBarStacked100, PyramidCol, XYScatter, Radar, Doughnut, Pie3D, Line3D, Column3D, Area3D
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -NoLegend
{{ Fill NoLegend Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowCategory
{{ Fill ShowCategory Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowPercent
{{ Fill ShowPercent Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -targetData
{{ Fill targetData Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 0
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
```
### -title
{{ Fill title Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### System.Object
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS

137
Charting/PieChart.md Normal file
View File

@@ -0,0 +1,137 @@
---
external help file: ImportExcel-help.xml
Module Name: ImportExcel
online version:
schema: 2.0.0
---
# PieChart
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
PieChart [[-targetData] <Object>] [[-title] <Object>] [[-ChartType] <eChartType>] [-NoLegend] [-ShowCategory]
[-ShowPercent] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -ChartType
{{ Fill ChartType Description }}
```yaml
Type: eChartType
Parameter Sets: (All)
Aliases:
Accepted values: Area, Line, Pie, Bubble, ColumnClustered, ColumnStacked, ColumnStacked100, ColumnClustered3D, ColumnStacked3D, ColumnStacked1003D, BarClustered, BarStacked, BarStacked100, BarClustered3D, BarStacked3D, BarStacked1003D, LineStacked, LineStacked100, LineMarkers, LineMarkersStacked, LineMarkersStacked100, PieOfPie, PieExploded, PieExploded3D, BarOfPie, XYScatterSmooth, XYScatterSmoothNoMarkers, XYScatterLines, XYScatterLinesNoMarkers, AreaStacked, AreaStacked100, AreaStacked3D, AreaStacked1003D, DoughnutExploded, RadarMarkers, RadarFilled, Surface, SurfaceWireframe, SurfaceTopView, SurfaceTopViewWireframe, Bubble3DEffect, StockHLC, StockOHLC, StockVHLC, StockVOHLC, CylinderColClustered, CylinderColStacked, CylinderColStacked100, CylinderBarClustered, CylinderBarStacked, CylinderBarStacked100, CylinderCol, ConeColClustered, ConeColStacked, ConeColStacked100, ConeBarClustered, ConeBarStacked, ConeBarStacked100, ConeCol, PyramidColClustered, PyramidColStacked, PyramidColStacked100, PyramidBarClustered, PyramidBarStacked, PyramidBarStacked100, PyramidCol, XYScatter, Radar, Doughnut, Pie3D, Line3D, Column3D, Area3D
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -NoLegend
{{ Fill NoLegend Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowCategory
{{ Fill ShowCategory Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowPercent
{{ Fill ShowPercent Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -targetData
{{ Fill targetData Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 0
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
```
### -title
{{ Fill title Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### System.Object
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS

134
Charting/doChart.md Normal file
View File

@@ -0,0 +1,134 @@
---
external help file: ImportExcel-help.xml
Module Name: ImportExcel
online version:
schema: 2.0.0
---
# DoChart
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
DoChart [[-targetData] <Object>] [[-title] <Object>] [[-ChartType] <eChartType>] [-NoLegend] [-ShowCategory]
[-ShowPercent]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -ChartType
{{ Fill ChartType Description }}
```yaml
Type: eChartType
Parameter Sets: (All)
Aliases:
Accepted values: Area, Line, Pie, Bubble, ColumnClustered, ColumnStacked, ColumnStacked100, ColumnClustered3D, ColumnStacked3D, ColumnStacked1003D, BarClustered, BarStacked, BarStacked100, BarClustered3D, BarStacked3D, BarStacked1003D, LineStacked, LineStacked100, LineMarkers, LineMarkersStacked, LineMarkersStacked100, PieOfPie, PieExploded, PieExploded3D, BarOfPie, XYScatterSmooth, XYScatterSmoothNoMarkers, XYScatterLines, XYScatterLinesNoMarkers, AreaStacked, AreaStacked100, AreaStacked3D, AreaStacked1003D, DoughnutExploded, RadarMarkers, RadarFilled, Surface, SurfaceWireframe, SurfaceTopView, SurfaceTopViewWireframe, Bubble3DEffect, StockHLC, StockOHLC, StockVHLC, StockVOHLC, CylinderColClustered, CylinderColStacked, CylinderColStacked100, CylinderBarClustered, CylinderBarStacked, CylinderBarStacked100, CylinderCol, ConeColClustered, ConeColStacked, ConeColStacked100, ConeBarClustered, ConeBarStacked, ConeBarStacked100, ConeCol, PyramidColClustered, PyramidColStacked, PyramidColStacked100, PyramidBarClustered, PyramidBarStacked, PyramidBarStacked100, PyramidCol, XYScatter, Radar, Doughnut, Pie3D, Line3D, Column3D, Area3D
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -NoLegend
{{ Fill NoLegend Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowCategory
{{ Fill ShowCategory Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowPercent
{{ Fill ShowPercent Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -targetData
{{ Fill targetData Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -title
{{ Fill title Description }}
```yaml
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS

View File

@@ -1,44 +0,0 @@
Function ColorCompletion {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
[System.Drawing.KnownColor].GetFields() | Where-Object {$_.IsStatic -and $_.name -like "$wordToComplete*" } |
Sort-Object name | ForEach-Object {New-CompletionResult $_.name $_.name
}
}
if (Get-Command -Name register-argumentCompleter -ErrorAction SilentlyContinue) {
Register-ArgumentCompleter -CommandName Export-Excel -ParameterName TitleBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName DataBarColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName ForeGroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName AllDataBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName TabColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Join-Worksheet -ParameterName TitleBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-Worksheet -ParameterName AddBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-Worksheet -ParameterName ChangeBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-Worksheet ` -ParameterName DeleteBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets -ParameterName KeyFontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets -ParameterName AddBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets -ParameterName ChangeBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets ` -ParameterName DeleteBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Merge-MulipleSheets -ParameterName KeyFontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ConditionalText -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ConditionalText -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ConditionalText -ParameterName ConditionalTextColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName BorderColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName New-ExcelStyle -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName BorderColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRange -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelColumn -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelColumn -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelColumn -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRow -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRow -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-ExcelRow -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
}

View File

@@ -1,118 +0,0 @@
function ConvertFrom-ExcelToSQLInsert {
<#
.SYNOPSIS
Generate SQL insert statements from Excel spreadsheet.
.DESCRIPTION
Generate SQL insert statements from Excel spreadsheet.
.PARAMETER TableName
Name of the target database table.
.PARAMETER Path
Path to an existing .XLSX file
This parameter is passed to Import-Excel as is.
.PARAMETER WorkSheetname
Specifies the name of the worksheet in the Excel workbook to import. By default, if no name is provided, the first worksheet will be imported.
This parameter is passed to Import-Excel as is.
.PARAMETER StartRow
The row from where we start to import data, all rows above the StartRow are disregarded. By default this is the first row.
When the parameters -NoHeader and -HeaderName are not provided, this row will contain the column headers that will be used as property names. When one of both parameters are provided, the property names are automatically created and this row will be treated as a regular row containing data.
.PARAMETER Header
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.
.PARAMETER NoHeader
Automatically generate property names (P1, P2, P3, ..) instead of the ones defined in the column headers of the TopRow.
This switch is best used when you want to import the complete worksheet as is and are not concerned with the property names.
.PARAMETER DataOnly
Import only rows and columns that contain data, empty rows and empty columns are not imported.
.PARAMETER ConvertEmptyStringsToNull
If specified, cells without any data are replaced with NULL, instead of an empty string.
This is to address behviors in certain DBMS where an empty string is insert as 0 for INT column, instead of a NULL value.
.EXAMPLE
Generate SQL insert statements from Movies.xlsx file, leaving blank cells as empty strings:
----------------------------------------------------------
| File: Movies.xlsx - Sheet: Sheet1 |
----------------------------------------------------------
| A B C |
|1 Movie Name Year Rating |
|2 The Bodyguard 1992 9 |
|3 The Matrix 1999 8 |
|4 Skyfall 2012 9 |
|5 The Avengers 2012 |
----------------------------------------------------------
PS C:\> Import-Excel -TableName "Movies" -Path 'C:\Movies.xlsx'
INSERT INTO Movies ('Movie Name', 'Year', 'Rating') Values('The Bodyguard', '1992', '9');
INSERT INTO Movies ('Movie Name', 'Year', 'Rating') Values('The Matrix', '1999', '8');
INSERT INTO Movies ('Movie Name', 'Year', 'Rating') Values('Skyfall', '2012', '9');
INSERT INTO Movies ('Movie Name', 'Year', 'Rating') Values('The Avengers', '2012', '');
.EXAMPLE
Generate SQL insert statements from Movies.xlsx file, specify NULL instead of an empty string.
----------------------------------------------------------
| File: Movies.xlsx - Sheet: Sheet1 |
----------------------------------------------------------
| A B C |
|1 Movie Name Year Rating |
|2 The Bodyguard 1992 9 |
|3 The Matrix 1999 8 |
|4 Skyfall 2012 9 |
|5 The Avengers 2012 |
----------------------------------------------------------
PS C:\> ConvertFrom-ExcelToSQLInsert -TableName "Movies" -Path "C:\Movies.xlsx" -ConvertEmptyStringsToNull
INSERT INTO Movies ('Movie Name', 'Year', 'Rating') Values('The Bodyguard', '1992', '9');
INSERT INTO Movies ('Movie Name', 'Year', 'Rating') Values('The Matrix', '1999', '8');
INSERT INTO Movies ('Movie Name', 'Year', 'Rating') Values('Skyfall', '2012', '9');
INSERT INTO Movies ('Movie Name', 'Year', 'Rating') Values('The Avengers', '2012', NULL);
#>
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
$TableName,
[Alias("FullName")]
[Parameter(ValueFromPipelineByPropertyName = $true, ValueFromPipeline = $true, Mandatory = $true)]
[ValidateScript( { Test-Path $_ -PathType Leaf })]
$Path,
[Alias("Sheet")]
$WorkSheetname = 1,
[Alias('HeaderRow', 'TopRow')]
[ValidateRange(1, 9999)]
[Int]$StartRow,
[string[]]$Header,
[switch]$NoHeader,
[switch]$DataOnly,
[switch]$ConvertEmptyStringsToNull,
[switch]$UseMSSQLSyntax
)
$null = $PSBoundParameters.Remove('TableName')
$null = $PSBoundParameters.Remove('ConvertEmptyStringsToNull')
$null = $PSBoundParameters.Remove('UseMSSQLSyntax')
$params = @{} + $PSBoundParameters
ConvertFrom-ExcelData @params {
param($propertyNames, $record)
$ColumnNames = "'" + ($PropertyNames -join "', '") + "'"
if($UseMSSQLSyntax) {
$ColumnNames = "[" + ($PropertyNames -join "], [") + "]"
}
$values = foreach ($propertyName in $PropertyNames) {
if ($ConvertEmptyStringsToNull.IsPresent -and [string]::IsNullOrEmpty($record.$propertyName)) {
'NULL'
}
else {
"'" + $record.$propertyName + "'"
}
}
$targetValues = ($values -join ", ")
"INSERT INTO {0} ({1}) Values({2});" -f $TableName, $ColumnNames, $targetValues
}
}

View File

@@ -1,15 +1,15 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$xlSourcefile = "$env:TEMP\Source.xlsx" $xlSourcefile = "$env:TEMP\Source.xlsx"
write-host "Save location: $xlSourcefile" Write-Verbose -Verbose -Message "Save location: $xlSourcefile"
Remove-Item $xlSourcefile -ErrorAction Ignore Remove-Item $xlSourcefile -ErrorAction Ignore
#Put some simple data in a worksheet and Get an excel package object to represent the file #Put some simple data in a worksheet and Get an excel package object to represent the file
$TabData1 = 1..5 | Export-Excel $xlSourcefile -WorksheetName 'Tab 1' -AutoSize -AutoFilter 1..5 | Export-Excel $xlSourcefile -WorksheetName 'Tab1' -AutoSize -AutoFilter
#Add another tab. Replace the $TabData2 with your data #Add another tab. Replace the $TabData2 with your data
$TabData2 = 1..10 | Export-Excel $xlSourcefile -WorksheetName 'Tab 2' -AutoSize -AutoFilter 1..10 | Export-Excel $xlSourcefile -WorksheetName 'Tab 2' -AutoSize -AutoFilter
#Add another tab. Replace the $TabData3 with your data #Add another tab. Replace the $TabData3 with your data
$TabData3 = 1..15 | Export-Excel $xlSourcefile -WorksheetName 'Tab 3' -AutoSize -AutoFilter -Show 1..15 | Export-Excel $xlSourcefile -WorksheetName 'Tab 3' -AutoSize -AutoFilter -Show

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$xlSourcefile = "$env:TEMP\Source.xlsx" $xlSourcefile = "$env:TEMP\Source.xlsx"
@@ -7,6 +7,6 @@ Remove-Item $xlSourcefile -ErrorAction Ignore
#Put some simple data in a worksheet and Get an excel package object to represent the file #Put some simple data in a worksheet and Get an excel package object to represent the file
$excel = 1..10 | Export-Excel $xlSourcefile -PassThru $excel = 1..10 | Export-Excel $xlSourcefile -PassThru
#Add a new worksheet named 'NewSheet' and copying the sheet that was just made (Sheet1) to the new sheet #Add a new worksheet named 'NewSheet' and copying the sheet that was just made (Sheet1) to the new sheet
Add-WorkSheet -ExcelPackage $excel -WorkSheetname "NewSheet" -CopySource $excel.Workbook.Worksheets["Sheet1"] Add-Worksheet -ExcelPackage $excel -WorkSheetname "NewSheet" -CopySource $excel.Workbook.Worksheets["Sheet1"]
#Save and open in Excel #Save and open in Excel
Close-ExcelPackage -ExcelPackage $excel -Show Close-ExcelPackage -ExcelPackage $excel -Show

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
Remove-Item -Path Tools.xlsx Remove-Item -Path Tools.xlsx

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
function plot { function plot {
param( param(
@@ -25,4 +25,4 @@ function plot {
function pi {[math]::pi} function pi {[math]::pi}
plot {[math]::Tan($args[0])} (pi) (3*(pi)/2-.01) plot -f {[math]::Tan($args[0])} -minx (pi) -maxx (3*(pi)/2-.01)

View File

@@ -1,9 +1,9 @@
echo Last7Days LastMonth LastWeek NextMonth NextWeek ThisMonth ThisWeek Today Tomorrow Yesterday | "Last7Days", "LastMonth", "LastWeek", "NextMonth", "NextWeek", "ThisMonth", "ThisWeek", "Today", "Tomorrow", "Yesterday" |
Foreach-Object { Foreach-Object {
$text = @" $text = @"
`$f = ".\testExport.xlsx" `$f = ".\testExport.xlsx"
rm `$f -ErrorAction Ignore remove-item `$f -ErrorAction Ignore
.\GenDates.ps1 | .\GenDates.ps1 |
Export-Excel `$f -Show -AutoSize -ConditionalText `$( Export-Excel `$f -Show -AutoSize -ConditionalText `$(

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "$env:temp\conditionalTextFormatting.xlsx" $file = "$env:temp\conditionalTextFormatting.xlsx"
Remove-Item $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore

View File

@@ -1,10 +1,10 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
#Define a "Contains blanks" rule. No format is specified so it default to dark-red text on light-pink background. #Define a "Contains blanks" rule. No format is specified so it default to dark-red text on light-pink background.
$ContainsBlanks = New-ConditionalText -ConditionalType ContainsBlanks $ContainsBlanks = New-ConditionalText -ConditionalType ContainsBlanks
$data = $( $data = $(
New-PSItem a b c (echo p1 p2 p3) New-PSItem a b c @('p1', 'p2', 'p3')
New-PSItem New-PSItem
New-PSItem d e f New-PSItem d e f
New-PSItem New-PSItem

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$path = "$env:temp\test.xlsx" $path = "$env:temp\test.xlsx"
Remove-Item -Path $path -ErrorAction Ignore Remove-Item -Path $path -ErrorAction Ignore
@@ -10,23 +10,23 @@ $excel = Get-Process |
$sheet = $excel.Workbook.Worksheets["Processes"] $sheet = $excel.Workbook.Worksheets["Processes"]
#Apply fixed formatting to columns. Set-Format is an Alias for Set-Excel Range, -NFormat is an alias for numberformat #Apply fixed formatting to columns. -NFormat is an alias for numberformat
$sheet.Column(1) | Set-ExcelRange -Bold -AutoFit $sheet.Column(1) | Set-ExcelRange -Bold -AutoFit
$sheet.Column(2) | Set-Format -Width 29 -WrapText $sheet.Column(2) | Set-ExcelRange -Width 29 -WrapText
$sheet.Column(3) | Set-Format -HorizontalAlignment Right -NFormat "#,###" $sheet.Column(3) | Set-ExcelRange -HorizontalAlignment Right -NFormat "#,###"
Set-ExcelRange -Range -Address $sheet.Cells["E1:H1048576"] -HorizontalAlignment Right -NFormat "#,###" Set-ExcelRange -Range -Address $sheet.Cells["E1:H1048576"] -HorizontalAlignment Right -NFormat "#,###"
#Set-Format is an alias for Set-ExcelRange
Set-Format -Range $sheet.Column(4) -HorizontalAlignment Right -NFormat "#,##0.0" -Bold Set-ExcelRange -Range $sheet.Column(4) -HorizontalAlignment Right -NFormat "#,##0.0" -Bold
#In Set-ExcelRange / Set-Format "-Address" is an alias for "-Range" #In Set-ExcelRange "-Address" is an alias for "-Range"
Set-Format -Address $sheet.Row(1) -Bold -HorizontalAlignment Center Set-ExcelRange -Address $sheet.Row(1) -Bold -HorizontalAlignment Center
#Create a Red Data-bar for the values in Column D #Create a Red Data-bar for the values in Column D
Add-ConditionalFormatting -WorkSheet $sheet -Address "D2:D1048576" -DataBarColor Red Add-ConditionalFormatting -Worksheet $sheet -Address "D2:D1048576" -DataBarColor Red
# Conditional formatting applies to "Addreses" aliases allow either "Range" or "Address" to be used in Set-ExcelRange or Add-Conditional formatting. # Conditional formatting applies to "Addreses" aliases allow either "Range" or "Address" to be used in Set-ExcelRange or Add-Conditional formatting.
Add-ConditionalFormatting -WorkSheet $sheet -Range "G2:G1048576" -RuleType GreaterThan -ConditionValue "104857600" -ForeGroundColor Red Add-ConditionalFormatting -Worksheet $sheet -Range "G2:G1048576" -RuleType GreaterThan -ConditionValue "104857600" -ForeGroundColor Red
foreach ($c in 5..9) {Set-Format -Address $sheet.Column($c) -AutoFit } foreach ($c in 5..9) {Set-ExcelRange -Address $sheet.Column($c) -AutoFit }
#Create a pivot and save the file. #Create a pivot and save the file.
Export-Excel -ExcelPackage $excel -WorkSheetname "Processes" -IncludePivotChart -ChartType ColumnClustered -NoLegend -PivotRows company -PivotData @{'Name'='Count'} -Show Export-Excel -ExcelPackage $excel -WorkSheetname "Processes" -IncludePivotChart -ChartType ColumnClustered -NoLegend -PivotRows company -PivotData @{'Name'='Count'} -Show

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = "$env:TEMP\testExport.xlsx" $f = "$env:TEMP\testExport.xlsx"
@@ -6,7 +6,7 @@ Remove-Item $f -ErrorAction Ignore
$data = $( $data = $(
New-PSItem North 111 (echo Region Amount ) New-PSItem North 111 @( 'Region', 'Amount' )
New-PSItem East 111 New-PSItem East 111
New-PSItem West 122 New-PSItem West 122
New-PSItem South 200 New-PSItem South 200
@@ -21,8 +21,8 @@ $data = $(
New-PSItem Westerly 120 New-PSItem Westerly 120
New-PSItem SouthWest 118 New-PSItem SouthWest 118
) )
# in this example instead of doing $variable = New-Conditional text <parameters> .... ; Export-excel -conditionalText $variable <other parameters> # in this example instead of doing $variable = New-Conditional text <parameters> .... ; Export-excel -ConditionalText $variable <other parameters>
# the syntax is used is Export-excel -conditionalText (New-Conditional text <parameters>) <other parameters> # the syntax is used is Export-excel -ConditionalText (New-Conditional text <parameters>) <other parameters>
#$data | Export-Excel $f -Show -AutoSize -ConditionalText (New-ConditionalText -ConditionalType AboveAverage) #$data | Export-Excel $f -Show -AutoSize -ConditionalText (New-ConditionalText -ConditionalType AboveAverage)

View File

@@ -8,7 +8,7 @@ function Get-Number {
Get-Random -Minimum 10 -Maximum 100 Get-Random -Minimum 10 -Maximum 100
} }
New-PSItem (Get-DateOffset -7) (Get-Number) 'LastWeek,Last7Days,ThisMonth' (echo Date Amount Label) New-PSItem (Get-DateOffset -7) (Get-Number) 'LastWeek,Last7Days,ThisMonth' @('Date', 'Amount', 'Label')
New-PSItem (Get-DateOffset) (Get-Number) 'Today,ThisMonth,ThisWeek' New-PSItem (Get-DateOffset) (Get-Number) 'Today,ThisMonth,ThisWeek'
New-PSItem (Get-DateOffset -30) (Get-Number) LastMonth New-PSItem (Get-DateOffset -30) (Get-Number) LastMonth
New-PSItem (Get-DateOffset -1) (Get-Number) 'Yesterday,ThisMonth,ThisWeek' New-PSItem (Get-DateOffset -1) (Get-Number) 'Yesterday,ThisMonth,ThisWeek'

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
Remove-Item "$env:TEMP\testExport.xlsx" -ErrorAction Ignore Remove-Item "$env:TEMP\testExport.xlsx" -ErrorAction Ignore

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"
@@ -6,7 +6,7 @@ Remove-Item $f -ErrorAction Ignore
$data = $( $data = $(
New-PSItem North 111 (echo Region Amount ) New-PSItem North 111 @('Region', 'Amount' )
New-PSItem East 11 New-PSItem East 11
New-PSItem West 12 New-PSItem West 12
New-PSItem South 1000 New-PSItem South 1000

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
Remove-Item -Path .\test.xlsx -ErrorAction Ignore Remove-Item -Path .\test.xlsx -ErrorAction Ignore
@@ -20,6 +20,6 @@ Dec,44,63,46
Export-Excel -Path .\test.xlsx -WorkSheetname Sheet1 -AutoNameRange -AutoSize -Title "Monthly Temperatures" -PassThru Export-Excel -Path .\test.xlsx -WorkSheetname Sheet1 -AutoNameRange -AutoSize -Title "Monthly Temperatures" -PassThru
$sheet = $excel.Workbook.Worksheets["Sheet1"] $sheet = $excel.Workbook.Worksheets["Sheet1"]
Add-ConditionalFormatting -WorkSheet $sheet -Range "B1:D14" -DataBarColor CornflowerBlue Add-ConditionalFormatting -Worksheet $sheet -Range "B1:D14" -DataBarColor CornflowerBlue
Close-ExcelPackage $excel -Show Close-ExcelPackage $excel -Show

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"
Remove-Item $f -ErrorAction Ignore Remove-Item $f -ErrorAction Ignore
@@ -8,7 +8,7 @@ function Get-DateOffset ($days=0) {
} }
$( $(
New-PSItem (Get-DateOffset -1) (Get-DateOffset 1) (echo Start End) New-PSItem (Get-DateOffset -1) (Get-DateOffset 1) @("Start", "End")
New-PSItem (Get-DateOffset) (Get-DateOffset 7) New-PSItem (Get-DateOffset) (Get-DateOffset 7)
New-PSItem (Get-DateOffset -10) (Get-DateOffset -1) New-PSItem (Get-DateOffset -10) (Get-DateOffset -1)
) | ) |

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
Remove-Item -Path .\test.xlsx -ErrorAction Ignore Remove-Item -Path .\test.xlsx -ErrorAction Ignore
@@ -14,9 +14,9 @@ Jun,621
Export-Excel -Path .\test.xlsx -WorkSheetname Sheet1 -AutoNameRange -PassThru Export-Excel -Path .\test.xlsx -WorkSheetname Sheet1 -AutoNameRange -PassThru
$sheet = $excel.Workbook.Worksheets["Sheet1"] $sheet = $excel.Workbook.Worksheets["Sheet1"]
Add-ConditionalFormatting -WorkSheet $sheet -Range "B1:B7" -DataBarColor LawnGreen Add-ConditionalFormatting -Worksheet $sheet -Range "B1:B7" -DataBarColor LawnGreen
Set-Format -Address $sheet.Cells["A8"] -Value "Total" Set-ExcelRange -Address $sheet.Cells["A8"] -Value "Total"
Set-Format -Address $sheet.Cells["B8"] -Formula "=Sum(Sales)" Set-ExcelRange -Address $sheet.Cells["B8"] -Formula "=Sum(Sales)"
Close-ExcelPackage $excel -Show Close-ExcelPackage $excel -Show

View File

@@ -1,7 +1,7 @@
try {ipmo ..\..\ImportExcel.psd1 -Force} catch {} try {Import-Module ..\..\ImportExcel.psd1 -Force} catch {throw ; return}
$data = $( $data = $(
New-PSItem 100 (echo test testx) New-PSItem 100 @('test', 'testx')
New-PSItem 200 New-PSItem 200
New-PSItem 300 New-PSItem 300
New-PSItem 400 New-PSItem 400
@@ -11,8 +11,8 @@ $data = $(
$file1 = "$env:Temp\tryComparison1.xlsx" $file1 = "$env:Temp\tryComparison1.xlsx"
$file2 = "$env:Temp\tryComparison2.xlsx" $file2 = "$env:Temp\tryComparison2.xlsx"
rm $file1 -ErrorAction Ignore Remove-Item -Path $file1 -ErrorAction Ignore
rm $file2 -ErrorAction Ignore Remove-Item -Path $file2 -ErrorAction Ignore
$data | Export-Excel $file1 -Show -ConditionalText $( $data | Export-Excel $file1 -Show -ConditionalText $(
New-ConditionalText -ConditionalType GreaterThan 300 New-ConditionalText -ConditionalType GreaterThan 300

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
ConvertFrom-ExcelToSQLInsert People .\testSQLGen.xlsx ConvertFrom-ExcelToSQLInsert People .\testSQLGen.xlsx

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$f = "$env:temp\dashboard.xlsx" $f = "$env:temp\dashboard.xlsx"
Remove-Item $f -ErrorAction Ignore Remove-Item $f -ErrorAction Ignore
@@ -22,51 +22,51 @@ $sheet1 = $excel.Workbook.Worksheets["sheet1"]
$sheet1.View.ShowGridLines = $false $sheet1.View.ShowGridLines = $false
$sheet1.View.ShowHeaders = $false $sheet1.View.ShowHeaders = $false
Set-Format -Address $sheet1.Cells["C:C"] -NumberFormat "$#,##0" -WrapText -HorizontalAlignment Center Set-ExcelRange -Address $sheet1.Cells["C:C"] -NumberFormat "$#,##0" -WrapText -HorizontalAlignment Center
Set-Format -Address $sheet1.Cells["D:D"] -NumberFormat "#.#0%" -WrapText -HorizontalAlignment Center Set-ExcelRange -Address $sheet1.Cells["D:D"] -NumberFormat "#.#0%" -WrapText -HorizontalAlignment Center
Set-Format -Address $sheet1.Cells["E:E"] -NumberFormat "$#,##0" -WrapText -HorizontalAlignment Center Set-ExcelRange -Address $sheet1.Cells["E:E"] -NumberFormat "$#,##0" -WrapText -HorizontalAlignment Center
Set-Format -Address $sheet1.Cells["F:F"] -NumberFormat "#.#0%" -WrapText -HorizontalAlignment Center Set-ExcelRange -Address $sheet1.Cells["F:F"] -NumberFormat "#.#0%" -WrapText -HorizontalAlignment Center
Set-Format -Address $sheet1.Cells["G:H"] -WrapText -HorizontalAlignment Center Set-ExcelRange -Address $sheet1.Cells["G:H"] -WrapText -HorizontalAlignment Center
## Insert Rows/Columns ## Insert Rows/Columns
$sheet1.InsertRow(1, 1) $sheet1.InsertRow(1, 1)
foreach ($col in Write-Output 2 4 6 8 10 12 14) { foreach ($col in @(2, 4, 6, 8, 10, 12, 14)) {
$sheet1.InsertColumn($col, 1) $sheet1.InsertColumn($col, 1)
$sheet1.Column($col).width = .75 $sheet1.Column($col).width = .75
} }
Set-Format -Address $sheet1.Cells["E:E"] -Width 12 Set-ExcelRange -Address $sheet1.Cells["E:E"] -Width 12
Set-Format -Address $sheet1.Cells["I:I"] -Width 12 Set-ExcelRange -Address $sheet1.Cells["I:I"] -Width 12
$BorderBottom = "Thick" $BorderBottom = "Thick"
$BorderColor = "Black" $BorderColor = "Black"
Set-Format -Address $sheet1.Cells["A2"] -BorderBottom $BorderBottom -BorderColor $BorderColor Set-ExcelRange -Address $sheet1.Cells["A2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["C2"] -BorderBottom $BorderBottom -BorderColor $BorderColor Set-ExcelRange -Address $sheet1.Cells["C2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["E2:G2"] -BorderBottom $BorderBottom -BorderColor $BorderColor Set-ExcelRange -Address $sheet1.Cells["E2:G2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["I2:K2"] -BorderBottom $BorderBottom -BorderColor $BorderColor Set-ExcelRange -Address $sheet1.Cells["I2:K2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["M2:O2"] -BorderBottom $BorderBottom -BorderColor $BorderColor Set-ExcelRange -Address $sheet1.Cells["M2:O2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["A2:C8"] -FontColor Gray Set-ExcelRange -Address $sheet1.Cells["A2:C8"] -FontColor Gray
$HorizontalAlignment = "Center" $HorizontalAlignment = "Center"
Set-Format -Address $sheet1.Cells["F1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Revenue Set-ExcelRange -Address $sheet1.Cells["F1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Revenue
Set-Format -Address $sheet1.Cells["J1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Margin Set-ExcelRange -Address $sheet1.Cells["J1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Margin
Set-Format -Address $sheet1.Cells["N1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Passenger Set-ExcelRange -Address $sheet1.Cells["N1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Passenger
Set-Format -Address $sheet1.Cells["E2"] -Value '($)' Set-ExcelRange -Address $sheet1.Cells["E2"] -Value '($)'
Set-Format -Address $sheet1.Cells["G2"] -Value '%' Set-ExcelRange -Address $sheet1.Cells["G2"] -Value '%'
Set-Format -Address $sheet1.Cells["I2"] -Value '($)' Set-ExcelRange -Address $sheet1.Cells["I2"] -Value '($)'
Set-Format -Address $sheet1.Cells["K2"] -Value '%' Set-ExcelRange -Address $sheet1.Cells["K2"] -Value '%'
Set-Format -Address $sheet1.Cells["C10"] -HorizontalAlignment Right -Bold -Value "Grand Total Calculation" Set-ExcelRange -Address $sheet1.Cells["C10"] -HorizontalAlignment Right -Bold -Value "Grand Total Calculation"
Set-Format -Address $sheet1.Cells["E10"] -Formula "=Sum(E3:E8)" -Bold Set-ExcelRange -Address $sheet1.Cells["E10"] -Formula "=Sum(E3:E8)" -Bold
Set-Format -Address $sheet1.Cells["I10"] -Formula "=Sum(I3:I8)" -Bold Set-ExcelRange -Address $sheet1.Cells["I10"] -Formula "=Sum(I3:I8)" -Bold
Set-Format -Address $sheet1.Cells["M10"] -Formula "=Sum(M3:M8)" -Bold Set-ExcelRange -Address $sheet1.Cells["M10"] -Formula "=Sum(M3:M8)" -Bold
Set-Format -Address $sheet1.Cells["O10"] -Formula "=Sum(O3:O8)" -Bold Set-ExcelRange -Address $sheet1.Cells["O10"] -Formula "=Sum(O3:O8)" -Bold
Close-ExcelPackage $excel -Show Close-ExcelPackage $excel -Show

View File

@@ -10,7 +10,7 @@
Preset2 will set AutoFilter and add the Title "Daily Report". Preset2 will set AutoFilter and add the Title "Daily Report".
(see comments and code below). (see comments and code below).
#> #>
Function Out-Excel { function Out-Excel {
[CmdletBinding(DefaultParameterSetName = 'Default')] [CmdletBinding(DefaultParameterSetName = 'Default')]
param( param(
[switch] [switch]

View File

@@ -13,7 +13,7 @@
* Add .01 in column F * Add .01 in column F
#> #>
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$path = "$Env:TEMP\DataValidation.xlsx" $path = "$Env:TEMP\DataValidation.xlsx"
Remove-Item $path -ErrorAction SilentlyContinue Remove-Item $path -ErrorAction SilentlyContinue
@@ -39,7 +39,7 @@ $excelPackage = @('Chisel', 'Crowbar', 'Drill', 'Hammer', 'Nails', 'Saw', 'Screw
#region Creating a list using a PowerShell array #region Creating a list using a PowerShell array
$ValidationParams = @{ $ValidationParams = @{
WorkSheet = $excelPackage.sales Worksheet = $excelPackage.sales
ShowErrorMessage = $true ShowErrorMessage = $true
ErrorStyle = 'stop' ErrorStyle = 'stop'
ErrorTitle = 'Invalid Data' ErrorTitle = 'Invalid Data'

View File

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

View File

@@ -1,6 +1,6 @@
param ($fibonacciDigits=10) param ($fibonacciDigits=10)
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "fib.xlsx" $file = "fib.xlsx"
Remove-Item "fib.xlsx" -ErrorAction Ignore Remove-Item "fib.xlsx" -ErrorAction Ignore

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$xlfile = "$env:temp\testFmt.xlsx" $xlfile = "$env:temp\testFmt.xlsx"

View File

@@ -16,9 +16,9 @@ $pkg = $data | Export-Excel -Path $f -AutoSize -PassThru
$ws = $pkg.Workbook.Worksheets["Sheet1"] $ws = $pkg.Workbook.Worksheets["Sheet1"]
Set-ExcelRange -WorkSheet $ws -Range "A2:C6" -BackgroundColor PeachPuff -FontColor Purple -FontSize 12 -Width 12 Set-ExcelRange -Worksheet $ws -Range "A2:C6" -BackgroundColor PeachPuff -FontColor Purple -FontSize 12 -Width 12
Set-ExcelRange -WorkSheet $ws -Range "D2:D6" -BackgroundColor WhiteSmoke -FontColor Orange -Bold -FontSize 12 -Width 12 Set-ExcelRange -Worksheet $ws -Range "D2:D6" -BackgroundColor WhiteSmoke -FontColor Orange -Bold -FontSize 12 -Width 12
Set-ExcelRange -WorkSheet $ws -Range "A1:D1" -BackgroundColor BlueViolet -FontColor Wheat -FontSize 12 -Width 12 Set-ExcelRange -Worksheet $ws -Range "A1:D1" -BackgroundColor BlueViolet -FontColor Wheat -FontSize 12 -Width 12
Set-ExcelRange -WorkSheet $ws -Range "A:A" -Width 15 Set-ExcelRange -Worksheet $ws -Range "A:A" -Width 15
Close-ExcelPackage -ExcelPackage $pkg -Show Close-ExcelPackage -ExcelPackage $pkg -Show

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$xlfile = "$env:temp\testFmt.xlsx" $xlfile = "$env:temp\testFmt.xlsx"
Remove-Item $xlfile -ErrorAction Ignore Remove-Item $xlfile -ErrorAction Ignore
@@ -11,7 +11,7 @@ $RandomStyle = {
) )
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 (Get-Random @("LightGreen", "Gray", "Red"))
} }
} }

View File

@@ -1,12 +1,12 @@
if(!(gcm ig -ErrorAction SilentlyContinue)) { if(!(Get-Command ig -ErrorAction SilentlyContinue)) {
"Use ``Install-Module NameIT`` to get the needed module from the gallery to support running this script" "Use ``Install-Module NameIT`` to get the needed module from the gallery to support running this script"
return return
} }
$sign=@{sign=echo + -} $sign=@{sign=@( "+", "-" )}
$location=@{location=echo Atlanta Newark Washington Chicago Philadelphia Houston Phoneix} $location=@{location=@("Atlanta", "Newark", "Washington", "Chicago", "Philadelphia", "Houston", "Phoneix")}
$(1..6 | Foreach-Object { $(1..6 | Foreach-Object {

View File

@@ -13,7 +13,7 @@ Timestamp,Tenant
10/29/2018 3:01:40.989,1 10/29/2018 3:01:40.989,1
10/29/2018 3:01:50.545,1 10/29/2018 3:01:50.545,1
10/29/2018 3:02:00.999,1 10/29/2018 3:02:00.999,1
"@ | Select-Object @{n = 'Timestamp'; e = {get-date $_.timestamp}}, tenant, @{n = 'Bucket'; e = { - (get-date $_.timestamp).Second % 30}} "@ | Select-Object @{n = 'Timestamp'; e = {Get-date $_.timestamp}}, tenant, @{n = 'Bucket'; e = { - (Get-date $_.timestamp).Second % 30}}
$f = "$env:temp\pivottest.xlsx" $f = "$env:temp\pivottest.xlsx"
Remove-Item $f -ErrorAction SilentlyContinue Remove-Item $f -ErrorAction SilentlyContinue

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
@" @"
site,link site,link

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
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,3 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
Import-Html "http://www.science.co.il/PTelements.asp" 1 Import-Html "http://www.science.co.il/PTelements.asp" 1

View File

@@ -1,3 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
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

@@ -1,5 +1,5 @@
#requires -modules "Get-IndexedItem" #requires -modules "Get-IndexedItem"
[cmdletbinding()] [CmdletBinding()]
Param() Param()
Remove-Item ~\documents\music.xlsx -ErrorAction SilentlyContinue Remove-Item ~\documents\music.xlsx -ErrorAction SilentlyContinue
[System.Diagnostics.Stopwatch]$stopwatch = [System.Diagnostics.Stopwatch]::StartNew() [System.Diagnostics.Stopwatch]$stopwatch = [System.Diagnostics.Stopwatch]::StartNew()

View File

@@ -2,7 +2,7 @@
$path = "$env:TEMP\Test.xlsx" $path = "$env:TEMP\Test.xlsx"
Remove-item -Path $path -ErrorAction SilentlyContinue Remove-item -Path $path -ErrorAction SilentlyContinue
#Export disk volume, and Network adapter to their own sheets. #Export disk volume, and Network adapter to their own sheets.
Get-WmiObject -Class win32_logicaldisk | Get-CimInstance -ClassName Win32_LogicalDisk |
Select-Object -Property DeviceId,VolumeName, Size,Freespace | Select-Object -Property DeviceId,VolumeName, Size,Freespace |
Export-Excel -Path $path -WorkSheetname Volumes -NumberFormat "0,000" Export-Excel -Path $path -WorkSheetname Volumes -NumberFormat "0,000"
Get-NetAdapter | Get-NetAdapter |

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$xlfile = "$env:temp\AllSales.xlsx" $xlfile = "$env:temp\AllSales.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
ColumnChart -Title "Central Limit Theorem" -NoLegend ($( ColumnChart -Title "Central Limit Theorem" -NoLegend ($(
for ($i = 1; $i -le 500; $i++) { for ($i = 1; $i -le 500; $i++) {

View File

@@ -2,7 +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 {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
PieChart -Title "Total Handles by Company" ` PieChart -Title "Total Handles by Company" `
(Invoke-Sum (Get-Process | Where-Object company) company handles) (Invoke-Sum (Get-Process | Where-Object company) company handles)

View File

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

View File

@@ -1,4 +1,4 @@
$PropertyNames = echo Cost Date Name $PropertyNames = @("Cost", "Date", "Name")
New-PSItem 1.1 1/1/2015 John $PropertyNames New-PSItem 1.1 1/1/2015 John $PropertyNames
New-PSItem 2.1 1/2/2015 Tom New-PSItem 2.1 1/2/2015 Tom

View File

@@ -1,3 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
BarChart (.\TargetData.ps1) "A BarChart" BarChart (.\TargetData.ps1) "A BarChart"

View File

@@ -1,3 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
ColumnChart (.\TargetData.ps1) "A ColumnChart" ColumnChart (.\TargetData.ps1) "A ColumnChart"

View File

@@ -1,3 +1,3 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
PieChart (.\TargetData.ps1) "A PieChart" PieChart (.\TargetData.ps1) "A PieChart"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$xlFile = "$env:TEMP\mw.xlsx" $xlFile = "$env:TEMP\mw.xlsx"

View File

@@ -1,7 +1,7 @@
Remove-Item -Path "$env:temp\server*.xlsx" , "$env:temp\Combined*.xlsx" -ErrorAction SilentlyContinue Remove-Item -Path "$env:temp\server*.xlsx" , "$env:temp\Combined*.xlsx" -ErrorAction SilentlyContinue
#Get a subset of services into $s and export them #Get a subset of services into $s and export them
[System.Collections.ArrayList]$s = get-service | Select-Object -first 25 -Property * [System.Collections.ArrayList]$s = Get-service | Select-Object -first 25 -Property *
$s | Export-Excel -Path $env:temp\server1.xlsx $s | Export-Excel -Path $env:temp\server1.xlsx
#$s is a zero based array, excel rows are 1 based and excel has a header row so Excel rows will be 2 + index in $s. #$s is a zero based array, excel rows are 1 based and excel has a header row so Excel rows will be 2 + index in $s.

View File

@@ -1,7 +1,7 @@
Remove-Item -Path "$env:temp\server*.xlsx" , "$env:temp\Combined*.xlsx" -ErrorAction SilentlyContinue Remove-Item -Path "$env:temp\server*.xlsx" , "$env:temp\Combined*.xlsx" -ErrorAction SilentlyContinue
#Get a subset of services into $s and export them #Get a subset of services into $s and export them
[System.Collections.ArrayList]$s = get-service | Select-Object -first 25 -Property Name,DisplayName,StartType [System.Collections.ArrayList]$s = Get-service | Select-Object -first 25 -Property Name,DisplayName,StartType
$s | Export-Excel -Path $env:temp\server1.xlsx $s | Export-Excel -Path $env:temp\server1.xlsx
#$s is a zero based array, excel rows are 1 based and excel has a header row so Excel rows will be 2 + index in $s. #$s is a zero based array, excel rows are 1 based and excel has a header row so Excel rows will be 2 + index in $s.

View File

@@ -9,6 +9,7 @@ param(
) )
function New-CellData { function New-CellData {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification='Does not change system state')]
param( param(
$Range, $Range,
$Value, $Value,
@@ -16,7 +17,7 @@ function New-CellData {
) )
$setFormatParams = @{ $setFormatParams = @{
WorkSheet = $ws Worksheet = $ws
Range = $Range Range = $Range
NumberFormat = $Format NumberFormat = $Format
} }
@@ -28,7 +29,7 @@ function New-CellData {
$setFormatParams.Value = $Value $setFormatParams.Value = $Value
} }
Set-Format @setFormatParams Set-ExcelRange @setFormatParams
} }
$f = "$PSScriptRoot\mortgage.xlsx" $f = "$PSScriptRoot\mortgage.xlsx"
@@ -37,19 +38,19 @@ Remove-Item $f -ErrorAction SilentlyContinue
$pkg = "" | Export-Excel $f -Title 'Fixed Rate Loan Payments' -PassThru -AutoSize $pkg = "" | Export-Excel $f -Title 'Fixed Rate Loan Payments' -PassThru -AutoSize
$ws = $pkg.Workbook.Worksheets["Sheet1"] $ws = $pkg.Workbook.Worksheets["Sheet1"]
New-CellData A3 'Amount' New-CellData -Range A3 -Value 'Amount'
New-CellData B3 $Amount '$#,##0' New-CellData -Range B3 -Value $Amount -Format '$#,##0'
New-CellData A4 "Interest Rate" New-CellData -Range A4 -Value "Interest Rate"
New-CellData B4 $InterestRate 'Percentage' New-CellData -Range B4 -Value $InterestRate -Format 'Percentage'
New-CellData A5 "Term (Years)" New-CellData -Range A5 -Value "Term (Years)"
New-CellData B5 $Term New-CellData -Range B5 -Value $Term
New-CellData D3 "Monthly Payment" New-CellData -Range D3 -Value "Monthly Payment"
New-CellData F3 "=-PMT(F4, B5*12, B3)" '$#,##0.#0' New-CellData -Range F3 -Value "=-PMT(F4, B5*12, B3)" -Format '$#,##0.#0'
New-CellData D4 "Monthly Rate" New-CellData -Range D4 -Value "Monthly Rate"
New-CellData F4 "=((1+B4)^(1/12))-1" 'Percentage' New-CellData -Range F4 -Value "=((1+B4)^(1/12))-1" -Format 'Percentage'
Close-ExcelPackage $pkg -Show Close-ExcelPackage $pkg -Show

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$xlfile = "$env:TEMP\testThis.xlsx" $xlfile = "$env:TEMP\testThis.xlsx"
Remove-Item $xlfile -ErrorAction Ignore Remove-Item $xlfile -ErrorAction Ignore

View File

@@ -1,16 +1,17 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$header = echo ` $header = @(
'Date/Time - Peak Brightness (UT)' ` 'Date/Time - Peak Brightness (UT)' ,
'Latitude (Deg)' ` 'Latitude (Deg)' ,
'Longitude (Deg)' ` 'Longitude (Deg)' ,
'Altitude (km)' ` 'Altitude (km)' ,
'Velocity (km/s)' ` 'Velocity (km/s)' ,
'Velocity Components (km/s) vx' ` 'Velocity Components (km/s) vx' ,
'Velocity Components (km/s) vy' ` 'Velocity Components (km/s) vy' ,
'Velocity Components (km/s) vz' ` 'Velocity Components (km/s) vz' ,
'Total Radiated Energy (J)' ` 'Total Radiated Energy (J)' ,
'Calculated Total Impact Energy (kt)' 'Calculated Total Impact Energy (kt)'
)
$splat=@{ $splat=@{
url='http://neo.jpl.nasa.gov/fireballs/' url='http://neo.jpl.nasa.gov/fireballs/'

View File

@@ -1,5 +1,6 @@
function New-PSItem { function New-PSItem {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification='Does not change system state')]
param()
$totalArgs = $args.Count $totalArgs = $args.Count
if($args[-1] -is [array]) { if($args[-1] -is [array]) {

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "$env:TEMP\disks.xlsx" $file = "$env:TEMP\disks.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "$env:temp\disks.xlsx" $file = "$env:temp\disks.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "disks.xlsx" $file = "disks.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "disks.xlsx" $file = "disks.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "disks.xlsx" $file = "disks.xlsx"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "disks.xlsx" $file = "disks.xlsx"

View File

@@ -32,6 +32,8 @@
## so you have a chance to "go back" after the last line of you demo ## so you have a chance to "go back" after the last line of you demo
################################################################################################## ##################################################################################################
## ##
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '', Justification='Correct and desirable usage')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingInvokeExpression', '', Justification='Correct and desirable usage')]
param( param(
$file=".\demo.txt", $file=".\demo.txt",
[int]$command=0, [int]$command=0,
@@ -170,7 +172,7 @@ Running demo: $file
if($i -le $_lines.Count) { if($i -le $_lines.Count) {
if($i -gt 0) { if($i -gt 0) {
# extra line back because we're gonna step forward when we loop # extra line back because we're gonna step forward when we loop
$_i = Rewind $_lines $_i (($_i-$i)+1) $_i = Rewind -lines $_lines -index $_i -steps (($_i-$i)+1)
} else { } else {
$_i = -1 # Start negative, because we step forward when we loop $_i = -1 # Start negative, because we step forward when we loop
} }
@@ -178,10 +180,10 @@ Running demo: $file
} }
"f" { # Find by pattern "f" { # Find by pattern
$match = $_lines | Select-String (Read-Host "search string") $match = $_lines | Select-String (Read-Host "search string")
if($match -eq $null) { if($null -eq $match) {
Write-Host -Fore Red "Can't find a matching line" Write-Host -Fore Red "Can't find a matching line"
} else { } else {
$match | % { Write-Host -Fore $promptColor $("[{0,2}] {1}" -f ($_.LineNumber - 1), $_.Line) } $match | ForEach-Object { Write-Host -Fore $promptColor $("[{0,2}] {1}" -f ($_.LineNumber - 1), $_.Line) }
if($match.Count -lt 1) { if($match.Count -lt 1) {
$_i = $match.lineNumber - 2 # back a line, we're gonna step forward when we loop $_i = $match.lineNumber - 2 # back a line, we're gonna step forward when we loop
} else { } else {

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$file = "$env:Temp\sales.xlsx" $file = "$env:Temp\sales.xlsx"

View File

@@ -20,11 +20,11 @@ $pivotTableParams = @{
PivotTableName = "ByRegion" PivotTableName = "ByRegion"
Address = $excel.Sheet1.cells["F1"] Address = $excel.Sheet1.cells["F1"]
SourceWorkSheet = $excel.Sheet1 SourceWorkSheet = $excel.Sheet1
PivotRows = echo Region Fruit Date PivotRows = @("Region", "Fruit", "Date")
PivotData = @{'sold' = 'sum'} PivotData = @{'sold' = 'sum'}
PivotTableStyle = 'Light21' PivotTableStyle = 'Light21'
GroupDateRow = "Date" GroupDateRow = "Date"
GroupDatePart = echo Years Quarters GroupDatePart = @("Years", "Quarters")
} }
$pt = Add-PivotTable @pivotTableParams -PassThru $pt = Add-PivotTable @pivotTableParams -PassThru
@@ -33,21 +33,21 @@ $pt.RowHeaderCaption = "By " + ($pivotTableParams.PivotRows -join ",")
$pivotTableParams.PivotTableName = "ByFruit" $pivotTableParams.PivotTableName = "ByFruit"
$pivotTableParams.Address = $excel.Sheet1.cells["J1"] $pivotTableParams.Address = $excel.Sheet1.cells["J1"]
$pivotTableParams.PivotRows = echo Fruit Region Date $pivotTableParams.PivotRows = @("Fruit", "Region", "Date")
$pt = Add-PivotTable @pivotTableParams -PassThru $pt = Add-PivotTable @pivotTableParams -PassThru
$pt.RowHeaderCaption = "By Fruit,Region" $pt.RowHeaderCaption = "By Fruit,Region"
$pivotTableParams.PivotTableName = "ByDate" $pivotTableParams.PivotTableName = "ByDate"
$pivotTableParams.Address = $excel.Sheet1.cells["N1"] $pivotTableParams.Address = $excel.Sheet1.cells["N1"]
$pivotTableParams.PivotRows = echo Date Region Fruit $pivotTableParams.PivotRows = @("Date", "Region", "Fruit")
$pt = Add-PivotTable @pivotTableParams -PassThru $pt = Add-PivotTable @pivotTableParams -PassThru
$pt.RowHeaderCaption = "By Date,Region,Fruit" $pt.RowHeaderCaption = "By Date,Region,Fruit"
$pivotTableParams.PivotTableName = "ByYears" $pivotTableParams.PivotTableName = "ByYears"
$pivotTableParams.Address = $excel.Sheet1.cells["S1"] $pivotTableParams.Address = $excel.Sheet1.cells["S1"]
$pivotTableParams.GroupDatePart = echo Years $pivotTableParams.GroupDatePart = "Years"
$pt = Add-PivotTable @pivotTableParams -PassThru $pt = Add-PivotTable @pivotTableParams -PassThru
$pt.RowHeaderCaption = "By Years,Region" $pt.RowHeaderCaption = "By Years,Region"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$ExcelParams = @{ $ExcelParams = @{
Path = "$env:TEMP\test1.xlsx" Path = "$env:TEMP\test1.xlsx"

View File

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

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$plt = New-Plot $plt = New-Plot
$plt.Plot((Get-Range 0 5 .02|Foreach-Object {[math]::Cos(2*[math]::pi*$_)})) $plt.Plot((Get-Range 0 5 .02|Foreach-Object {[math]::Cos(2*[math]::pi*$_)}))

View File

@@ -0,0 +1,54 @@
param(
[Parameter(Mandatory)]
$path
)
$sheet1 = ConvertFrom-Csv @"
Region,Item,TotalSold
West,melon,27
North,avocado,21
West,kiwi,84
East,melon,23
North,kiwi,8
North,nail,29
North,kiwi,46
South,nail,83
East,pear,10
South,avocado,40
"@
$sheet2 = ConvertFrom-Csv @"
Region,Item,TotalSold
West,lemon,24
North,hammer,41
East,nail,87
West,lemon,68
North,screwdriver,9
North,drill,76
West,lime,28
West,pear,78
North,apple,95
South,melon,40
"@
$sheet3 = ConvertFrom-Csv @"
Region,Item,TotalSold
South,drill,100
East,saw,22
North,saw,5
West,orange,78
East,saw,27
North,screwdriver,57
South,hammer,66
East,saw,62
West,nail,98
West,nail,98
"@
Remove-Item $path -ErrorAction SilentlyContinue
$sheet1 | Export-Excel $path -WorksheetName Sheet1
$sheet2 | Export-Excel $path -WorksheetName Sheet2
$sheet3 | Export-Excel $xlfile -WorksheetName Sheet3
$path

View File

@@ -0,0 +1,19 @@
# Get-ExcelSheets
param(
[Parameter(Mandatory)]
$path
)
$hash = @{ }
$e = Open-ExcelPackage $path
foreach ($sheet in $e.workbook.worksheets) {
$hash[$sheet.name] = Import-Excel -ExcelPackage $e -WorksheetName $sheet.name
}
Close-ExcelPackage $e -NoSave
$hash

View File

@@ -0,0 +1,4 @@
$xlfile = "$env:TEMP\MultipleSheets.xlsx"
.\GenerateXlsx.ps1 $xlfile
.\Get-ExcelSheets.ps1 $xlfile

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$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 ,
@@ -44,17 +44,17 @@ Remove-Item -Path "~\Documents\temp.xlsx" -ErrorAction SilentlyContinue
$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-ExcelColumn -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-ExcelColumn -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-ExcelColumn -Worksheet $e.workbook.Worksheets["sheet1"] -Column 23 -Value $Evvalue -Heading "Ev"
Set-Format -Address $e.workbook.Worksheets["sheet1" ].Column(21) -HorizontalAlignment Left -AutoFit Set-ExcelRange -Address $e.workbook.Worksheets["sheet1" ].Column(21) -HorizontalAlignment Left -AutoFit
Set-Format -Address $e.workbook.Worksheets["sheet1" ].Column(22) -HorizontalAlignment Right -AutoFit Set-ExcelRange -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-ExcelRange -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-ExcelRange -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
@@ -78,10 +78,10 @@ $SQL = @"
#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-ExcelColumn -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-ExcelColumn -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-ExcelRange -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,6 +1,6 @@
#requires -modules "getSql" #requires -modules "getSql"
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
#download f1Results from https://1drv.ms/f/s!AhfYu7-CJv4egbt5FD7Cdxi8jSz3aQ and update the path below #download f1Results from https://1drv.ms/f/s!AhfYu7-CJv4egbt5FD7Cdxi8jSz3aQ and update the path below
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
@@ -19,6 +19,6 @@ Set-Row -Worksheet $ws -Heading "Average" -Value {"=Average($columnName`2
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
Set-Column -Worksheet $ws -Heading "WinsToFast" -Value {"=E$row/C$row"} -Column 7 -AutoSize -AutoNameRange Set-Column -Worksheet $ws -Heading "WinsToFast" -Value {"=E$row/C$row"} -Column 7 -AutoSize -AutoNameRange
Set-Format -WorkSheet $ws -Range "F2:G50" -NumberFormat "0.0%" Set-ExcelRange -Worksheet $ws -Range "F2:G50" -NumberFormat "0.0%"
$chart = New-ExcelChart -NoLegend -ChartType XYScatter -XRange WinsToFast -YRange WinsToPoles -Column 7 -Width 2000 -Height 700 -Title "Poles vs fastlaps" $chart = New-ExcelChart -NoLegend -ChartType XYScatter -XRange WinsToFast -YRange WinsToPoles -Column 7 -Width 2000 -Height 700 -Title "Poles vs fastlaps"
Export-Excel -ExcelPackage $Excel -WorkSheetname "Winners" -ExcelChartDefinition $chart -Show Export-Excel -ExcelPackage $Excel -WorkSheetname "Winners" -ExcelChartDefinition $chart -Show

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$path = "$env:TEMP\testBackgroundColor.xlsx" $path = "$env:TEMP\testBackgroundColor.xlsx"

View File

@@ -1,4 +1,4 @@
try { . $PSScriptRoot\..\..\LoadPSD1.ps1 } catch { } try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$xlfile = "$env:TEMP\SalesByQuarter.xlsx" $xlfile = "$env:TEMP\SalesByQuarter.xlsx"
Remove-Item $xlfile -ErrorAction SilentlyContinue Remove-Item $xlfile -ErrorAction SilentlyContinue
@@ -15,7 +15,7 @@ $excel = $data | Export-Excel $xlfile -Passthru -AutoSize -TableName SalesByQuar
$ws = $excel.Sheet1 $ws = $excel.Sheet1
Set-Format -WorkSheet $ws -Range "B2:E5" -NumberFormat "$#,##0" -AutoSize Set-ExcelRange -Worksheet $ws -Range "B2:E5" -NumberFormat "$#,##0" -AutoSize
$sparkLineType = "line" $sparkLineType = "line"
$null = $ws.SparklineGroups.Add( $sparkLineType, $ws.Cells["F2"], $ws.Cells["B2:E2"] ) $null = $ws.SparklineGroups.Add( $sparkLineType, $ws.Cells["F2"], $ws.Cells["B2:E2"] )
$null = $ws.SparklineGroups.Add( $sparkLineType, $ws.Cells["F3"], $ws.Cells["B3:E3"] ) $null = $ws.SparklineGroups.Add( $sparkLineType, $ws.Cells["F3"], $ws.Cells["B3:E3"] )

View File

@@ -1,4 +1,4 @@
try { . $PSScriptRoot\..\..\LoadPSD1.ps1 } catch { } try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
class data { class data {
[datetime]$Date [datetime]$Date
@@ -41,8 +41,8 @@ Remove-Item $xlfile -ErrorAction SilentlyContinue
$excel = $data | Export-Excel $xlfile -WorksheetName SEKRates -AutoSize -PassThru $excel = $data | Export-Excel $xlfile -WorksheetName SEKRates -AutoSize -PassThru
# Add a column sparkline for all currencies # Add a column sparkline for all currencies
Set-Format -WorkSheet $excel.SEKRates -Range "A2:A12" -NumberFormat "yyyy-mm-dd" -AutoSize Set-ExcelRange -Worksheet $excel.SEKRates -Range "A2:A12" -NumberFormat "yyyy-mm-dd" -AutoSize
Set-Format -WorkSheet $excel.SEKRates -Range A15 -Value Column -AutoSize Set-ExcelRange -Worksheet $excel.SEKRates -Range A15 -Value Column -AutoSize
$sparklineCol = $excel.SEKRates.SparklineGroups.Add( $sparklineCol = $excel.SEKRates.SparklineGroups.Add(
"Column", "Column",
@@ -54,7 +54,7 @@ $sparklineCol.High = $true
$sparklineCol.ColorHigh.SetColor("Red") $sparklineCol.ColorHigh.SetColor("Red")
# Add a line sparkline for all currencies # Add a line sparkline for all currencies
Set-Format -WorkSheet $excel.SEKRates -Range A16 -Value Line -AutoSize Set-ExcelRange -Worksheet $excel.SEKRates -Range A16 -Value Line -AutoSize
$sparklineLine = $excel.SEKRates.SparklineGroups.Add( $sparklineLine = $excel.SEKRates.SparklineGroups.Add(
"Line", "Line",
$excel.SEKRates.Cells["B16:Q16"], $excel.SEKRates.Cells["B16:Q16"],
@@ -64,7 +64,7 @@ $sparklineLine = $excel.SEKRates.SparklineGroups.Add(
$sparklineLine.DateAxisRange = $excel.SEKRates.Cells["A2:A12"] $sparklineLine.DateAxisRange = $excel.SEKRates.Cells["A2:A12"]
# Add some more random values and add a stacked sparkline. # Add some more random values and add a stacked sparkline.
Set-Format -WorkSheet $excel.SEKRates -Range A17 -Value Stacked -AutoSize Set-ExcelRange -Worksheet $excel.SEKRates -Range A17 -Value Stacked -AutoSize
$numbers = 2, -1, 3, -4, 8, 5, -12, 18, 99, 1, -4, 12, -8, 9, 0, -8 $numbers = 2, -1, 3, -4, 8, 5, -12, 18, 99, 1, -4, 12, -8, 9, 0, -8
@@ -86,7 +86,7 @@ $sparklineStacked.ColorLow.SetColor("Green")
$sparklineStacked.Negative = $true $sparklineStacked.Negative = $true
$sparklineStacked.ColorNegative.SetColor("Blue") $sparklineStacked.ColorNegative.SetColor("Blue")
Set-Format -WorkSheet $excel.SEKRates -Range "A15:A17" -Bold -Height 50 -AutoSize Set-ExcelRange -Worksheet $excel.SEKRates -Range "A15:A17" -Bold -Height 50 -AutoSize
$v = @" $v = @"
High - Red High - Red
@@ -94,6 +94,6 @@ Low - Green
Negative - Blue Negative - Blue
"@ "@
Set-Format -WorkSheet $excel.SEKRates -Range S17 -Value $v -WrapText -Width 20 -HorizontalAlignment Center -VerticalAlignment Center Set-ExcelRange -Worksheet $excel.SEKRates -Range S17 -Value $v -WrapText -Width 20 -HorizontalAlignment Center -VerticalAlignment Center
Close-ExcelPackage $excel -Show Close-ExcelPackage $excel -Show

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
#. ..\New-PSItem.ps1 #. ..\New-PSItem.ps1
@@ -6,7 +6,7 @@ try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item "$env:temp\functions.xlsx" -ErrorAction SilentlyContinue Remove-Item "$env:temp\functions.xlsx" -ErrorAction SilentlyContinue
$( $(
New-PSItem 12001 Nails 37 3.99 =C2*D2 (echo ID Product Quantity Price Total) New-PSItem 12001 Nails 37 3.99 =C2*D2 @("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

View File

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

View File

@@ -1,9 +1,9 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
Remove-Item "$env:temp\functions.xlsx" -ErrorAction SilentlyContinue Remove-Item "$env:temp\functions.xlsx" -ErrorAction SilentlyContinue
$( $(
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)" @("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)"

View File

@@ -1,4 +1,4 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {} try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
Remove-Item "$env:temp\hyperlink.xlsx" -ErrorAction SilentlyContinue Remove-Item "$env:temp\hyperlink.xlsx" -ErrorAction SilentlyContinue

Some files were not shown because too many files have changed in this diff Show More