Compare commits

...

263 Commits
4.10 ... v5.1.1

Author SHA1 Message Date
dfinke
d07affcd46 updated 2018-08-02 17:10:54 -04:00
Doug Finke
2b3228d041 Merge pull request #411 from jhoneill/master
Fixed Parameter issues in Add-ConditionalFormat & test for it
2018-08-02 17:07:35 -04:00
jhoneill
34c5177dfc readme fix 2018-08-02 14:01:16 +01:00
jhoneill
f52ba1c50a Merge remote-tracking branch 'upstream/master' 2018-08-02 13:56:21 +01:00
jhoneill
b50cc67bb3 warn instead of aborting when a property won't go into a cell. 2018-08-02 13:56:01 +01:00
jhoneill
42e2b11a88 Merge branch 'master' of https://github.com/jhoneill/ImportExcel 2018-08-02 13:49:58 +01:00
jhoneill
b6509d3f5c Generate warning instead of aborting when a property can't be inserted into a cell. 2018-08-02 13:49:35 +01:00
jhoneill
29503861fb Generate warning instead of aborting when a property can't be inserted into a cell. 2018-08-02 13:27:49 +01:00
jhoneill
196497e3a0 Applied fix for parameter issues already done for Set format to conditional format 2018-08-02 11:20:19 +01:00
dfinke
d9fe0a31c3 sorted file list 2018-08-01 11:22:30 -04:00
dfinke
26bf4b9a64 refactored the supporting file list that gets copied so it can be tested 2018-08-01 11:18:13 -04:00
dfinke
a0719b22f0 spell check 2018-08-01 10:49:02 -04:00
dfinke
42d56ac557 bump version 2018-08-01 10:48:53 -04:00
dfinke
9b9c1de8fd remove ps1 2018-08-01 10:48:45 -04:00
Doug Finke
e3fdbf9fcc Merge pull request #408 from jhoneill/master
Argument completers for Number format and Worksheetname, bug fix for hidden in set format & more
2018-08-01 10:32:26 -04:00
jhoneill
abb971be88 Argument completers, Fix hidden in Set format. More tests 2018-08-01 10:35:10 +01:00
jhoneill
77fb51da8d Argument completers for worksheet name & number format. Fixed bug with -hidden 2018-07-31 15:07:33 +01:00
Doug Finke
61c73461ca Update README.md 2018-07-29 20:36:44 -04:00
Doug Finke
00d88eec0e Merge pull request #405 from jhoneill/master
Internal hyperlinks, reworked format parameters, unhide in export Excel
2018-07-29 20:24:17 -04:00
jhoneill
d7dc6102e8 Merge remote-tracking branch 'upstream/master' 2018-07-28 23:04:47 +01:00
jhoneill
04fb8717b9 Extra parameter help in Set-Column needed a format fix 2018-07-27 23:28:44 +01:00
jhoneill
b7cc70bb0b Removed test which works locally but not in appveyor 2018-07-27 23:10:09 +01:00
jhoneill
bc2277cfdd Readme update after fix 2018-07-27 23:00:01 +01:00
jhoneill
d23d7950ab Readme update after fix 2018-07-27 22:48:15 +01:00
jhoneill
ff02988920 Readme fix 2018-07-27 22:44:10 +01:00
jhoneill
07f15f417f Help updates; formatting.ps1 duplicates other file contents, removed it. 2018-07-27 22:25:00 +01:00
jhoneill
e7099d78ab Merge branch 'master' of https://github.com/jhoneill/ImportExcel 2018-07-26 15:40:06 +01:00
jhoneill
af13cfa1d0 unhide support in Export-Excel, return range in Set-Row/Column 2018-07-26 15:40:00 +01:00
jhoneill
2d22894858 unhide support in Export-Excel, return range in Set-Row/Column 2018-07-26 15:23:07 +01:00
jhoneill
5082d2120d Increases to test coverage (now >80%) 2018-07-26 00:57:41 +01:00
jhoneill
7995503bd3 Re-work of parameters in Set-Format (#400) 2018-07-25 21:36:14 +01:00
dfinke
51a32fb23e Removed the downloadstring 2018-07-20 15:24:48 -04:00
dfinke
1b8eb35437 added badge 2018-07-20 15:12:10 -04:00
jhoneill
51c6a98360 Internal Hyperlink support 2018-07-20 11:29:36 +01:00
dfinke
0e477ae6ef Removed VSTS build badge 2018-07-19 09:57:27 -04:00
dfinke
dda73a9138 added back badges 2018-07-19 09:54:11 -04:00
dfinke
cd7790153f update dictionary 2018-07-19 09:54:03 -04:00
Doug Finke
134dd2e172 Merge pull request #389 from jhoneill/master
Latest bunch of changes
2018-07-19 09:48:54 -04:00
jhoneill
245bbbd17b Tweak to Add-Conditional formatting 2018-07-18 19:53:02 +01:00
jhoneill
c9ad507966 All new Copy-ExcelWorksheet (+tests); fix sort in merge-Multiple 2018-07-18 16:32:10 +01:00
jhoneill
39ae2d9a53 Merge remote-tracking branch 'upstream/master' 2018-07-17 09:59:51 +01:00
jhoneill
d08fe73a79 Fixed bug with MoveAfter, param improvement on add-worksheet, tests++ 2018-07-17 09:46:47 +01:00
dfinke
8c8c852785 add short video demoing running tests and showing colorized results in Excel 2018-07-16 15:45:13 -04:00
Doug Finke
c2d5d97ffd Merge pull request #394 from dfinke/UnitTestRestAPI
Unit test rest api
2018-07-16 15:37:35 -04:00
dfinke
69b5b7f169 add psd1 check 2018-07-16 15:26:58 -04:00
dfinke
26f60aac28 up'd to 3 seconds for VSTS build servers 2018-07-16 12:46:57 -04:00
dfinke
f3f48c5ffc tweak badges 2018-07-16 12:40:16 -04:00
dfinke
7690494224 fix badge links 2018-07-16 12:39:50 -04:00
dfinke
d1164f2049 up'd the time for importing a spreadsheet. VSTS is a bit slower 2018-07-16 12:35:27 -04:00
dfinke
97156620ec updated badge placement 2018-07-16 12:26:01 -04:00
Doug Finke
e2c5e0b7cf Update README.md
Added VSTS build badge
2018-07-16 12:21:35 -04:00
dfinke
ffdb6533de wildcard the zip artifact 2018-07-15 12:43:48 -04:00
dfinke
32bb371145 add version and timestamp to zip artifact 2018-07-15 12:41:47 -04:00
dfinke
21ebf6fc73 Create the zip before 2018-07-15 12:35:51 -04:00
dfinke
6950463966 Create the zip file if tests pass 2018-07-15 12:33:03 -04:00
dfinke
dfe09612ff Create a zip artifact 2018-07-15 12:29:22 -04:00
dfinke
e5d2051ee8 Added badges back 2018-07-15 12:18:13 -04:00
dfinke
f785fe0566 Merge latest changes 2018-07-15 12:11:58 -04:00
dfinke
7cdd486c51 Add example of Merge-WorkShett 2018-07-15 11:39:06 -04:00
dfinke
d5ebfd5db4 Add a Copy Source example 2018-07-15 10:43:02 -04:00
dfinke
a9fc4aa613 updated 2018-07-15 10:13:41 -04:00
dfinke
4c4093f4de Added MoveSheets.ps1 example 2018-07-15 10:13:38 -04:00
dfinke
e6b5bf1937 Moved to __tests_ for CI 2018-07-15 09:48:17 -04:00
jhoneill
50c02cd8f1 Changes to match latest style rules (trailing spaces & position of null) 2018-07-15 11:19:53 +01:00
jhoneill
7de956b343 Fixed column name handling in merge-multipleWorksheets. More tests 2018-07-14 23:40:50 +01:00
jhoneill
3697d53bdd Put Get-ExcelColumnName Back in
Violated the "break nothing" rule by taking it out
2018-07-13 18:42:45 +01:00
jhoneill
cd1dcde6d0 Compare-Worksheet.tests.ps1 changed for latest style guide rules 2018-07-13 11:10:31 +01:00
jhoneill
82efbef979 Mod to export-excel to be appveyor friendly 2018-07-13 00:09:21 +01:00
jhoneill
87c2ff610d Added JoinWorksheet tests - addition to export-exceltests 2018-07-12 23:58:20 +01:00
jhoneill
2efb2c99f4 Merge branch 'master' of https://github.com/jhoneill/ImportExcel 2018-07-12 20:26:42 +01:00
jhoneill
08155c25f5 Merged two Join Worksheet sample directories 2018-07-12 20:26:37 +01:00
jhoneill
8579ce0b78 Merged two Join Worksheet sample directories 2018-07-12 20:21:52 +01:00
jhoneill
a563857bf3 Removed duplicate of compare-Worksheet.tests.psq 2018-07-12 20:17:38 +01:00
jhoneill
e699fba967 new Merge worksheet test and a bug fix for merge with wide data 2018-07-12 16:53:55 +01:00
jhoneill
3988658875 Merge remote-tracking branch 'upstream/master' 2018-07-12 16:49:49 +01:00
jhoneill
90942e4084 Improved tests for conversions, added quick chart support, and extended Send-SQLData 2018-07-12 10:49:29 +01:00
jhoneill
de72cfe8cd Removed GetExcelColumnName 2018-07-10 13:44:29 +01:00
jhoneill
bfbba90c44 Updates to Help text - mostly layout, inc making it VSCode freindly 2018-07-10 13:43:15 +01:00
jhoneill
9a81ddeebd Relayout of Setformat for readablity 2018-07-10 13:37:40 +01:00
dfinke
d3b7bfaa63 updated 2018-07-08 18:38:07 -04:00
dfinke
f18bca69eb updated 2018-07-08 18:37:30 -04:00
dfinke
6734b2bde1 Added badges, including version badge #385 2018-07-08 18:34:22 -04:00
jhoneill
75676a810f Fix to parameter set detection in Export-Excel
Parameter set problem was causing  append to demand a table name.
Tweaked eample in join worksheet, added another join worksheet sample
2018-07-07 12:00:14 +01:00
jhoneill
02878e1d4d Merge branch 'master' of https://github.com/jhoneill/ImportExcel 2018-07-06 20:44:43 +01:00
jhoneill
82458edd7c Updates tests, extra parameters on join worksheet,
Also better distinction of "whole sheet" from "added data", optimization of add-cellvalue (see readme.md)
2018-07-06 20:41:41 +01:00
jhoneill
73af0b5dc9 Updated tests for export-excel 2018-07-06 19:57:17 +01:00
jhoneill
eec13674dc More tests; More parameters in Join Worksheet 2018-07-06 18:11:08 +01:00
dfinke
49dd9f20ee Removed commented [Uri] code 2018-07-06 09:06:07 -04:00
dfinke
7563185bd4 updated to use the new way that works 2018-07-05 19:46:59 -04:00
dfinke
c5270e9a47 Changed to IsWellFormedUriString . Can pass in a uri from csv 2018-07-05 17:19:21 -04:00
dfinke
6797f22775 fix spelling 2018-07-05 17:05:52 -04:00
dfinke
e5841d76c6 Added join sales data example 2018-07-05 16:58:36 -04:00
dfinke
fc4b1638da moved CmdletBinding after help comment. Examples were not displaying 2018-07-05 16:29:25 -04:00
dfinke
df220534d8 added Join-Worksheet to intallmodule 2018-07-05 16:26:43 -04:00
Doug Finke
fb888f239e Merge pull request #382 from dfinke/dcf-addCheckForLoadingPSD1
Added try/catch. Expanded aliases
2018-07-05 16:16:56 -04:00
dfinke
eac352c28a Added try/catch. Expanded aliases 2018-07-05 16:14:56 -04:00
dfinke
e4fbf7e92e bumped version to 5.1.0 2018-07-05 15:24:52 -04:00
dfinke
852575eb02 one more commented out 2018-07-05 14:39:01 -04:00
dfinke
ab9776fce2 commented out a couple of failing tests 2018-07-05 14:37:26 -04:00
dfinke
41eecf2528 commented out tests for -Show 2018-07-05 14:34:27 -04:00
dfinke
b722269584 Moved compare worksheet tests so appveyor will build 2018-07-05 14:28:13 -04:00
dfinke
e8d60c7040 added appveyor badge back 2018-07-05 14:27:02 -04:00
dfinke
35b722c7eb updated 2018-07-05 14:25:28 -04:00
Doug Finke
c5265c9f1c Merge pull request #378 from jhoneill/master
Bug fixes for add-chart and compare-ws
2018-07-05 14:21:25 -04:00
jhoneill
bd6a5a3faf ConvertToSQLInsert out of sync 2018-07-05 17:40:05 +01:00
jhoneill
892ba5d73f 5 July See readme.md 2018-07-05 17:34:12 +01:00
jhoneill
fae040ced1 Merge remote-tracking branch 'upstream/master' 2018-07-05 07:18:13 +01:00
dfinke
15e176fc2c added pics for databar 2018-07-04 19:51:59 -04:00
dfinke
c7a27d69ff Added monthly temo w/ databar 2018-07-04 19:51:50 -04:00
dfinke
b641ce915f udpated 2018-07-04 19:51:35 -04:00
jhoneill
06986df83a See readme.md 2018-07-05 00:29:28 +01:00
dfinke
6c449bd9ce Added sales report with databar 2018-07-04 19:15:34 -04:00
dfinke
b591a4ab18 Added try/catch 2018-07-04 18:58:40 -04:00
dfinke
35553baa05 Added try catch for psd1 loading so it can be copy pasted to the console 2018-07-04 18:51:25 -04:00
dfinke
a9aeca9550 Determines if ImportExcel is installed and if not loads the local psd1 2018-07-04 18:50:44 -04:00
jhoneill
a72d489707 bug fix for formatting font not working on second sheet 2018-07-04 16:50:47 +01:00
jhoneill
512812d774 Move Compare-WorkSheet tests into __tests__ fixed bug where font not set in difference sheet 2018-07-04 16:47:15 +01:00
dfinke
f18bcff4db commented out two asserts 2018-07-04 08:56:23 -04:00
dfinke
886d185e6f report # of tests correctly 2018-07-04 08:54:18 -04:00
dfinke
d24890cb97 execute compare worksheet tests on appveyor 2018-07-04 08:52:49 -04:00
dfinke
c707848eff testing to fail the appveyor build 2018-07-04 08:48:10 -04:00
dfinke
5ed078222c revert test updates 2018-07-03 19:41:47 -04:00
jhoneill
d7e4a0ec2f Merge remote-tracking branch 'upstream/master' 2018-07-02 09:18:44 +01:00
dfinke
cb42bdec15 skip killing excel for appveyor run 2018-06-30 21:36:50 -04:00
dfinke
13a09a8a99 updated path for psd1 2018-06-30 21:32:09 -04:00
dfinke
33cf407c10 Moved tests to __tests__ so Appveyor can automatically run them 2018-06-30 21:19:42 -04:00
dfinke
23e6180e03 VS Code did not flag these as conflicts. Could be operator error 2018-06-30 21:15:26 -04:00
Doug Finke
4227453299 Merge pull request #371 from dfinke/jhoneill-master
Merge jhoneill latest set of changes
2018-06-30 20:55:02 -04:00
dfinke
a154fb94f4 added for vs code spell checking 2018-06-30 20:47:14 -04:00
dfinke
91eabeada1 resolved merge conflicts 2018-06-30 20:46:54 -04:00
jhoneill
8ef93de26f Pester Tests & bug fix for compare-ws (see readme) 2018-06-29 16:41:06 +01:00
jhoneill
94659d3fc2 fix 2018-06-29 16:29:45 +01:00
jhoneill
192a1aef87 Merge branch 'master' of https://github.com/jhoneill/ImportExcel 2018-06-29 16:26:35 +01:00
jhoneill
9f7884f991 Compare worksheet: tests, small bug fix,
updated readme

New tests for compare worksheet, fixed a bug when the worksheets have different names and are not in the same file sometimes, you can't assume an order when they are diffed and the results grouped.
2018-06-29 16:13:46 +01:00
jhoneill
36fc9501eb Bug fix in compare worksheet 2018-06-29 16:08:00 +01:00
jhoneill
06c2210951 Delete Compare-WorkSheet.ps1
Trying to get the case consistent I create a duplicate file
2018-06-29 16:04:15 +01:00
jhoneill
acd66607d3 Compare worksheet test and bugfix
Bug when worksheets had different names and were in different files, sometimes colour was not set
2018-06-29 16:01:47 +01:00
jhoneill
6c24db9593 Added -PivotTableName to export excel (see also Readme.md) 2018-06-28 12:14:13 +01:00
dfinke
529ee035ec added date 2018-06-27 18:27:35 -04:00
dfinke
42938f68ba Bumped version to publish the correct branch 2018-06-26 12:51:27 -04:00
dfinke
0b2aaefac5 updated 2018-06-26 12:46:07 -04:00
jhoneill
a3693a7faf Many changes. Detailed on Readme.md under what's new 2018-06-25 14:06:43 +01:00
dfinke
bdea70c2f1 updated link 2018-06-24 10:00:22 -04:00
dfinke
036b9352f3 updated link 2018-06-24 09:59:12 -04:00
dfinke
54a387913d updated 2018-06-24 09:57:56 -04:00
dfinke
b2a884e7f1 Demo of the -UseMSSQLSyntax parameter 2018-06-24 09:57:00 -04:00
dfinke
050deb3506 Added UseMSSQLSyntax to code gen INSERT INTO format 2018-06-24 09:55:49 -04:00
dfinke
bb7a132344 tweaked 2018-06-24 09:53:20 -04:00
dfinke
2812917228 Demos the -PivotTableName param. Let's you name the sheet that the pivot table is created on 2018-06-24 09:32:22 -04:00
dfinke
8052b56387 Supports nameing the PivotTable sheet created 2018-06-24 09:31:26 -04:00
dfinke
fa887bbb24 Added example demos -AutoNameRange and PowerShell injecting Excel formulas 2018-06-24 08:38:34 -04:00
dfinke
62fe9f01ad updated what's new, fixed spelling 2018-06-24 08:25:01 -04:00
dfinke
3024217ca5 Added Merge-Worksheet.ps1 so the install and publish will include this file 2018-06-24 08:18:43 -04:00
dfinke
171783cac7 updated 2018-06-24 07:26:27 -04:00
jhoneill
f689c84d04 needed to sync
a
2018-06-22 21:36:46 +01:00
jhoneill
3508acb395 needed 2018-06-22 21:35:31 +01:00
jhoneill
d74cce91b6 Added join Worksheet
Moved "MoveTo…" functionality into Add-Worksheet and gave it copy worksheet functionality
Added create new file functionality to Open-ExcelPackage  - requires a -create switch so previous "Open for read if it exists" behaviour is kept. 
Fixed Conditional formatting so background pattern is "None" not "Solid" by default. 
Tidied comments and help in Merge and Compare 
Added Join Worksheet
Added Extra parameters, sanity check and help to New-PivotTableDefinition
2018-06-17 03:15:47 +01:00
dfinke
f7636b080a updated 2018-06-16 12:38:32 -04:00
dfinke
821864772a added how to work it 2018-06-16 10:09:46 -04:00
dfinke
2a0395965f Creates tests file and invokes the test runner 2018-06-16 10:03:42 -04:00
dfinke
71330f31e5 added - before gen of file 2018-06-16 09:20:17 -04:00
jhoneill
520bb079e5 Changes to Export-Excel & New-PivotTableDefinition
Export-Excel.ps1 
* Added MoveToStart, MoveBefore and MoveAfter Parameters 
* Added support for URI item properties. If a property is of type URI it is created as a hyperlink
* Fixed issue where AutoNamedRange, NamedRange, and TableName do not work when appending to a sheet which already contains the range(s) / table  
* Fixed issues when pivottables / charts already exist and an export tries to create them again.   
* Allowed PivotFilter and PivotDataToColumn, ChartHeight/width ChartRow/Column, ChartRow/ColumnPixelOffsets,  to be passed in -PivotTableDefinition and specified when running New-PivotDefinition. 
* Bad column-names specified for Pivots now generate warnings instead of throwing.
* Removed the need to specify a fill type when specifying a title background color
* "flattened out" small "called-once" function , add-title, convert-toNumber and Stop-ExcelProcess.
2018-06-15 10:23:06 +01:00
dfinke
5e7221062d Updated 2018-06-08 17:15:28 -04:00
dfinke
bf63c27d0a bumped version 2018-06-08 17:15:22 -04:00
dfinke
3ce9018d3c updated 2018-06-08 16:55:08 -04:00
Doug Finke
b026e1b23c Merge pull request #337 from jhoneill/master
Perf for import, Merge, Minor tidying up
2018-06-08 16:53:36 -04:00
dfinke
1b8be2c605 adde databar to Examples 2018-06-08 12:08:27 -04:00
dfinke
a018df09eb Fix databar example 2018-06-08 12:08:16 -04:00
dfinke
9b306458e4 increased how long the import should take 2018-06-08 11:17:22 -04:00
dfinke
ab6bc327e8 Renamed test directory 2018-06-08 11:06:07 -04:00
dfinke
45c96cd37a Added PSVersion. Point to the new directory for tests 2018-06-08 11:05:59 -04:00
jhoneill
e47e1d99c1 Added EndRow, StartColumn, EndColumn to Import-Excel
Start row already existed. 
Aliases allow you to specify -no header -top 10 -bottom 20 -left 6 -right 8 
Start row can be below end right row, and start (left) column can be to the right of the end column - this allows read in reverse order, but does generate a warning.
2018-06-08 10:43:57 +01:00
jhoneill
f2be21f955 Added Merge-MultipleSheets to argument completers 2018-05-30 00:35:26 +01:00
dfinke
711d253d1a added build badge 2018-05-29 18:39:57 -04:00
jhoneill
2a62dc9b45 Making Merge-Worksheet, and Merge-MultipleWorksheet ready to release 2018-05-29 17:36:15 +01:00
jhoneill
15f1839d29 Added Merge Multiple worksheet 2018-05-27 20:44:02 +01:00
jhoneill
e0f3171bba Revert "Added Multiple Merge to Merge-Worksheet.ps1"
This reverts commit dc9bff8240.
2018-05-27 20:37:40 +01:00
jhoneill
dc9bff8240 Added Multiple Merge to Merge-Worksheet.ps1 2018-05-27 20:30:07 +01:00
jhoneill
cd52f3c704 Added Merge-worksheet 2018-05-27 19:43:41 +01:00
dfinke
7a9fbaedb1 update 2018-05-27 13:46:14 -04:00
dfinke
4df916c9f5 Read a larger sheet 2018-05-27 13:44:29 -04:00
dfinke
36387c8f1a Up how long to import takes 2018-05-27 13:37:22 -04:00
dfinke
a9ae83b586 update .gitignore 2018-05-27 13:35:15 -04:00
dfinke
64f55c8ba4 chk # of files 2018-05-27 13:32:14 -04:00
dfinke
817ed117a8 test dir 2018-05-27 13:30:17 -04:00
dfinke
db98f8482d test exists 2018-05-27 13:29:00 -04:00
dfinke
767d75d0c5 try 2018-05-27 13:27:15 -04:00
dfinke
cd9a5c0122 try ls 2018-05-27 13:21:05 -04:00
dfinke
0266aab415 quote it 2018-05-27 13:18:34 -04:00
dfinke
8b51ac4159 update name 2018-05-27 13:16:03 -04:00
dfinke
a10d59cbec add ipmo 2018-05-27 13:14:07 -04:00
dfinke
4bf1020431 test for export-excel 2018-05-27 13:13:01 -04:00
dfinke
8906d7dbf4 chk file exists 2018-05-27 13:09:24 -04:00
dfinke
ba06c4620f moved out of BeforeAll 2018-05-27 13:04:37 -04:00
dfinke
2683ec985f save file with BOM 2018-05-27 12:56:46 -04:00
dfinke
e09f2b5563 Force install of pester 2018-05-27 12:54:44 -04:00
dfinke
8e69b66e82 Checks version of pester on appveyor 2018-05-27 12:53:26 -04:00
dfinke
b436b61a8f First stesp to wire up appveyor 2018-05-27 12:45:57 -04:00
jhoneill
39a68e71c4 Tidying of case, parameter clarity, removal of aliasess.
Added timeout to send-SqlDataToExcel
Added Merge WorkSheet
Fixed bugs in Compare-Worksheet
2018-05-26 22:24:36 +01:00
dfinke
893b2f3214 tightened up the example 2018-05-25 16:32:33 -04:00
dfinke
3a4b0267e7 tweaked 2018-05-19 13:23:00 -04:00
dfinke
2728d21ffb Generates random data 2018-05-19 13:22:15 -04:00
jhoneill
3f28fa5ebe Merge remote-tracking branch 'upstream/master' 2018-05-14 14:24:49 +01:00
jhoneill
807990c4ba Fixed an error in Compare-Worksheet when only 1 row is different 2018-05-14 14:21:49 +01:00
jhoneill
bf8e8ed6bf Added Merge-Workshet. Made perf improvements to Import-Excel 2018-05-14 11:38:23 +01:00
jhoneill
6a53d3ddc9 Minor tidying. Making case consistent, and various things analyzer friendly; added Timeout to Send-SQL..., 2018-05-13 17:35:31 +01:00
Doug Finke
9c628c49be Merge pull request #328 from stahler/patch-1
Some minor spelling changes to the awesome help.
2018-05-09 22:01:34 -04:00
Wes Stahler
152627298a Some minor spelling changes to the awesome help. 2018-05-09 20:50:56 -04:00
jhoneill
b8cc7f163f Merge remote-tracking branch 'upstream/master' 2018-05-04 14:59:09 +01:00
jhoneill
3f1ea599e3 Merge remote-tracking branch 'dfinke/master' 2018-05-04 14:55:36 +01:00
dfinke
5d2520d8e3 Updated 2018-05-03 14:07:05 -04:00
dfinke
d99dd3bbae Bump version and update install module 2018-05-03 14:02:01 -04:00
jhoneill
1e0720f57b fat fingers ! 2018-05-03 14:01:29 -04:00
jhoneill
61fc2b24b7 Color completion wasn't working and reworked gridview for compare 2018-05-03 14:01:29 -04:00
jhoneill
21108f5136 fat fingers ! 2018-05-03 17:12:20 +01:00
jhoneill
6dd928097c One last bug in compare, and fixed bug #310 in Set-Format 2018-05-03 11:30:19 -04:00
jhoneill
8f2dd982c5 Lots of changes to the compare-worksheet module 2018-05-03 11:30:19 -04:00
jhoneill
904145ebae Default parameter set was missing 2018-05-03 11:30:19 -04:00
jhoneill
47a61f5eb3 Added paramters to Compare worksheet
Now has -Gridview, and supports startrow, headernames and NoHeader (as
per import Excel) and ensures the headers don't clash.
2018-05-03 11:30:19 -04:00
jhoneill
f703addeb1 Added Compare worksheet
Added Compate-worksheet function (in its own PS1) Updated
ColorCompletion.ps1 to hold argument completers for set row, and set
column, and removed  duplicates from formatting.ps1
Fixed case of Path param in Open-ExcelPackage
Added comments about date format (m/d/yy is trapped and translated to
local date)
2018-05-03 11:30:19 -04:00
jhoneill
a022f0ae1b Color completion wasn't working and reworked gridview for compare 2018-05-03 15:46:30 +01:00
dfinke
cff83eb692 added 2018-05-02 15:39:37 -04:00
dfinke
f3197fe076 Added 2018-05-02 15:28:50 -04:00
jhoneill
a50363e55f One last bug in compare, and fixed bug #310 in Set-Format 2018-05-02 17:03:13 +01:00
dfinke
7c2943baa1 Added link to gallery 2018-05-02 10:12:06 -04:00
jhoneill
1e115d5ede Lots of changes to the compare-worksheet module 2018-05-02 12:38:13 +01:00
dfinke
ffbc6b46dc tweaked 2018-05-01 17:10:42 -04:00
dfinke
d082ca207c Changed border color 2018-05-01 17:09:52 -04:00
jhoneill
31573ee803 Default parameter set was missing 2018-04-27 15:57:12 +01:00
jhoneill
9632664c2c Added paramters to Compare worksheet
Now has -Gridview, and supports startrow, headernames and NoHeader (as
per import Excel) and ensures the headers don't clash.
2018-04-27 10:33:48 +01:00
jhoneill
da7a70752c Added Compare worksheet
Added Compate-worksheet function (in its own PS1) Updated
ColorCompletion.ps1 to hold argument completers for set row, and set
column, and removed  duplicates from formatting.ps1
Fixed case of Path param in Open-ExcelPackage
Added comments about date format (m/d/yy is trapped and translated to
local date)
2018-04-26 16:19:59 +01:00
jhoneill
f8884a64fd Merge remote-tracking branch 'refs/remotes/dfinke/master' 2018-04-23 22:13:19 +01:00
dfinke
58ab93a6eb updated readme 2018-04-22 14:25:56 -04:00
dfinke
94d86927ba Expand aliases 2018-04-22 14:19:58 -04:00
dfinke
d31a262f37 Remove commented code 2018-04-22 14:19:47 -04:00
dfinke
2e8c69ea6b added tests 2018-04-22 14:16:17 -04:00
Doug Finke
9261b49b56 Merge pull request #318 from nzubair/EmptyStringToNull
Replace empty string with NULL when generating SQL inserts. Fixes #288
2018-04-22 14:16:09 -04:00
Nasir Zubair
bc80134560 Add help and change HeaderRow parameter with StartRow including aliases, for consistency with Import-Excel function. 2018-04-20 23:31:17 -04:00
Nasir Zubair
6dfa5b1aac Add ConvertEmptyStringsToNull parameter, along with logic to replace an empty string with NULL if the parameter is present. 2018-04-20 22:59:39 -04:00
dfinke
6f921e1a3d updated 2018-04-16 15:23:12 -04:00
dfinke
feb5868952 bumped version 2018-04-16 15:23:12 -04:00
Doug Finke
f48e4ad26c Merge pull request #316 from ili101/PSPlot
Fixes `PSPlot` OutputType
2018-04-16 15:17:57 -04:00
Ili Metuky
33d86cb3c9 Fixed the bug "Unable to find type [PSPlot]"
Also added a test for it in ImportExcel.Tests.ps1

The previous fix was broke again by commit:
bd40cfe829 (diff-f50d26003c0baf98f417a44fc1cac92b)
2018-04-16 20:19:10 +03:00
ili101
4753568a39 Merge pull request #1 from dfinke/master
Update
2018-04-16 20:01:59 +03:00
Doug Finke
af31bab499 Merge pull request #313 from PashoQ/master
Updated Install.ps1 to install module for PowerShell V4
2018-04-16 12:07:42 -04:00
Pavlo Yalandin
3d76bec6c4 Updated Install.ps1 to install all needed scripts as part of module for PowerShell v4 2018-04-11 11:52:32 +03:00
dfinke
5dd73789a3 Updated 2018-04-10 19:04:55 -04:00
dfinke
85a78dad7e Updated readme 2018-04-10 19:02:56 -04:00
dfinke
13652bc4ed bumped version 2018-04-10 19:02:56 -04:00
Doug Finke
0540d221e0 Merge pull request #312 from JustinGrote/feature-ReZipParameter
Add ReZip Parameter for MSOnline compatibility (fixes #240)
2018-04-10 18:55:18 -04:00
JustinGrote
243ba0bb3c Add ReZip Parameter for MSOnline compatability 2018-04-09 14:35:28 -07:00
Doug Finke
b5177de50d updated 2018-04-07 19:34:47 -04:00
dfinke
695c986b78 Add image 2018-03-31 08:47:52 -04:00
dfinke
c6dc928e11 add new pic 2018-03-31 08:46:14 -04:00
dfinke
066ab8f348 update border format 2018-03-31 08:46:00 -04:00
dfinke
7dad54f6e9 added custom report example 2018-03-31 08:43:29 -04:00
dfinke
81fc0742f0 Added several new params 2018-03-31 08:42:43 -04:00
dfinke
f33afef2f0 updated readme 2018-03-31 08:32:48 -04:00
dfinke
97275a99de Updating readme 2018-03-31 08:26:05 -04:00
dfinke
9e01d7fc0b Added Example for using PivotFilter 2018-03-31 08:26:00 -04:00
dfinke
593c586a24 Added -PivotFilter param and code 2018-03-31 08:25:41 -04:00
dfinke
4b23d8193b bump version 2018-03-31 08:25:17 -04:00
dfinke
4408a04619 added Pivot Table Filter pic 2018-03-31 08:23:28 -04:00
146 changed files with 5976 additions and 1790 deletions

4
.gitignore vendored
View File

@@ -42,6 +42,7 @@ Network Trash Folder
Temporary Items
.apdisk
testExport.xlsx
test.xlsx
test.ps1
testPwd.xlsx
test.csv
@@ -55,4 +56,5 @@ test.xlsx
testCCFMT.ps1
testHide.ps1
ImportExcel.zip
*.xlsx
.vscode/launch.json

30
.vscode/spellright.dict vendored Normal file
View File

@@ -0,0 +1,30 @@
databar
appveyor
SqlDataToExcel
xlsm
jameseholt
params
robinmalik
scriptblock
headsphere
xelsirko
importexcel
Mihalicz
idx
Möller
redoz
dir
pivotables
WorkSheetname
Lachance-Guillemette
ints
pscookiemonster
ps
pwd
Nuget
EPPLus
intellisense
PivtoTableName
New-Excelchart
paypal
dll

View File

@@ -1,22 +1,29 @@
Function Add-ConditionalFormatting {
<#
.Synopsis
Adds contitional formatting to worksheet
.Example
$excel = $avdata | Export-Excel -Path (Join-path $FilePath "\Machines.XLSX" ) -WorksheetName "Server Anti-Virus" -AutoSize -FreezeTopRow -AutoFilter -PassThru
<#
.Synopsis
Adds contitional formatting to worksheet.
.Example
$excel = $avdata | Export-Excel -Path (Join-path $FilePath "\Machines.XLSX" ) -WorksheetName "Server Anti-Virus" -AutoSize -FreezeTopRow -AutoFilter -PassThru
Add-ConditionalFormatting -WorkSheet $excel.Workbook.Worksheets[1] -Address "b":b1048576" -ForeGroundColor "RED" -RuleType ContainsText -ConditionValue "2003"
Add-ConditionalFormatting -WorkSheet $excel.Workbook.Worksheets[1] -Address "i2:i1048576" -ForeGroundColor "RED" -RuleType ContainsText -ConditionValue "Disabled"
$excel.Workbook.Worksheets[1].Cells["D1:G1048576"].Style.Numberformat.Format = [cultureinfo]::CurrentCulture.DateTimeFormat.ShortDatePattern
$excel.Workbook.Worksheets[1].Row(1).style.font.bold = $true
$excel.Save() ; $excel.Dispose()
Add-ConditionalFormatting -WorkSheet $excel.Workbook.Worksheets[1] -Address "b2:b1048576" -ForeGroundColor "RED" -RuleType ContainsText -ConditionValue "2003"
Add-ConditionalFormatting -WorkSheet $excel.Workbook.Worksheets[1] -Address "i2:i1048576" -ForeGroundColor "RED" -RuleType ContainsText -ConditionValue "Disabled"
$excel.Workbook.Worksheets[1].Cells["D1:G1048576"].Style.Numberformat.Format = [cultureinfo]::CurrentCulture.DateTimeFormat.ShortDatePattern
$excel.Workbook.Worksheets[1].Row(1).style.font.bold = $true
$excel.Save() ; $excel.Dispose()
Here Export-Excel is called with the -passThru parameter so the Excel Package object is stored in $Excel
The desired worksheet is selected and the then columns B and i are conditially formatted (excluding the top row) to show
Fixed formats are then applied to dates in columns D..G and the top row is formatted
Finally the workbook is saved and the Excel closed.
Here Export-Excel is called with the -passThru parameter so the Excel Package object is stored in $Excel
The desired worksheet is selected and the then columns B and i are conditially formatted (excluding the top row) to show red text if
the columns contain "2003" or "Disabled respectively. A fixed date formats are then applied to columns D..G, and the top row is formatted.
Finally the workbook is saved and the Excel object closed.
.Example
C:\> $r = Add-ConditionalFormatting -WorkSheet $excel.Workbook.Worksheets[1] -Range "B1:B100" -ThreeIconsSet Flags -Passthru
C:\> $r.Reverse = $true ; $r.Icon1.Type = "Num"; $r.Icon2.Type = "Num" ; $r.Icon2.value = 100 ; $r.Icon3.type = "Num" ;$r.Icon3.value = 1000
#>
Again Export excel has been called with -passthru leaving a package object in $Excel
This time B1:B100 has been conditionally formatted with 3 icons, using the flags icon set.
Add-ConditionalFormatting does not provide access to every option in the formatting rule, so passthru has been used and the
rule is to apply the flags in reverse order, and boundaries for the number which will set the split are set to 100 and 1000
#>
Param (
#The worksheet where the format is to be applied
[Parameter(Mandatory = $true, ParameterSetName = "NamedRule")]
@@ -32,14 +39,14 @@
[Parameter(Mandatory = $true, ParameterSetName = "FourIconSet")]
[Parameter(Mandatory = $true, ParameterSetName = "FiveIconSet")]
[OfficeOpenXml.ExcelAddress]$Range ,
#One or more row(s), Column(s) and/or block(s) of cells to format
#One or more row(s), column(s) and/or block(s) of cells to format
[Parameter(Mandatory = $true, ParameterSetName = "NamedRuleAddress")]
[Parameter(Mandatory = $true, ParameterSetName = "DataBarAddress")]
[Parameter(Mandatory = $true, ParameterSetName = "ThreeIconSetAddress")]
[Parameter(Mandatory = $true, ParameterSetName = "FourIconSetAddress")]
[Parameter(Mandatory = $true, ParameterSetName = "FiveIconSetAddress")]
$Address ,
#One of the standard named rules - Top / Bottom / Less than / Greater than / Contains etc
#One of the standard named rules - Top / Bottom / Less than / Greater than / Contains etc.
[Parameter(Mandatory = $true, ParameterSetName = "NamedRule", Position = 3)]
[Parameter(Mandatory = $true, ParameterSetName = "NamedRuleAddress", Position = 3)]
[OfficeOpenXml.ConditionalFormatting.eExcelConditionalFormattingRuleType]$RuleType ,
@@ -63,14 +70,22 @@
[Parameter(Mandatory = $true, ParameterSetName = "FiveIconSet")]
[Parameter(Mandatory = $true, ParameterSetName = "FiveIconSetAddress")]
[OfficeOpenXml.ConditionalFormatting.eExcelconditionalFormatting5IconsSetType]$FiveIconsSet,
#Use the icon set in reverse order
[Parameter(ParameterSetName = "ThreeIconSet")]
[Parameter(ParameterSetName = "ThreeIconSetAddress")]
[Parameter(ParameterSetName = "FourIconSet")]
[Parameter(ParameterSetName = "FourIconSetAddress")]
[Parameter(ParameterSetName = "FiveIconSet")]
[Parameter(ParameterSetName = "FiveIconSetAddress")]
[switch]$Reverse,
#A value for the condition (e.g. "2000" if the test is 'lessthan 2000')
[string]$ConditionValue,
#A second value for the conditions like between x and Y
#A second value for the conditions like "between x and Y"
[string]$ConditionValue2,
#Background colour for matching items
[System.Drawing.Color]$BackgroundColor,
#Background pattern for matching items
[OfficeOpenXml.Style.ExcelFillStyle]$BackgroundPattern = [OfficeOpenXml.Style.ExcelFillStyle]::Solid,
[OfficeOpenXml.Style.ExcelFillStyle]$BackgroundPattern = [OfficeOpenXml.Style.ExcelFillStyle]::None ,
#Secondary colour when a background pattern requires it
[System.Drawing.Color]$PatternColor,
#Sets the numeric format for matching items
@@ -82,36 +97,52 @@
#Underline matching items
[switch]$Underline,
#Strikethrough text of matching items
[switch]$StrikeThru
[switch]$StrikeThru,
#If specified pass the rule back to the caller to allow additional customization.
[switch]$Passthru
)
#Allow add conditional formatting to work like Set-Format (with single ADDRESS parameter) split it to get worksheet and Range of cells.
#Allow conditional formatting to work like Set-Format (with single ADDRESS parameter), split it to get worksheet and range of cells.
If ($Address -and -not $WorkSheet -and -not $Range) {
$WorkSheet = $Address.Worksheet[0]
$Range = $Address.Address
}
If ($ThreeIconsSet) {$rule = $WorkSheet.ConditionalFormatting.AddThreeIconSet($Range , $ThreeIconsSet)}
elseif ($FourIconsSet) {$rule = $WorkSheet.ConditionalFormatting.AddFourIconSet( $Range , $FourIconsSet) }
elseif ($FiveIconsSet) {$rule = $WorkSheet.ConditionalFormatting.AddFiveIconSet( $Range , $IconType) }
elseif ($DataBarColor) {$rule = $WorkSheet.ConditionalFormatting.AddDatabar( $Range , $DataBarColor) }
else { $rule = ($WorkSheet.ConditionalFormatting)."Add$RuleType"($Range)}
if ($ConditionValue -and $RuleType -match "Top|Botom") {$rule.Rank = $ConditionValue }
if ($ConditionValue -and $RuleType -match "StdDev") {$rule.StdDev = $ConditionValue }
if ($ConditionValue -and $RuleType -match "Than|Equal|Expression") {$rule.Formula = $ConditionValue }
if ($ConditionValue -and $RuleType -match "Text|With") {$rule.Text = $ConditionValue }
if ($ConditionValue -and
$ConditionValue2 -and $RuleType -match "Between") {
$rule.Formula = $ConditionValue
$rule.Formula2 = $ConditionValue2
$Range = $Address.Address
}
if ($NumberFormat) {$rule.Style.NumberFormat.Format = $NumberFormat }
if ($Underline) {$rule.Style.Font.Underline = [OfficeOpenXml.Style.ExcelUnderLineType]::Single }
if ($Bold) {$rule.Style.Font.Bold = $true}
if ($Italic) {$rule.Style.Font.Italic = $true}
if ($StrikeThru) {$rule.Style.Font.Strike = $true}
if ($ForeGroundColor) {$rule.Style.Font.Color.color = $ForeGroundColor }
if ($BackgroundColor) {$rule.Style.Fill.BackgroundColor.color = $BackgroundColor }
if ($BackgroundPattern) {$rule.Style.Fill.PatternType = $BackgroundPattern }
if ($PatternColor) {$rule.Style.Fill.PatternColor.color = $PatternColor }
#region Create a rule of the right type
if ($PSBoundParameters.ContainsKey("ThreeIconsSet" ) ) {$rule = $WorkSheet.ConditionalFormatting.AddThreeIconSet($Range , $ThreeIconsSet)}
elseif ($PSBoundParameters.ContainsKey("FourIconsSet" ) ) {$rule = $WorkSheet.ConditionalFormatting.AddFourIconSet( $Range , $FourIconsSet) }
elseif ($PSBoundParameters.ContainsKey("FiveIconsSet" ) ) {$rule = $WorkSheet.ConditionalFormatting.AddFiveIconSet( $Range , $FiveIconsSet) }
elseif ($PSBoundParameters.ContainsKey("DataBarColor" ) ) {$rule = $WorkSheet.ConditionalFormatting.AddDatabar( $Range , $DataBarColor) }
else {$rule = ($WorkSheet.ConditionalFormatting)."Add$RuleType"($Range)}
if ($PSBoundParameters.ContainsKey("Reverse" ) ) {$rule.reverse = [boolean]$Reverse}
#endregion
#region set the rule conditions
if ($PSBoundParameters.ContainsKey("ConditionValue") -and
$RuleType -match "Top|Botom" ) {$rule.Rank = $ConditionValue }
if ($PSBoundParameters.ContainsKey("ConditionValue") -and
$RuleType -match "StdDev" ) {$rule.StdDev = $ConditionValue }
if ($PSBoundParameters.ContainsKey("ConditionValue") -and
$RuleType -match "Than|Equal|Expression" ) {$rule.Formula = $ConditionValue }
if ($PSBoundParameters.ContainsKey("ConditionValue") -and
$RuleType -match "Text|With" ) {$rule.Text = $ConditionValue }
if ($PSBoundParameters.ContainsKey("ConditionValue") -and
$PSBoundParameters.ContainsKey("ConditionValue") -and
$RuleType -match "Between" ) {
$rule.Formula = $ConditionValue;
$rule.Formula2 = $ConditionValue2
}
#endregion
#region set the rule format
if ($PSBoundParameters.ContainsKey("NumberFormat" ) ) {$rule.Style.NumberFormat.Format = (Expand-NumberFormat $NumberFormat) }
if ($Underline ) {$rule.Style.Font.Underline = [OfficeOpenXml.Style.ExcelUnderLineType]::Single }
elseif ($PSBoundParameters.ContainsKey("Underline" ) ) {$rule.Style.Font.Underline = [OfficeOpenXml.Style.ExcelUnderLineType]::None }
if ($PSBoundParameters.ContainsKey("Bold" ) ) {$rule.Style.Font.Bold = [boolean]$Bold }
if ($PSBoundParameters.ContainsKey("Italic" ) ) {$rule.Style.Font.Italic = [boolean]$Italic }
if ($PSBoundParameters.ContainsKey("StrikeThru") ) {$rule.Style.Font.Strike = [boolean]$StrikeThru }
if ($PSBoundParameters.ContainsKey("ForeGroundColor" ) ) {$rule.Style.Font.Color.color = $ForeGroundColor }
if ($PSBoundParameters.ContainsKey("BackgroundColor" ) ) {$rule.Style.Fill.BackgroundColor.color = $BackgroundColor }
if ($PSBoundParameters.ContainsKey("BackgroundPattern") ) {$rule.Style.Fill.PatternType = $BackgroundPattern }
if ($PSBoundParameters.ContainsKey("PatternColor" ) ) {$rule.Style.Fill.PatternColor.color = $PatternColor }
#endregion
#Allow further tweaking by returning the rule, if passthru specified
if ($Passthru) {$rule}
}

View File

@@ -9,7 +9,7 @@ function DoChart {
)
if($targetData[0] -is [System.ValueType]) {
$chart = New-ExcelChart -YRange "A1:A$($targetData.count)" -Title $title -ChartType $ChartType
$chart = New-ExcelChartDefinition -YRange "A1:A$($targetData.count)" -Title $title -ChartType $ChartType
} else {
$xyRange = Get-XYRange $targetData
@@ -19,7 +19,7 @@ function DoChart {
$Y = $xyRange.YRange.ExcelColumn
$YRange = "{0}2:{0}{1}" -f $Y,($targetData.count+1)
$chart = New-ExcelChart -XRange $xRange -YRange $yRange -Title $title -ChartType $ChartType `
$chart = New-ExcelChartDefinition -XRange $xRange -YRange $yRange -Title $title -ChartType $ChartType `
-NoLegend:$NoLegend -ShowCategory:$ShowCategory -ShowPercent:$ShowPercent
}

View File

@@ -1,4 +1,4 @@
Function ColorCompletion {
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
@@ -6,11 +6,33 @@ Function ColorCompletion {
}
if (Get-Command -Name register-argumentCompleter -ErrorAction SilentlyContinue) {
Register-ArgumentCompleter -CommandName Export-Excel -ParameterName TitleBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName ForeGroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName DataBarColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Format -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Format -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Format -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
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 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 Set-Format -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Format -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Format -ParameterName BorderColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Format -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Column -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Column -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Column -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Row -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Row -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Set-Row -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
}

View File

@@ -1,53 +1,53 @@
Function Convert-XlRangeToImage {
<#
.Synopsis
Gets the specified part of an Excel file and exports it as an image
.Description
Excel allows charts to be exported directly to a file, but can't do this with the rest of a sheet. To work round this this function
* Opens a copy of Excel and loads a file
* Selects a worksheet and then a range of cells in that worksheet
* Copies the select to the clipboard
* Saves the clipboard contents as an image file (it will save as .JPG unless the file name ends .BMP or .PNG)
* Copies a single cell to the clipboard (to prevent the "you have put a lot in the clipboard" message appearing)
* Closes Excel
#>
Param (
#Path to the Excel file
[parameter(Mandatory=$true)]
$Path,
#Worksheet name - if none is specified "Sheet1" will be assumed
$workSheetname = "Sheet1" ,
#Range of cells within the sheet, e.g "A1:Z99"
[parameter(Mandatory=$true)]
$range,
#A bmp, png or jpg file where the result will be saved
$destination = "$pwd\temp.png",
#If specified opens the image in the default viewer.
[switch]$show
)
$extension = $destination -replace '^.*\.(\w+)$' ,'$1'
if ($extension -in @('JPEG','BMP','PNG')) {
$Format = [system.Drawing.Imaging.ImageFormat]$extension
} #if we don't recognise the extension OR if it is JPG with an E, use JPEG format
else { $Format = [system.Drawing.Imaging.ImageFormat]::Jpeg}
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Status "Starting Excel"
$xlApp = New-Object -ComObject "Excel.Application"
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Status "Opening Workbook and copying data"
$xlWbk = $xlApp.Workbooks.Open($Path)
$xlWbk.Worksheets($workSheetname).Select()
$xlWbk.ActiveSheet.Range($range).Select() | Out-Null
$xlApp.Selection.Copy() | Out-Null
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Status "Saving copied data"
# Get-Clipboard came in with PS5. Older versions can use [System.Windows.Clipboard] but it is ugly.
$image = Get-Clipboard -Format Image
$image.Save($destination, $Format)
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Status "Closing Excel"
$xlWbk.ActiveSheet.Range("a1").Select() | Out-Null
$xlApp.Selection.Copy() | Out-Null
$xlApp.Quit()
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Completed
if ($show) {Start-Process -FilePath $destination}
else {Get-Item -Path $destination}
<#
.Synopsis
Gets the specified part of an Excel file and exports it as an image
.Description
Excel allows charts to be exported directly to a file, but can't do this with the rest of a sheet. To work round this this function
* Opens a copy of Excel and loads a file
* Selects a worksheet and then a range of cells in that worksheet
* Copies the select to the clipboard
* Saves the clipboard contents as an image file (it will save as .JPG unless the file name ends .BMP or .PNG)
* Copies a single cell to the clipboard (to prevent the "you have put a lot in the clipboard" message appearing)
* Closes Excel
#>
Param (
#Path to the Excel file
[parameter(Mandatory=$true)]
$Path,
#Worksheet name - if none is specified "Sheet1" will be assumed
$workSheetname = "Sheet1" ,
#Range of cells within the sheet, e.g "A1:Z99"
[parameter(Mandatory=$true)]
$range,
#A bmp, png or jpg file where the result will be saved
$destination = "$pwd\temp.png",
#If specified opens the image in the default viewer.
[switch]$show
)
$extension = $destination -replace '^.*\.(\w+)$' ,'$1'
if ($extension -in @('JPEG','BMP','PNG')) {
$Format = [system.Drawing.Imaging.ImageFormat]$extension
} #if we don't recognise the extension OR if it is JPG with an E, use JPEG format
else { $Format = [system.Drawing.Imaging.ImageFormat]::Jpeg}
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Status "Starting Excel"
$xlApp = New-Object -ComObject "Excel.Application"
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Status "Opening Workbook and copying data"
$xlWbk = $xlApp.Workbooks.Open($Path)
$xlWbk.Worksheets($workSheetname).Select()
$xlWbk.ActiveSheet.Range($range).Select() | Out-Null
$xlApp.Selection.Copy() | Out-Null
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Status "Saving copied data"
# Get-Clipboard came in with PS5. Older versions can use [System.Windows.Clipboard] but it is ugly.
$image = Get-Clipboard -Format Image
$image.Save($destination, $Format)
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Status "Closing Excel"
$xlWbk.ActiveSheet.Range("a1").Select() | Out-Null
$xlApp.Selection.Copy() | Out-Null
$xlApp.Quit()
Write-Progress -Activity "Exporting $range of $workSheetname in $Path" -Completed
if ($show) {Start-Process -FilePath $destination}
else {Get-Item -Path $destination}
}
<#
del demo*.xlsx

View File

@@ -1,25 +1,25 @@
function ConvertFrom-ExcelData {
<#
.SYNOPSIS
Reads data from a sheet, and for each row, calls a custom scriptblock with a list of property names and the row of data.
.SYNOPSIS
Reads data from a sheet, and for each row, calls a custom scriptblock with a list of property names and the row of data.
.EXAMPLE
ConvertFrom-ExcelData .\testSQLGen.xlsx {
param($propertyNames, $record)
.EXAMPLE
ConvertFrom-ExcelData .\testSQLGen.xlsx {
param($propertyNames, $record)
$reportRecord = @()
foreach ($pn in $propertyNames) {
$reportRecord += "{0}: {1}" -f $pn, $record.$pn
$reportRecord = @()
foreach ($pn in $propertyNames) {
$reportRecord += "{0}: {1}" -f $pn, $record.$pn
}
$reportRecord +=""
$reportRecord -join "`r`n"
}
$reportRecord +=""
$reportRecord -join "`r`n"
}
First: John
Last: Doe
The Zip: 12345
....
First: John
Last: Doe
The Zip: 12345
....
#>
param(
[Alias("FullName")]

View File

@@ -1,4 +1,75 @@
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,
@@ -8,39 +79,40 @@ function ConvertFrom-ExcelToSQLInsert {
$Path,
[Alias("Sheet")]
$WorkSheetname = 1,
[int]$HeaderRow = 1,
[Alias('HeaderRow', 'TopRow')]
[ValidateRange(1, 9999)]
[Int]$StartRow,
[string[]]$Header,
[switch]$NoHeader,
[switch]$DataOnly
[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 "', '") + "'"
$values = foreach ($propertyName in $PropertyNames) { $record.$propertyName }
$targetValues = "'" + ($values -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
}
# $data = Import-Excel @params
# $PropertyNames = $data[0].psobject.Properties |
# Where-Object {$_.membertype -match 'property'} |
# Select-Object -ExpandProperty name
# $ColumnNames = "'" + ($PropertyNames -join "', '") + "'"
# foreach ($record in $data) {
# $values = $(foreach ($propertyName in $PropertyNames) {
# $record.$propertyName
# })
# $targetValues = "'" + ($values -join "', '") + "'"
# "INSERT INTO {0} ({1}) Values({2});" -f $TableName, $ColumnNames, $targetValues
# }
}

View File

@@ -1,22 +1,110 @@
function Copy-ExcelWorkSheet {
[CmdletBinding()]
<#
.SYNOPSIS
Copies a worksheet between workbooks or within the same workbook.
.DESCRIPTION
Copy-ExcelWorkSheet takes Source and Destination workbook parameters; each can be the path to an XLSx file, an ExcelPackage object or an ExcelWorkbook object.
The Source worksheet is specified by name or number (starting from 1), and the destination worksheet can be explicitly named,
or will follow the name of the source if no name is specified.
.EXAMPLE
C:\> Copy-ExcelWorkSheet -SourceWorkbook Test1.xlsx -DestinationWorkbook Test2.xlsx
This is the simplest version of the command: no source worksheet is specified so Copy-ExcelWorksheet uses the first sheet in the workbook
No Destination sheet is specified so the new worksheet will be the same as the one which is being copied.
.EXAMPLE
C:\> Copy-ExcelWorkSheet -SourceWorkbook Server1.xlsx -sourceWorksheet "Settings" -DestinationWorkbook Settings.xlsx -DestinationWorkSheet "Server1"
Here the Settings page from Server1's workbook is copied to the 'Server1" page of a "Settings" workbook.
.EXAMPLE
C:\> $excel = Open-ExcelPackage .\test.xlsx
C:\> Copy-ExcelWorkSheet -SourceWorkbook $excel -SourceWorkSheet "first" -DestinationWorkbook $excel -Show -DestinationWorkSheet Duplicate
This opens the workbook test.xlsx and copies the worksheet named "first" to a new worksheet named "Duplicate",
because -Show is specified the file is saved and opened in Excel
.EXAMPLE
C:\> $excel = Open-ExcelPackage .\test.xlsx
C:\> Copy-ExcelWorkSheet -SourceWorkbook $excel -SourceWorkSheet 1 -DestinationWorkbook $excel -DestinationWorkSheet Duplicate
C:\> Close-ExcelPackage $excel
This is almost the same as the previous example, except source sheet is specified by position rather than name and
because -Show is not specified, so other steps can be carried using the package object, at the end the file is saved by Close-ExcelPackage
#>
param(
#An ExcelWorkbook or ExcelPackage object or the path to an XLSx file where the data is found.
[Parameter(Mandatory=$true)]
$SourceWorkbook,
[Parameter(Mandatory=$true)]
$SourceWorkSheet,
#Name or number (starting from 1) of the worksheet in the source workbook (defaults to 1).
$SourceWorkSheet = 1 ,
#An ExcelWorkbook or ExcelPackage object or the path to an XLSx file where the data should be copied.
[Parameter(Mandatory=$true)]
$DestinationWorkbook,
#Name of the worksheet in the destination workbook; by default the same as the source worksheet's name. If the sheet exists it will be deleted and re-copied.
$DestinationWorkSheet,
#if the destination is an excel package or a path, launch excel and open the file on completion.
[Switch]$Show
)
Write-Verbose "Copying $($SourceWorkSheet) from $($SourceWorkbook) to $($DestinationWorkSheet) in $($DestinationWorkbook)"
if(!$DestinationWorkSheet) {
$DestinationWorkSheet = $SourceWorkSheet
#Special case - give the same path for source and destination worksheet
if ($SourceWorkbook -is [System.String] -and $SourceWorkbook -eq $DestinationWorkbook) {
if (-not $DestinationWorkSheet) {Write-Warning -Message "You must specify a destination worksheet name if copying within the same workbook."; return}
else {
Write-Verbose -Message "Copying "
$excel = Open-ExcelPackage -Path $SourceWorkbook
if (-not $excel.Workbook.Worksheets[$Sourceworksheet]) {
Write-Warning -Message "Could not find Worksheet $sourceWorksheet in $sourceWorkbook"
Close-ExcelPackage -ExcelPackage $excel -NoSave
return
}
elseif ($excel.Workbook.Worksheets[$Sourceworksheet].name -eq $DestinationWorkSheet) {
Write-Warning -Message "The destination worksheet name is the same as the source. "
Close-ExcelPackage -ExcelPackage $excel -NoSave
return
}
else {
$null = Add-WorkSheet -ExcelPackage $Excel -WorkSheetname $DestinationWorkSheet -CopySource ($excel.Workbook.Worksheets[$SourceWorkSheet])
Close-ExcelPackage -ExcelPackage $excel -Show:$Show
return
}
}
}
else {
if ($SourceWorkbook -is [OfficeOpenXml.ExcelWorkbook]) {$sourcews=$SourceWorkbook.Worksheets[$SourceWorkSheet]}
elseif ($SourceWorkbook -is [OfficeOpenXml.ExcelPackage] ) {$sourcews=$SourceWorkbook.Workbook.Worksheets[$SourceWorkSheet]}
else {
$SourceWorkbook = (Resolve-Path $SourceWorkbook).ProviderPath
try {
Write-Verbose "Opening worksheet '$Worksheetname' in Excel workbook '$SourceWorkbook'."
$Stream = New-Object -TypeName System.IO.FileStream -ArgumentList $SourceWorkbook, 'Open', 'Read' ,'ReadWrite'
$Package1 = New-Object -TypeName OfficeOpenXml.ExcelPackage -ArgumentList $Stream
$sourceWs = $Package1.Workbook.Worksheets[$SourceWorkSheet]
}
catch {Write-Warning -Message "Could not open $SourceWorkbook" ; return}
}
if (-not $sourceWs) {Write-Warning -Message "Could not find worksheet '$Sourceworksheet' in the source workbook." ; return}
else {
try {
if ($DestinationWorkbook -is [OfficeOpenXml.ExcelWorkbook]) {
$wb = $DestinationWorkbook
}
elseif ($DestinationWorkbook -is [OfficeOpenXml.ExcelPackage] ) {
$wb = $DestinationWorkbook.workbook
if ($show) {$package2 =$DestinationWorkbook}
}
else {
$package2 = Open-ExcelPackage -Create -Path $DestinationWorkbook
$wb = $package2.Workbook
}
if (-not $DestinationWorkSheet) {$DestinationWorkSheet = $SourceWs.Name}
if ($wb.Worksheets[$DestinationWorkSheet]) {
Write-Verbose "Destination workbook already has a sheet named '$DestinationWorkSheet', deleting it."
$wb.Worksheets.Delete($DestinationWorkSheet)
}
Write-Verbose "Copying $($SourceWorkSheet) from $($SourceWorkbook) to $($DestinationWorkSheet) in $($DestinationWorkbook)"
$null = Add-WorkSheet -ExcelWorkbook $wb -WorkSheetname $DestinationWorkSheet -CopySource $sourceWs
if ($package1) {Close-ExcelPackage -ExcelPackage $Package1 -NoSave }
if ($package2) {Close-ExcelPackage -ExcelPackage $Package2 -Show:$show }
if ($show -and $DestinationWorkbook -is [OfficeOpenXml.ExcelWorkbook]) {
Write-Warning -Message "-Show only works if the Destination workbook is given as a file path or an ExcelPackage object."
}
}
catch {Write-Warning -Message "Could not write to sheet '$DestinationWorkSheet' in the destination workbook" ; return}
}
}
Import-Excel -Path $SourceWorkbook -WorkSheetname $SourceWorkSheet |
Export-Excel -Path $DestinationWorkbook -WorkSheetname $DestinationWorkSheet -Show:$Show
}

18
DoTests.ps1 Normal file
View File

@@ -0,0 +1,18 @@
$PSVersionTable.PSVersion
## Create the zip before the tests run
## Otherwise the EPPlus.dll is in use after the Pester run
$ModuleVersion = (Get-Content -Raw .\ImportExcel.psd1) | Invoke-Expression | ForEach-Object ModuleVersion
$dest = "ImportExcel-{0}-{1}.zip" -f $ModuleVersion, (Get-Date).ToString("yyyyMMddHHmmss")
Compress-Archive -Path . -DestinationPath .\$dest
if ((Get-Module -ListAvailable pester) -eq $null) {
Install-Module -Name Pester -Repository PSGallery -Force
}
$result = Invoke-Pester -Script $PSScriptRoot\__tests__ -Verbose -PassThru
if ($result.FailedCount -gt 0) {
throw "$($result.FailedCount) tests failed."
}

View File

@@ -0,0 +1,11 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlSourcefile = "$env:TEMP\Source.xlsx"
Remove-Item $xlSourcefile -ErrorAction Ignore
$excel = 1..10 | Export-Excel $xlSourcefile -PassThru
Add-WorkSheet -ExcelPackage $excel -WorkSheetname "NewSheet" -CopySource $excel.Workbook.Worksheets["Sheet1"]
Close-ExcelPackage -ExcelPackage $excel -Show

View File

@@ -1,12 +1,14 @@
rm temp.xlsx -ErrorAction Ignore
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$data = invoke-sum (ps) company handles,pm,VirtualMemorySize
Remove-Item temp.xlsx -ErrorAction Ignore
$c = New-ExcelChart -Title Stats `
$data = Invoke-Sum -data (Get-Process) -dimension Company -measure Handles, PM, VirtualMemorySize
$c = New-ExcelChartDefinition -Title "ProcessStats" `
-ChartType LineMarkersStacked `
-Header "Stuff" `
-XRange "Processes[Company]" `
-YRange "Processes[PM]","Processes[VirtualMemorySize]"
$data |
Export-Excel temp.xlsx -AutoSize -TableName Processes -Show -ExcelChartDefinition $c
-XRange "Processes[Name]" `
-YRange "Processes[PM]","Processes[VirtualMemorySize]" `
-SeriesHeader "PM","VM"
$data |
Export-Excel -Path temp.xlsx -AutoSize -TableName Processes -ExcelChartDefinition $c -Show

View File

@@ -1,16 +1,19 @@
rm temp.xlsx -ErrorAction Ignore
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item temp.xlsx -ErrorAction Ignore
$data = @"
A,B,C,Date
2,1,1,2016-03-29
5,10,1,2016-03-29
"@ | ConvertFrom-Csv
"@
$c = New-ExcelChart -Title Impressions `
-ChartType Line -Header "Something" `
$c = New-ExcelChartDefinition -Title Impressions `
-ChartType Line `
-XRange "Impressions[Date]" `
-YRange @("Impressions[B]","Impressions[A]") `
-SeriesHeader 'B data','A data'
-YRange "Impressions[B]" # @("Impressions[B]","Impressions[A]") `
-SeriesHeader 'B data','A data' `
-Row 0 -Column 0
$data |
Export-Excel temp.xlsx -AutoSize -TableName Impressions -Show -ExcelChartDefinition $c
$data | ConvertFrom-Csv | Export-Excel -path temp.xlsx -AutoSize -TableName Impressions
Export-Excel -path temp.xlsx -worksheetName chartPage -ExcelChartDefinition $c -show

View File

@@ -1,19 +1,19 @@
rm *.xlsx
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item -Path Tools.xlsx
$data = @"
ID,Product,Quantity,Price,Total
12001,Nails,37,3.99,147.63
12002,Hammer,5,12.10,60.5
12003,Saw,12,15.37,184.44
12010,Drill,20,8,160
12010,Drill,20,8,160
12011,Crowbar,7,23.48,164.36
"@ | ConvertFrom-Csv
"@
$xRange = "Product"
$c1 = New-ExcelChartDefinition -YRange "Price" -XRange "Product" -Title "Item price" -NoLegend -Height 225
$c2 = New-ExcelChartDefinition -YRange "Total "-XRange "Product" -Title "Total sales" -NoLegend -Height 225 -Row 9 -Column 15
$c3 = New-ExcelChartDefinition -YRange "Quantity"-XRange "Product" -Title "Sales volume" -NoLegend -Height 225 -Row 15
$yRange="Price"; $c1 = New-ExcelChart -YRange $yRange -XRange $xRange -Title $yRange -Height 225
$yRange="Total"; $c2 = New-ExcelChart -YRange $yRange -XRange $xRange -Title $yRange -Row 9 -Column 15 -Height 225
$yRange="Quantity"; $c3 = New-ExcelChart -YRange $yRange -XRange $xRange -Title $yRange -Row 15 -Height 225
$data |
Export-Excel -ExcelChartDefinition $c1,$c2,$c3 Tools.xlsx -Show -AutoFilter -AutoNameRange -AutoSize
$data | ConvertFrom-Csv |
Export-Excel -Path "Tools.xlsx" -AutoFilter -AutoNameRange -AutoSize -ExcelChartDefinition $c1,$c2,$c3 -Show

View File

@@ -1,3 +1,5 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
function plot {
param(
$f,
@@ -7,18 +9,18 @@ function plot {
$minx=[math]::Round($minx,1)
$maxx=[math]::Round($maxx,1)
$file = 'C:\temp\plot.xlsx'
rm $file -ErrorAction Ignore
$file = 'C:\temp\plot.xlsx'
Remove-Item $file -ErrorAction Ignore
$c = New-ExcelChart -XRange X -YRange Y -ChartType Line -NoLegend -Title Plot -Column 2 -ColumnOffSetPixels 35
$(for ($i = $minx; $i -lt $maxx-.1; $i+=.1) {
[pscustomobject]@{
X=$i.ToString("N1")
Y=(&$f $i)
}
}) | Export-Excel $file -Show -AutoNameRange -ExcelChartDefinition $c
}) | Export-Excel $file -Show -AutoNameRange -ExcelChartDefinition $c
}
function pi {[math]::pi}

View File

@@ -1,11 +1,13 @@
$file = ".\conditionalTextFormatting.xlsx"
rm $file -ErrorAction Ignore
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Get-Service |
Select Status, Name, DisplayName, ServiceName |
$file = ".\conditionalTextFormatting.xlsx"
Remove-Item $file -ErrorAction Ignore
Get-Service |
Select-Object Status, Name, DisplayName, ServiceName |
Export-Excel $file -Show -AutoSize -AutoFilter -ConditionalText $(
New-ConditionalText stop
New-ConditionalText stop
New-ConditionalText runn darkblue cyan
New-ConditionalText -ConditionalType EndsWith svc wheat green
New-ConditionalText -ConditionalType BeginsWith windows darkgreen wheat
New-ConditionalText -ConditionalType EndsWith svc wheat green
New-ConditionalText -ConditionalType BeginsWith windows darkgreen wheat
)

View File

@@ -1,15 +1,17 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$ContainsBlanks = New-ConditionalText -ConditionalType ContainsBlanks
$data = $(
New-PSItem a b c (echo p1 p2 p3)
New-PSItem
New-PSItem
New-PSItem d e f
New-PSItem
New-PSItem
New-PSItem g h i
New-PSItem
New-PSItem
New-PSItem g h i
)
$file ="c:\temp\testblanks.xlsx"
rm $file -ErrorAction Ignore
Remove-Item $file -ErrorAction Ignore
$data | Export-Excel $file -show -ConditionalText $ContainsBlanks

View File

@@ -0,0 +1,23 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item -Path .\test.xlsx -ErrorAction Ignore
$excel = Get-Process |
Select-Object -Property Name,Company,Handles,CPU,PM,NPM,WS |
Export-Excel -Path .\test.xlsx -ClearSheet -WorkSheetname "Processes" -PassThru
$sheet = $excel.Workbook.Worksheets["Processes"]
$sheet.Column(1) | Set-Format -Bold -AutoFit
$sheet.Column(2) | Set-Format -Width 29 -WrapText
$sheet.Column(3) | Set-Format -HorizontalAlignment Right -NFormat "#,###"
Set-Format -Address $sheet.Cells["E1:H1048576"] -HorizontalAlignment Right -NFormat "#,###"
Set-Format -Address $sheet.Column(4) -HorizontalAlignment Right -NFormat "#,##0.0" -Bold
Set-Format -Address $sheet.Row(1) -Bold -HorizontalAlignment Center
Add-ConditionalFormatting -WorkSheet $sheet -Range "D2:D1048576" -DataBarColor 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 }
Export-Excel -ExcelPackage $excel -WorkSheetname "Processes" -IncludePivotChart -ChartType ColumnClustered -NoLegend -PivotRows company -PivotData @{'Name'='Count'} -Show

View File

@@ -1,11 +1,13 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
$data = $(
New-PSItem North 111 (echo Region Amount )
New-PSItem East 111
New-PSItem East 111
New-PSItem West 122
New-PSItem South 200
@@ -14,11 +16,11 @@ $data = $(
New-PSItem SouthWest 136
New-PSItem South 127
New-PSItem NorthByNory 100
New-PSItem NothEast 110
New-PSItem Westerly 120
New-PSItem NorthByNory 100
New-PSItem NothEast 110
New-PSItem Westerly 120
New-PSItem SouthWest 118
)
)
#$data | Export-Excel $f -Show -AutoSize -ConditionalText (New-ConditionalText -ConditionalType AboveAverage)

View File

@@ -1,6 +1,8 @@
rm .\testExport.xlsx -ErrorAction Ignore
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
ps | where Company | select Company, Name, PM, Handles, *mem* |
Remove-Item .\testExport.xlsx -ErrorAction Ignore
Get-Process | Where-Object Company | Select-Object Company, Name, PM, Handles, *mem* |
Export-Excel .\testExport.xlsx -Show -AutoSize -AutoNameRange `
-ConditionalFormat $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
.\GenDates.ps1 |
Export-Excel $f -Show -AutoSize -ConditionalText $(

View File

@@ -1,23 +1,25 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
Remove-Item $f -ErrorAction Ignore
$data = $(
New-PSItem North 111 (echo Region Amount )
New-PSItem East 11
New-PSItem West 12
New-PSItem South 1000
New-PSItem East 11
New-PSItem West 12
New-PSItem South 1000
New-PSItem NorthEast 10
New-PSItem SouthEast 14
New-PSItem SouthWest 13
New-PSItem South 12
New-PSItem NorthEast 10
New-PSItem SouthEast 14
New-PSItem SouthWest 13
New-PSItem South 12
New-PSItem NorthByNory 100
New-PSItem NothEast 110
New-PSItem Westerly 120
New-PSItem SouthWest 11
)
New-PSItem NorthByNory 100
New-PSItem NothEast 110
New-PSItem Westerly 120
New-PSItem SouthWest 11
)
$data | Export-Excel $f -Show -AutoSize -ConditionalText (New-ConditionalText -ConditionalType DuplicateValues)

View File

@@ -0,0 +1,25 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item -Path .\test.xlsx -ErrorAction Ignore
$excel = @"
Month,New York City,Austin Texas,Portland Oregon
Jan,39,61,46
Feb,42,65,51
Mar,50,73,56
Apr,62,80,61
May,72,86,67
Jun,80,92,73
Jul,85,95,80
Aug,84,96,80
Sep,76,90,75
Oct,65,82,63
Nov,54,71,52
Dec,44,63,46
"@ | ConvertFrom-csv |
Export-Excel -Path .\test.xlsx -WorkSheetname Sheet1 -AutoNameRange -AutoSize -Title "Monthly Temperatures" -PassThru
$sheet = $excel.Workbook.Worksheets["Sheet1"]
Add-ConditionalFormatting -WorkSheet $sheet -Range "B1:D14" -DataBarColor CornflowerBlue
Close-ExcelPackage $excel -Show

View File

@@ -1,16 +1,17 @@
ipmo ImportExcel -Force
$f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
function Get-DateOffset ($days=0) {
$f = ".\testExport.xlsx"
Remove-Item $f -ErrorAction Ignore
function Get-DateOffset ($days=0) {
(Get-Date).AddDays($days).ToShortDateString()
}
$(
New-PSItem (Get-DateOffset -1) (Get-DateOffset 1) (echo Start End)
New-PSItem (Get-DateOffset) (Get-DateOffset 7)
New-PSItem (Get-DateOffset -10) (Get-DateOffset -1)
) |
New-PSItem (Get-DateOffset) (Get-DateOffset 7)
New-PSItem (Get-DateOffset -10) (Get-DateOffset -1)
) |
Export-Excel $f -Show -AutoSize -AutoNameRange -ConditionalText $(
New-ConditionalText -Range Start -ConditionalType Yesterday -ConditionalTextColor Red

View File

@@ -0,0 +1,22 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item -Path .\test.xlsx -ErrorAction Ignore
$excel = @"
Month,Sales
Jan,1277
Feb,1003
Mar,1105
Apr,952
May,770
Jun,621
"@ | ConvertFrom-csv |
Export-Excel -Path .\test.xlsx -WorkSheetname Sheet1 -AutoNameRange -PassThru
$sheet = $excel.Workbook.Worksheets["Sheet1"]
Add-ConditionalFormatting -WorkSheet $sheet -Range "B1:B7" -DataBarColor LawnGreen
Set-Format -Address $sheet.Cells["A8"] -Value "Total"
Set-Format -Address $sheet.Cells["B8"] -Formula "=Sum(Sales)"
Close-ExcelPackage $excel -Show

View File

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

View File

@@ -0,0 +1,72 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\dashboard.xlsx"
Remove-Item $f -ErrorAction Ignore
$data = @"
From,To,RDollars,RPercent,MDollars,MPercent,Revenue,Margin
Atlanta,New York,3602000,.0809,955000,.09,245,65
New York,Washington,4674000,.105,336000,.03,222,16
Chicago,New York,4674000,.0804,1536000,.14,550,43
New York,Philadelphia,12180000,.1427,-716000,-.07,321,-25
New York,San Francisco,3221000,.0629,1088000,.04,436,21
New York,Phoneix,2782000,.0723,467000,.10,674,33
"@ | ConvertFrom-Csv
$data | Export-Excel $f -AutoSize
$excel = Open-ExcelPackage $f
$sheet1 = $excel.Workbook.Worksheets["sheet1"]
$sheet1.View.ShowGridLines = $false
$sheet1.View.ShowHeaders = $false
Set-Format -Address $sheet1.Cells["C:C"] -NumberFormat "$#,##0" -WrapText -HorizontalAlignment Center
Set-Format -Address $sheet1.Cells["D:D"] -NumberFormat "#.#0%" -WrapText -HorizontalAlignment Center
Set-Format -Address $sheet1.Cells["E:E"] -NumberFormat "$#,##0" -WrapText -HorizontalAlignment Center
Set-Format -Address $sheet1.Cells["F:F"] -NumberFormat "#.#0%" -WrapText -HorizontalAlignment Center
Set-Format -Address $sheet1.Cells["G:H"] -WrapText -HorizontalAlignment Center
## Insert Rows/Columns
$sheet1.InsertRow(1, 1)
foreach ($col in Write-Output 2 4 6 8 10 12 14) {
$sheet1.InsertColumn($col, 1)
$sheet1.Column($col).width = .75
}
Set-Format -Address $sheet1.Cells["E:E"] -Width 12
Set-Format -Address $sheet1.Cells["I:I"] -Width 12
$BorderBottom = "Thick"
$BorderColor = "Black"
Set-Format -Address $sheet1.Cells["A2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["C2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["E2:G2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["I2:K2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["M2:O2"] -BorderBottom $BorderBottom -BorderColor $BorderColor
Set-Format -Address $sheet1.Cells["A2:C8"] -FontColor GrayText
$HorizontalAlignment = "Center"
Set-Format -Address $sheet1.Cells["F1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Revenue
Set-Format -Address $sheet1.Cells["J1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Margin
Set-Format -Address $sheet1.Cells["N1"] -HorizontalAlignment $HorizontalAlignment -Bold -Value Passenger
Set-Format -Address $sheet1.Cells["E2"] -Value '($)'
Set-Format -Address $sheet1.Cells["G2"] -Value '%'
Set-Format -Address $sheet1.Cells["I2"] -Value '($)'
Set-Format -Address $sheet1.Cells["K2"] -Value '%'
Set-Format -Address $sheet1.Cells["C10"] -HorizontalAlignment Right -Bold -Value "Grand Total Calculation"
Set-Format -Address $sheet1.Cells["E10"] -Formula "=Sum(E3:E8)" -Bold
Set-Format -Address $sheet1.Cells["I10"] -Formula "=Sum(I3:I8)" -Bold
Set-Format -Address $sheet1.Cells["M10"] -Formula "=Sum(M3:M8)" -Bold
Set-Format -Address $sheet1.Cells["O10"] -Formula "=Sum(O3:O8)" -Bold
Close-ExcelPackage $excel -Show

Binary file not shown.

View File

@@ -0,0 +1,6 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
ConvertFrom-ExcelToSQLInsert -TableName "Movies" -Path ".\Movies.xlsx" -ConvertEmptyStringsToNull
''
'# UseMSSQLSyntax'
ConvertFrom-ExcelToSQLInsert -UseMSSQLSyntax -TableName "Movies" -Path ".\Movies.xlsx" -ConvertEmptyStringsToNull

Binary file not shown.

View File

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

BIN
Examples/Fibonacci/fib.xlsx Normal file

Binary file not shown.

View File

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

View File

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

View File

@@ -0,0 +1,38 @@
if(!(gcm ig -ErrorAction SilentlyContinue)) {
"Use ``Install-Module NameIT`` to get the needed module from the gallery to support running this script"
return
}
$sign=@{sign=echo + -}
$location=@{location=echo Atlanta Newark Washington Chicago Philadelphia Houston Phoneix}
$(1..6 | % {
$from=$to=""
while($from -eq $to) {
$from=ig "[location]" -CustomData $location
$to=ig "[location]" -CustomData $location
}
[double]$a=ig "########"
[double]$b=ig ".####"
[double]$c=ig "#######"
[double]$d=ig "[sign].##" -CustomData $sign
[double]$e=ig "###"
[double]$f=ig "[sign]##" -CustomData $sign
#"{0},{1},{2},{3},{4},{5},{6},{7}" -f $from, $to, $a, $b, $c, $d, $e, $f
[PSCustomObject][Ordered]@{
From=$from
To=$to
RDollars=$a
RPercent=$b
MDollars=$c
MPercent=$d
Revenue=$e
Margin=$f
}
} | ConvertTo-Csv -NoTypeInformation) -replace '"','' # | Export-Excel

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,43 @@
#Get rid of pre-exisiting sheet
$path = "$Env:TEMP\test.xlsx"
remove-item -Path $path -ErrorAction SilentlyContinue
#Create simple pages for 3 stores with product ID, Product Name, quanity price and total
@"
ID,Product,Quantity,Price,Total
12001,Nails,37,3.99,147.63
12002,Hammer,5,12.10,60.5
12003,Saw,12,15.37,184.44
12010,Drill,20,8,160
12011,Crowbar,7,23.48,164.36
"@ | ConvertFrom-Csv| Export-Excel -Path $path -WorkSheetname Oxford
@"
ID,Product,Quantity,Price,Total
12001,Nails,53,3.99,211.47
12002,Hammer,6,12.10,72.60
12003,Saw,10,15.37,153.70
12010,Drill,10,8,80
12012,Pliers,2,14.99,29.98
"@ | ConvertFrom-Csv| Export-Excel -Path $path -WorkSheetname Abingdon
@"
ID,Product,Quantity,Price,Total
12001,Nails,20,3.99,79.80
12002,Hammer,2,12.10,24.20
12010,Drill,11,8,88
12012,Pliers,3,14.99,44.97
"@ | ConvertFrom-Csv| Export-Excel -Path $path -WorkSheetname Banbury
#define a pivot table with a chart to show a sales by store, broken down by product
$ptdef = New-PivotTableDefinition -PivotTableName "Summary" -PivotRows "Store" -PivotColumns "Product" -PivotData @{"Total"="SUM"} -IncludePivotChart -ChartTitle "Sales Breakdown" -ChartType ColumnStacked -ChartColumn 10
#Join the 3 worksheets.
#Name the combined page "Total" and Name the column with the sheet names "store" (as the sheets 'Oxford','Abingdon' and 'Banbury' are the names of the stores
#Format the data as a table named "Summary", using the style "Light1", put the column headers in bold
#Put in a title and freeze to top of the sheet including title and colmun headings
#Add the Pivot table.
#Show the result
Join-Worksheet -Path $path -WorkSheetName "Total" -Clearsheet -FromLabel "Store" -TableName "Summary" -TableStyle Light1 -AutoSize -BoldTopRow -FreezePane 2,1 -Title "Store Sales Summary" -TitleBold -TitleSize 14 -PivotTableDefinition $ptdef -show

View File

@@ -0,0 +1,11 @@
$path = "$env:TEMP\Test.xlsx"
Remove-item -Path $path -ErrorAction SilentlyContinue
Get-WmiObject -Class win32_logicaldisk |
Select-Object -Property DeviceId,VolumeName, Size,Freespace |
Export-Excel -Path $path -WorkSheetname Volumes -NumberFormat "0,000"
Get-NetAdapter |
Select-Object -Property Name,InterfaceDescription,MacAddress,LinkSpeed |
Export-Excel -Path $path -WorkSheetname NetAdapters
Join-Worksheet -Path $path -HideSource -WorkSheetName Summary -NoHeader -LabelBlocks -AutoSize -Title "Summary" -TitleBold -TitleSize 22 -show

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,9 +1,11 @@
ColumnChart -Title "Central Limit Theorem" ($(
for ($i = 1; $i -le 500; $i++) {
$s=0
for ($j = 1; $j -le 100; $j++){
$s+=Get-Random -Minimum 0 -Maximum 2
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
ColumnChart -Title "Central Limit Theorem" -NoLegend ($(
for ($i = 1; $i -le 500; $i++) {
$s = 0
for ($j = 1; $j -le 100; $j++) {
$s += Get-Random -Minimum 0 -Maximum 2
}
$s
}
$s
}
) | Sort | Group | select Count, Name)
) | Sort-Object | Group-Object | Select-Object Count, Name)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,19 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlFile = "$env:TEMP\mw.xlsx"
Remove-Item $xlFile -ErrorAction Ignore
$leftCsv = @"
MyProp1,MyProp2,Length
a,b,10
c,d,20
"@ | ConvertFrom-Csv
$rightCsv = @"
MyProp1,MyProp2,Length
a,b,10
c,d,21
"@ | ConvertFrom-Csv
Merge-Worksheet -OutputFile $xlFile -ReferenceObject $leftCsv -DifferenceObject $rightCsv -Key Length -Show

View File

@@ -0,0 +1,9 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlfile = "$env:TEMP\testThis.xlsx"
Remove-Item $xlfile -ErrorAction Ignore
1..10 | Export-Excel $xlfile -WorkSheetname First
11..20 | Export-Excel $xlfile -WorkSheetname Second -MoveToStart
21..30 | Export-Excel $xlfile -WorkSheetname Third -MoveBefore First
31..40 | Export-Excel $xlfile -WorkSheetname Fourth -MoveAfter Third -Show

Binary file not shown.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

View File

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

Binary file not shown.

View File

@@ -0,0 +1,15 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item .\test1.xlsx -ErrorAction Ignore
$ExcelParams = @{
Path = ".\test1.xlsx"
IncludePivotTable = $true
PivotRows = 'Company'
PivotTableName = 'MyTable'
PivotData = @{'Handles' = 'sum'}
Show = $true
}
Get-Process | Select-Object Company, Handles |
Export-Excel @ExcelParams

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,21 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlFile=".\testPivot.xlsx"
Remove-Item $xlFile -ErrorAction Ignore
$data =@"
Region,Area,Product,Units,Cost
North,A1,Apple,100,.5
South,A2,Pear,120,1.5
East,A3,Grape,140,2.5
West,A4,Banana,160,3.5
North,A1,Pear,120,1.5
North,A1,Grape,140,2.5
"@ | ConvertFrom-Csv
$data |
Export-Excel $xlFile -Show `
-AutoSize -AutoFilter `
-IncludePivotTable `
-PivotRows Product `
-PivotData @{"Units"="sum"} -PivotFilter Region, Area

View File

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

View File

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

View File

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

View File

@@ -1,9 +1,10 @@

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

View File

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

View File

@@ -0,0 +1,14 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item .\testFormula.xlsx -ErrorAction Ignore
@"
id,item,units,cost
12001,Nails,37,3.99
12002,Hammer,5,12.10
12003,Saw,12,15.37
12010,Drill,20,8
12011,Crowbar,7,23.48
"@ | ConvertFrom-Csv |
Add-Member -PassThru -MemberType NoteProperty -Name Total -Value "=units*cost" |
Export-Excel -Path .\testFormula.xlsx -Show -AutoSize -AutoNameRange

View File

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

View File

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

Binary file not shown.

View File

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

View File

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

BIN
Examples/Stocks/stocks.xlsx Normal file

Binary file not shown.

View File

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

Binary file not shown.

View File

@@ -0,0 +1,37 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlfilename=".\test.xlsx"
rm $xlfilename -ErrorAction Ignore
$ConditionalText = @()
$ConditionalText += New-ConditionalText -Range "C:C" -Text failed -BackgroundColor red -ConditionalTextColor black
$ConditionalText += New-ConditionalText -Range "C:C" -Text passed -BackgroundColor green -ConditionalTextColor black
$r = .\TryIt.ps1
$xlPkg = $(foreach($result in $r.TestResult) {
[PSCustomObject]@{
Name = $result.Name
#Time = $result.Time
Result = $result.Result
Messge = $result.FailureMessage
StackTrace = $result.StackTrace
}
}) | Export-Excel -Path $xlfilename -AutoSize -ConditionalText $ConditionalText -PassThru
$sheet1 = $xlPkg.Workbook.Worksheets["sheet1"]
$sheet1.View.ShowGridLines = $false
$sheet1.View.ShowHeaders = $false
Set-Format -Address $sheet1.Cells["A:A"] -AutoSize
Set-Format -Address $sheet1.Cells["B:D"] -WrapText
$sheet1.InsertColumn(1, 1)
Set-Format -Address $sheet1.Cells["A:A"] -Width 5
Set-Format -Address $sheet1.Cells["B1:E1"] -HorizontalAlignment Center -BorderBottom Thick -BorderColor Cyan
Close-ExcelPackage $xlPkg -Show

View File

@@ -0,0 +1,40 @@
function Show-PesterResults {
$xlfilename=".\test.xlsx"
rm $xlfilename -ErrorAction Ignore
$ConditionalText = @()
$ConditionalText += New-ConditionalText -Range "Result" -Text failed -BackgroundColor red -ConditionalTextColor black
$ConditionalText += New-ConditionalText -Range "Result" -Text passed -BackgroundColor green -ConditionalTextColor black
$ConditionalText += New-ConditionalText -Range "Result" -Text pending -BackgroundColor gray -ConditionalTextColor black
$xlParams = @{
Path=$xlfilename
WorkSheetname = 'PesterTests'
ConditionalText=$ConditionalText
PivotRows = 'Description'
PivotColumns = 'Result'
PivotData = @{'Result'='Count'}
IncludePivotTable = $true
#IncludePivotChart = $true
#NoLegend = $true
#ShowPercent = $true
#ShowCategory = $true
AutoSize = $true
AutoNameRange = $true
AutoFilter = $true
Show = $true
}
$(foreach($result in (Invoke-Pester -PassThru -Show None).TestResult) {
[PSCustomObject]@{
Description = $result.Describe
Name = $result.Name
#Time = $result.Time
Result = $result.Result
Messge = $result.FailureMessage
StackTrace = $result.StackTrace
}
}) | Sort Description | Export-Excel @xlParams
}

View File

@@ -0,0 +1,49 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
function Test-APIReadXls {
param(
[parameter(Mandatory)]
$XlFilename,
$WorksheetName = 'Sheet1'
)
$records = Import-Excel $XlFilename
$params = @{}
$blocks = $(foreach ($record in $records) {
foreach ($propertyName in $record.psobject.properties.name) {
if ($propertyName -notmatch 'ExpectedResult|QueryString') {
$params.$propertyName = $record.$propertyName
}
}
if ($record.QueryString) {
$params.Uri += "?{0}" -f $record.QueryString
}
@"
it "Should have the expected result '$($record.ExpectedResult)'" {
`$target = '$($params | ConvertTo-Json -compress)' | ConvertFrom-Json
`$target.psobject.Properties.name | ForEach-Object {`$p=@{}} {`$p.`$_=`$(`$target.`$_)}
Invoke-RestMethod @p | Should Be '$($record.ExpectedResult)'
}
"@
})
$testFileName = "{0}.tests.ps1" -f (get-date).ToString("yyyyMMddHHmmss.fff")
@"
Describe "Tests from $($XlFilename) in $($WorksheetName)" {
$($blocks)
}
"@ | Set-Content -Encoding Ascii $testFileName
#Invoke-Pester -Script (Get-ChildItem $testFileName)
Get-ChildItem $testFileName
}

View File

@@ -0,0 +1,7 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
. $PSScriptRoot\TestAPIReadXls.ps1
Test-APIReadXls $PSScriptRoot\testlist.xlsx | % {
Invoke-Pester -Script $_.fullname -PassThru -Show None
}

Binary file not shown.

View File

@@ -1,6 +1,6 @@
# To ship, is to choose
ipmo .\ImportExcel.psd1 -Force
#ipmo .\ImportExcel.psd1 -Force
$pt=[ordered]@{}

View File

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

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