Compare commits

..

339 Commits

Author SHA1 Message Date
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
dfinke
34457d05da Fixes from James merged 2018-03-14 20:11:40 -04:00
Doug Finke
d5bf0a44b4 Merge pull request #296 from jhoneill/master
SQL Server related bug fixes in Send-SQLDataToExcel.ps1
2018-03-14 20:07:29 -04:00
jhoneill
cbe5c8e347 SQL Server related bug fixes
Second connection to the same server may begin in a closed state,
previously assumed all connections begin as "open". Fixed bugs with
ChangeDatabase parameter which would prevent it working
2018-03-10 17:43:48 +00:00
dfinke
848177c358 fixed spelling #285 2018-02-10 20:14:02 -05:00
dfinke
80224da067 updated 2018-01-14 09:35:09 -05:00
dfinke
a5b9ddc257 Fix 276 and 262 2018-01-12 19:32:19 -05:00
dfinke
2f70cd88e8 Allow xlsm files to be read 2018-01-09 19:39:13 -05:00
dfinke
5969bba169 updated and answers issue #273 2018-01-02 16:37:44 -05:00
dfinke
7de56c803c bump version 2018-01-02 16:08:38 -05:00
dfinke
5e4220bd09 Supports excluding Row Grand Totals 2018-01-02 16:08:00 -05:00
dfinke
e8a3d3f350 Added -Force to New-Alias 2018-01-02 11:32:04 -05:00
dfinke
458a08dab0 Add example to set the background color of a cloumn 2017-12-21 09:33:14 -05:00
dfinke
c598bbc2a5 updated 2017-12-02 18:06:40 -05:00
dfinke
dc4b66fffe Two things, checks for $Chart.DataLabel and if the directory for the xlsx path does not exist, it creates it 2017-12-02 12:38:24 -05:00
dfinke
9b57853881 fixed 2017-11-29 18:19:51 -05:00
dfinke
a4169a42f1 Added YouTube link 2017-11-24 14:26:11 -05:00
dfinke
0862fcdc8c Changed description 2017-11-24 14:14:07 -05:00
dfinke
28ddd7de13 Added ReturnRange param 2017-11-24 14:13:51 -05:00
dfinke
21d9c56854 updated to image example 2017-11-24 14:13:30 -05:00
dfinke
0f9bf07d30 Bumped version. Added url for how to videos 2017-11-24 10:16:13 -05:00
dfinke
1df63e3206 added xlrange to image example 2017-11-24 10:07:39 -05:00
dfinke
360c497bee Added new ps1 files 2017-11-24 10:07:23 -05:00
dfinke
182e4313b3 bump version 2017-11-23 12:31:10 -05:00
dfinke
df3702a09c Updated readme 2017-11-23 12:30:51 -05:00
dfinke
4616112aee Commented out last line 2017-11-23 12:30:35 -05:00
Doug Finke
a6f0d621f8 Merge pull request #250 from jhoneill/master
Minor fixes, plus set-row. set column and Send-SQLData
2017-11-23 12:24:30 -05:00
jhoneill
0489ac7d4f Added Convert-xlRangeToImage
New functionlity to allow a range to be exported to a PNG, JPG or BMP
2017-11-17 11:24:46 +00:00
jhoneill
9969a94309 Minor Fixes, Set-Row, Set-Column, Send-SQLDataToExcel
Export-Excel :
* Fixed a typo in the message at line 373.
* Now catch an attempt to both clear the sheet and append to it.
* Fixed some issues when appending to sheets where the header isn't in
row 1 or the data doesn't start in column 1.
* Added support for more settings when creating a pivot chart.
* Corrected a typo PivotTableName was PivtoTableName in definition of
New-PivotTableDefinition
Add-ConditionalFormat and Set-Format added to the parameters so each has
the choice of working more like the other.
Added Set-Row and Set-Column - fill a formula down or across.
Added Send-SQLDataToExcel. Insert a rowset and then call Export-Excel
for ranges, charts, pivots etc
2017-11-15 18:04:14 +00:00
jhoneill
6d106fcc33 Merge remote-tracking branch 'refs/remotes/dfinke/master' 2017-10-31 12:58:31 +00:00
dfinke
98d7c04b3f updated 2017-10-30 19:06:33 -04:00
Doug Finke
23b1608671 Merge pull request #243 from dfinke/jhoneill-master
Simple tweaks to James O'Neill PR
2017-10-30 18:58:04 -04:00
dfinke
e008f3cc21 Updated readme 2017-10-30 18:56:44 -04:00
dfinke
9b7e068beb bumped version 2017-10-30 18:54:04 -04:00
dfinke
624a4e4b82 Updated list of ps1 files for copying and importing 2017-10-30 18:39:04 -04:00
dfinke
93868d4cd3 New files for formatting 2017-10-30 18:38:47 -04:00
dfinke
53b35f9285 Tweaked paramsets 2017-10-30 18:38:25 -04:00
dfinke
edc8b29859 Merge branch 'master' of https://github.com/jhoneill/ImportExcel into jhoneill-master 2017-10-29 11:20:38 -04:00
jhoneill
efadf83b6b Fixed a misplaced commas
Param block in close was re-ordered leaving a parameter in the middle
missing a comma and the parameter at the end had a comma it should not
have done.
2017-10-24 09:17:32 +01:00
jhoneill
890906ff10 Fixes to formatting , new Export charts tool (requires Excel.exe) help updates and Export excel support for "No data" use
Export-Excel.ps1
1. No code seems to act on the "NoClobber" parameter, I had previously
added a "ClearSheet" parameter which removes the worksheet and any past
data (before if there were fewer rows or columns in the new data, the
old would not be over-written)
2. I have made the whole of the process{} block in export-Excel subject
to IF ($target data)  .... this way things which are processed in the
end{} block can be done in a seperate call to Export-Excel without the
need to load data.  Because of this there should be no need for the Open
and Close -ExcelPackage functions going forward, but I've left them in
place for now
3. Fixed a bug when setting the target range it was previously setting
the end of the range to be the number of columns which failed if the
data was inserted at a column other than one.
4. I've moved the top left corner of a pivot chart so it sits closer to
the data.
5. I've change the check for inserting a pivot table so if
-InsertPivotChart is specified it implies -insertPivotTable.

Formatting.
6. The previous check in was not up-to date and contained some issues
with conditional formatting which I had fixed in the past.
7. Fixed a peformance bug in set-format where a foreach intended to
allow the same format to be applied to multiple ranges would format a
large blocks of cells one-by-one if it was the only range passed. .
8. Improved online help for the formatting commands.

Export charts
9. My current project is importing a lot of data into Excel and needs to
take Excel charts out as JPG files. I've thrown in the Export-Charts
script as "something for the pot",  even though the connection with the
rest of work is loose,
2017-10-24 09:02:14 +01:00
jhoneill
bd40cfe829 Append, and formatting
Changed Export-Excel.ps1

#1 @ Line 197 Made new parameter sets . Default, and table already
existed and use path. Added DefaultPackage and TablePackage
A New parameter  "Package" allows an ExcelPackage object returned by
-passThru to be passed in
~Line 400 code to use package or path depending on path passed.

(also added Open-ExcelPackage  to get the object without exporting and
Close-ExcelPackage to close it nicely - these are in their own file)

#2.  @ Line 256 added new parameter excludeProperty to remove unwanted
properties without needing to go through select-object
~Line 459 added logic to exclude the properties specified in the new
parameter

#3 .  @ Line 262 Added new parameter Append
~Line 420 code to read the existing headers and move the insertion point
below the current data
(normal behaviour is to check if headers exist when adding data in the
process block, which makes this change wonderfully easy)
~Line 510 changed basis for identifying named ranges and changed scope
for rangeName so it can be used on other sheets

#4.  ~Line 550. Remove any existing Pivot table before trying to
[re]create it.

Added formatting.ps1 which applies conditional and normal formats -
requires an ExcelPackage to be open.

Added Open-ExcelPackage.ps1 (which contains a close function as well to
get the the object and save it )  open allows the sheet to be loaded
into a package object without needing to export .

Updated .psm1 to add the formating and open/close ps1 files.
2017-10-21 18:14:02 +01:00
dfinke
08254b0fe1 Added 2017-10-20 17:07:29 -04:00
dfinke
1834a4967f Corrected version 2017-10-20 17:04:15 -04:00
Doug Finke
954ed8d736 Merge pull request #233 from DarkLite1/master
Fixed zero exported as String instead of numerical
2017-10-17 09:49:22 -04:00
DarkLite1
4823424ae3 Fixed zero exported as String instead of numerical 2017-10-16 13:59:22 +02:00
dfinke
e07fad442a Update 2017-10-13 16:38:57 -04:00
dfinke
a175125990 Bump version 2017-10-13 16:38:50 -04:00
Doug Finke
ca92d468cf Merge pull request #232 from dfinke/MultilplePivotTablesWithCmdlets
Multilple pivot tables with cmdlets
2017-10-13 16:19:14 -04:00
dfinke
8d6f5521af updated 2017-10-13 15:50:25 -04:00
dfinke
ceb986b408 added 2017-10-13 09:17:51 -04:00
dfinke
48607e403e Name of pivot table comes from caller 2017-10-12 12:06:16 -04:00
dfinke
57c02a466d works with multiple sheets 2017-10-12 11:33:49 -04:00
dfinke
1004d8a9ea Updated 2017-10-12 10:55:18 -04:00
dfinke
f5acf88a17 Experiment multiple pivot tables 2017-10-11 19:23:45 -04:00
dfinke
85151f8375 formatted 2017-10-11 18:11:47 -04:00
dfinke
304a96e955 updated 2017-10-07 10:29:07 -04:00
Doug Finke
3c027bafdd Update ToDo.md 2017-10-07 10:28:08 -04:00
dfinke
ac04f0025a added 2017-10-07 10:27:13 -04:00
dfinke
fd2c5dd042 updated 2017-10-07 10:26:11 -04:00
dfinke
51447f9732 Updated 2017-10-04 18:26:08 -04:00
dfinke
6966d0d4ef bumped version 2017-10-04 18:26:03 -04:00
Doug Finke
2dc50250fc Merge pull request #230 from ili101/master
Fix Bug. AutoFilter with TableName corrupted file
2017-10-04 18:21:48 -04:00
ili101
8ad38b544e Fix Bug, Unable to find type [PSPlot] in ISE
When loading cmdlet info from ISE "Commands" panel you get the error
"Unable to find type [PSPlot]"
https://github.com/dfinke/ImportExcel/issues/131
2017-10-05 00:15:57 +03:00
ili101
06124e12e7 Fix Bug. AutoFilter with TableName corrupted file
Fix Bug, AutoFilter with TableName create corrupted Excel file.
https://github.com/dfinke/ImportExcel/issues/65
You now cannot set AutoFilter and TableName at the same time.
"-Now" will not auto add AutoFilter if TableName set.
2017-10-05 00:02:06 +03:00
dfinke
d1c3e7b23e Tweaked 2017-10-03 10:00:49 -04:00
dfinke
f0203f38e8 Bumped the version 2017-10-03 10:00:40 -04:00
Doug Finke
ef816d28d2 Merge pull request #228 from jeremytbrun/TitleFix
Title fix (Issues #182 and #89)
2017-10-03 09:54:49 -04:00
Brun
85512c2261 README update 2017-10-03 08:39:09 -04:00
Brun
409f69e915 Updated README 2017-10-03 08:29:10 -04:00
Brun
58ae6845ff Updated README 2017-10-03 08:28:37 -04:00
Brun
5d70003582 Title fixes 2017-10-02 10:04:13 -04:00
Doug Finke
9a66cb6123 Merge pull request #227 from DarkLite1/ImportExcelPassword
Import excel added parameter 'Password'
2017-09-29 20:53:01 -04:00
DarkLite1
efb9e158b5 Added help text 2017-09-28 14:21:55 +02:00
DarkLite1
75aaff300a Correct version nr 2017-09-28 14:14:36 +02:00
DarkLite1
12fd17b9ea Bumped version to 4.0.1
- Renamed 'TopRow' to 'StartRow' and added alias
  (More concise with future parameter names like 'StartColumn')
- Removed 'ChangeList' in 'Notes' as this is tracked in Git
- Added parameter 'Password' to import password protected files
- Added Pester tests for parameter aliasses and:
	- parameter 'Password'
	- parameter 'Path' validation for extensions '.xls' and '.xlsx'
	- 'HeaderName' witb blanks
- Changed comments in Pester tests from '<# Comment #>' to '# Comment'
  (Easier to outcomment a whole block of tests when performing a test on a specific piece of code)
2017-09-28 14:12:07 +02:00
DarkLite1
facb38a2aa Merge branch 'master' of https://github.com/dfinke/ImportExcel 2017-09-27 15:51:51 +02:00
Doug Finke
222e0609d9 Merge pull request #217 from DarkLite1/ImportExcelFirstWorksheet
Import-Excel parameter
2017-09-22 16:07:34 -04:00
Brun
a3c2a92e33 Header formatting fix when Title is used (Issue #182) 2017-09-20 13:56:06 -04:00
DarkLite1
1f435277a5 Merge branch 'ImportExcelFirstWorksheet' 2017-09-20 09:40:00 +02:00
DarkLite1
295b369a81 Improved paramter validation and fixed 'WorksheetName' position. Extra Pester tests added too. 2017-09-20 09:35:57 +02:00
Doug Finke
84ad62989a Merge pull request #216 from DarkLite1/ImportExcelFirstWorksheet
Import excel first worksheet
2017-09-19 11:36:23 -04:00
DarkLite1
a0563d4daa Import-Excel updated help 2017-09-19 16:00:11 +02:00
DarkLite1
2c16cdcbfe Import-Excel select first worksheet by default 2017-09-19 15:55:13 +02:00
DarkLite1
e45437e32e Fixed spelling 2017-09-18 11:50:30 +02:00
dfinke
aadae64105 Updated to 4.0 2017-09-12 19:22:31 -04:00
Doug Finke
41b2455705 Merge pull request #202 from DarkLite1/master
Rewrote 'Import-Excel' to fix some serious bugs and added function 'Update-FirstObjectProperties'
2017-09-12 19:13:32 -04:00
DarkLite1
d75350c659 Improved tests for emtpy rows after TopRow x 2017-09-11 14:06:45 +02:00
DarkLite1
323c52a24b Added alias HeaderRow for TopRow to ImportExcel 2017-09-08 12:53:23 +02:00
DarkLite1
bcc2db8657 Improved ImportExcel.Tests 2017-09-07 13:38:43 +02:00
DarkLite1
e42fa83043 Added position to params of 'Import-Excel' 2017-08-22 08:48:20 +02:00
DarkLite1
662d5913ae Rewrote 'Import-Excel':
- Added parameter sets for proper parameter validation and to make sure '-NoHeader' and '-HeaderRow' aren't used together
- Added try/catch clause, CmdLetBinding and verbose messages
- Renamed 'HeaderRow' to 'TopRow' to avoid confusion with other parameters
- Renamed '-Header' to '-HeaderName'
- Added test for duplicate property names
- Added test for empty worksheet
- Added test for no data after TopRow
- Fixed incorrect import when there's no value in the first column
- Fixed values being imported under the wrong property name in case one
- Fixed incorrect import in case column A is empty and B and C not ( '$Worksheet.Dimension.Columns' is unreliable because it will say 2 columns are in use while it should say 3).
(Ex. Add data in cell B2 and C2, use the '-NoHeader' switch, notice P1 and P2 are incorrectly blanc.)
2017-08-21 15:34:30 +02:00
DarkLite1
d8d624ba9c Added the function 'Update-FirstObjectProperties'
Added help text in 'Export-Excel'
Added try/catch to 'Install' and 'InstallModule'
Improved code readability in 'Install' and 'InstallModule'
2017-07-26 13:37:08 +02:00
DarkLite1
2e7df0a2fe Merge remote-tracking branch 'upstream/master' 2017-07-25 14:07:32 +02:00
DarkLite1
39019d2680 Merge remote-tracking branch 'refs/remotes/origin/master' 2017-06-26 13:15:21 +02:00
DarkLite1
d009581b1b Merge remote-tracking branch 'refs/remotes/origin/master' into dfinke/master 2017-06-26 13:13:23 +02:00
149 changed files with 9253 additions and 1022 deletions

4
.gitignore vendored
View File

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

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

@@ -0,0 +1,28 @@
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

View File

@@ -0,0 +1,135 @@
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
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 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")]
[Parameter(Mandatory = $true, ParameterSetName = "DataBar")]
[Parameter(Mandatory = $true, ParameterSetName = "ThreeIconSet")]
[Parameter(Mandatory = $true, ParameterSetName = "FourIconSet")]
[Parameter(Mandatory = $true, ParameterSetName = "FiveIconSet")]
[OfficeOpenXml.ExcelWorksheet]$WorkSheet ,
#The area of the worksheet where the format is to be applied
[Parameter(Mandatory = $true, ParameterSetName = "NamedRule")]
[Parameter(Mandatory = $true, ParameterSetName = "DataBar")]
[Parameter(Mandatory = $true, ParameterSetName = "ThreeIconSet")]
[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
[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.
[Parameter(Mandatory = $true, ParameterSetName = "NamedRule", Position = 3)]
[Parameter(Mandatory = $true, ParameterSetName = "NamedRuleAddress", Position = 3)]
[OfficeOpenXml.ConditionalFormatting.eExcelConditionalFormattingRuleType]$RuleType ,
#Text colour for matching objects
[Alias("ForeGroundColour")]
[System.Drawing.Color]$ForeGroundColor,
#colour for databar type charts
[Parameter(Mandatory = $true, ParameterSetName = "DataBar")]
[Parameter(Mandatory = $true, ParameterSetName = "DataBarAddress")]
[Alias("DataBarColour")]
[System.Drawing.Color]$DataBarColor,
#One of the three-icon set types (e.g. Traffic Lights)
[Parameter(Mandatory = $true, ParameterSetName = "ThreeIconSet")]
[Parameter(Mandatory = $true, ParameterSetName = "ThreeIconSetAddress")]
[OfficeOpenXml.ConditionalFormatting.eExcelconditionalFormatting3IconsSetType]$ThreeIconsSet,
#A four-icon set name
[Parameter(Mandatory = $true, ParameterSetName = "FourIconSet")]
[Parameter(Mandatory = $true, ParameterSetName = "FourIconSetAddress")]
[OfficeOpenXml.ConditionalFormatting.eExcelconditionalFormatting4IconsSetType]$FourIconsSet,
#A five-icon set name
[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"
[string]$ConditionValue2,
#Background colour for matching items
[System.Drawing.Color]$BackgroundColor,
#Background pattern for matching items
[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
$NumberFormat,
#Put matching items in bold face
[switch]$Bold,
#Put matching items in italic
[switch]$Italic,
#Underline matching items
[switch]$Underline,
#Strikethrough text of matching items
[switch]$StrikeThru,
#If specified pass the rule back to the caller to allow additional customization.
[switch]$Passthru
)
#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 ($reverse) {$rule.reverse = $true}
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
}
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 }
if ($Passthru) {$rule}
}

View File

@@ -9,7 +9,7 @@ function DoChart {
) )
if($targetData[0] -is [System.ValueType]) { 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 { } else {
$xyRange = Get-XYRange $targetData $xyRange = Get-XYRange $targetData
@@ -19,7 +19,7 @@ function DoChart {
$Y = $xyRange.YRange.ExcelColumn $Y = $xyRange.YRange.ExcelColumn
$YRange = "{0}2:{0}{1}" -f $Y,($targetData.count+1) $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 -NoLegend:$NoLegend -ShowCategory:$ShowCategory -ShowPercent:$ShowPercent
} }

38
ColorCompletion.ps1 Normal file
View File

@@ -0,0 +1,38 @@
Function ColorCompletion {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
[System.Drawing.KnownColor].GetFields() | Where-Object {$_.IsStatic -and $_.name -like "$wordToComplete*" } |
Sort-Object name | ForEach-Object {New-CompletionResult $_.name $_.name
}
}
if (Get-Command -Name register-argumentCompleter -ErrorAction SilentlyContinue) {
Register-ArgumentCompleter -CommandName Export-Excel -ParameterName TitleBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName DataBarColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName ForeGroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Add-ConditionalFormatting -ParameterName PatternColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName AllDataBackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName BackgroundColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName FontColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName Compare-Worksheet -ParameterName TabColor -ScriptBlock $Function:ColorCompletion
Register-ArgumentCompleter -CommandName 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

@@ -0,0 +1,74 @@
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}
}
<#
del demo*.xlsx
$workSheetname = 'Processes'
$Path = "$pwd\demo.xlsx"
$myData = Get-Process | Select-Object -Property Name,WS,CPU,Description,company,startTime
$excelPackage = $myData | Export-Excel -KillExcel -Path $Path -WorkSheetname $workSheetname -ClearSheet -AutoSize -AutoFilter -BoldTopRow -FreezeTopRow -PassThru
$workSheet = $excelPackage.Workbook.Worksheets[$workSheetname]
$range = $workSheet.Dimension.Address
Set-Format -WorkSheet $workSheet -Range "b:b" -NumberFormat "#,###" -AutoFit
Set-Format -WorkSheet $workSheet -Range "C:C" -NumberFormat "#,##0.00" -AutoFit
Set-Format -WorkSheet $workSheet -Range "F:F" -NumberFormat "dd MMMM HH:mm:ss" -AutoFit
Add-ConditionalFormatting -WorkSheet $workSheet -Range "c2:c1000" -DataBarColor Blue
Add-ConditionalFormatting -WorkSheet $workSheet -Range "b2:B1000" -RuleType GreaterThan -ConditionValue '104857600' -ForeGroundColor "Red" -Bold
Export-Excel -ExcelPackage $excelPackage -WorkSheetname $workSheetname
Convert-XlRangeToImage -Path $Path -workSheetname $workSheetname -range $range -destination "$pwd\temp.png" -show
#>
#Convert-XlRangeToImage -Path $Path -workSheetname $workSheetname -range $range -destination "$pwd\temp.png" -show

View File

@@ -1,4 +1,75 @@
function ConvertFrom-ExcelToSQLInsert { 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( param(
[Parameter(Mandatory = $true)] [Parameter(Mandatory = $true)]
$TableName, $TableName,
@@ -8,39 +79,40 @@ function ConvertFrom-ExcelToSQLInsert {
$Path, $Path,
[Alias("Sheet")] [Alias("Sheet")]
$WorkSheetname = 1, $WorkSheetname = 1,
[int]$HeaderRow = 1, [Alias('HeaderRow', 'TopRow')]
[ValidateRange(1, 9999)]
[Int]$StartRow,
[string[]]$Header, [string[]]$Header,
[switch]$NoHeader, [switch]$NoHeader,
[switch]$DataOnly [switch]$DataOnly,
[switch]$ConvertEmptyStringsToNull,
[switch]$UseMSSQLSyntax
) )
$null = $PSBoundParameters.Remove('TableName') $null = $PSBoundParameters.Remove('TableName')
$null = $PSBoundParameters.Remove('ConvertEmptyStringsToNull')
$null = $PSBoundParameters.Remove('UseMSSQLSyntax')
$params = @{} + $PSBoundParameters $params = @{} + $PSBoundParameters
ConvertFrom-ExcelData @params { ConvertFrom-ExcelData @params {
param($propertyNames, $record) param($propertyNames, $record)
$ColumnNames = "'" + ($PropertyNames -join "', '") + "'" $ColumnNames = "'" + ($PropertyNames -join "', '") + "'"
$values = foreach ($propertyName in $PropertyNames) { $record.$propertyName } if($UseMSSQLSyntax) {
$targetValues = "'" + ($values -join "', '") + "'" $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 "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 { function Copy-ExcelWorkSheet {
[CmdletBinding()] [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( param(
#An ExcelWorkbook or ExcelPackage object or the path to an XLSx file where the data is found.
[Parameter(Mandatory=$true)] [Parameter(Mandatory=$true)]
$SourceWorkbook, $SourceWorkbook,
[Parameter(Mandatory=$true)] #Name or number (starting from 1) of the worksheet in the source workbook (defaults to 1).
$SourceWorkSheet, $SourceWorkSheet = 1 ,
#An ExcelWorkbook or ExcelPackage object or the path to an XLSx file where the data should be copied.
[Parameter(Mandatory=$true)] [Parameter(Mandatory=$true)]
$DestinationWorkbook, $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, $DestinationWorkSheet,
#if the destination is an excel package or a path, launch excel and open the file on completion.
[Switch]$Show [Switch]$Show
) )
#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)" Write-Verbose "Copying $($SourceWorkSheet) from $($SourceWorkbook) to $($DestinationWorkSheet) in $($DestinationWorkbook)"
$null = Add-WorkSheet -ExcelWorkbook $wb -WorkSheetname $DestinationWorkSheet -CopySource $sourceWs
if(!$DestinationWorkSheet) { if ($package1) {Close-ExcelPackage -ExcelPackage $Package1 -NoSave }
$DestinationWorkSheet = $SourceWorkSheet 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 ` -ChartType LineMarkersStacked `
-Header "Stuff" ` -XRange "Processes[Name]" `
-XRange "Processes[Company]" ` -YRange "Processes[PM]","Processes[VirtualMemorySize]" `
-YRange "Processes[PM]","Processes[VirtualMemorySize]" -SeriesHeader "PM","VM"
$data | $data |
Export-Excel temp.xlsx -AutoSize -TableName Processes -Show -ExcelChartDefinition $c 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 = @" $data = @"
A,B,C,Date A,B,C,Date
2,1,1,2016-03-29 2,1,1,2016-03-29
5,10,1,2016-03-29 5,10,1,2016-03-29
"@ | ConvertFrom-Csv "@
$c = New-ExcelChart -Title Impressions ` $c = New-ExcelChartDefinition -Title Impressions `
-ChartType Line -Header "Something" ` -ChartType Line `
-XRange "Impressions[Date]" ` -XRange "Impressions[Date]" `
-YRange @("Impressions[B]","Impressions[A]") ` -YRange "Impressions[B]" # @("Impressions[B]","Impressions[A]") `
-SeriesHeader 'B data','A data' -SeriesHeader 'B data','A data' `
-Row 0 -Column 0
$data | $data | ConvertFrom-Csv | Export-Excel -path temp.xlsx -AutoSize -TableName Impressions
Export-Excel temp.xlsx -AutoSize -TableName Impressions -Show -ExcelChartDefinition $c Export-Excel -path temp.xlsx -worksheetName chartPage -ExcelChartDefinition $c -show

View File

@@ -1,4 +1,6 @@
rm *.xlsx try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item -Path Tools.xlsx
$data = @" $data = @"
ID,Product,Quantity,Price,Total ID,Product,Quantity,Price,Total
@@ -7,13 +9,11 @@ ID,Product,Quantity,Price,Total
12003,Saw,12,15.37,184.44 12003,Saw,12,15.37,184.44
12010,Drill,20,8,160 12010,Drill,20,8,160
12011,Crowbar,7,23.48,164.36 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 $data | ConvertFrom-Csv |
$yRange="Total"; $c2 = New-ExcelChart -YRange $yRange -XRange $xRange -Title $yRange -Row 9 -Column 15 -Height 225 Export-Excel -Path "Tools.xlsx" -AutoFilter -AutoNameRange -AutoSize -ExcelChartDefinition $c1,$c2,$c3 -Show
$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

View File

@@ -1,3 +1,5 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
function plot { function plot {
param( param(
$f, $f,
@@ -9,7 +11,7 @@ function plot {
$maxx=[math]::Round($maxx,1) $maxx=[math]::Round($maxx,1)
$file = 'C:\temp\plot.xlsx' $file = 'C:\temp\plot.xlsx'
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
$c = New-ExcelChart -XRange X -YRange Y -ChartType Line -NoLegend -Title Plot -Column 2 -ColumnOffSetPixels 35 $c = New-ExcelChart -XRange X -YRange Y -ChartType Line -NoLegend -Title Plot -Column 2 -ColumnOffSetPixels 35

View File

@@ -1,8 +1,10 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$file = ".\conditionalTextFormatting.xlsx" $file = ".\conditionalTextFormatting.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
Get-Service | Get-Service |
Select Status, Name, DisplayName, ServiceName | Select-Object Status, Name, DisplayName, ServiceName |
Export-Excel $file -Show -AutoSize -AutoFilter -ConditionalText $( Export-Excel $file -Show -AutoSize -AutoFilter -ConditionalText $(
New-ConditionalText stop New-ConditionalText stop
New-ConditionalText runn darkblue cyan New-ConditionalText runn darkblue cyan

View File

@@ -1,3 +1,5 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$ContainsBlanks = New-ConditionalText -ConditionalType ContainsBlanks $ContainsBlanks = New-ConditionalText -ConditionalType ContainsBlanks
$data = $( $data = $(
@@ -11,5 +13,5 @@ $data = $(
$file ="c:\temp\testblanks.xlsx" $file ="c:\temp\testblanks.xlsx"
rm $file -ErrorAction Ignore Remove-Item $file -ErrorAction Ignore
$data | Export-Excel $file -show -ConditionalText $ContainsBlanks $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,6 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore Remove-Item $f -ErrorAction Ignore
$data = $( $data = $(

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 ` Export-Excel .\testExport.xlsx -Show -AutoSize -AutoNameRange `
-ConditionalFormat $( -ConditionalFormat $(

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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,6 +1,7 @@
ipmo ImportExcel -Force try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$f = ".\testExport.xlsx" $f = ".\testExport.xlsx"
rm $f -ErrorAction Ignore Remove-Item $f -ErrorAction Ignore
function Get-DateOffset ($days=0) { function Get-DateOffset ($days=0) {
(Get-Date).AddDays($days).ToShortDateString() (Get-Date).AddDays($days).ToShortDateString()

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 ConvertFrom-ExcelToSQLInsert People .\testSQLGen.xlsx

Binary file not shown.

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

BIN
Examples/Fibonacci/fib.xlsx Normal file

Binary file not shown.

View File

@@ -1,3 +1,7 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlfile = "$env:temp\testFmt.xlsx"
Get-Process | Get-Process |
Select-Object Company,Handles,PM, NPM| Select-Object Company,Handles,PM, NPM|
Export-Excel $xlfile -Show -AutoSize -CellStyleSB { Export-Excel $xlfile -Show -AutoSize -CellStyleSB {

View File

@@ -1,3 +1,8 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$xlfile = "$env:temp\testFmt.xlsx"
Remove-Item $xlfile -ErrorAction Ignore
$RandomStyle = { $RandomStyle = {
param( param(
$workSheet, $workSheet,

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,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,4 +1,6 @@
ColumnChart -Title "Central Limit Theorem" ($( try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
ColumnChart -Title "Central Limit Theorem" -NoLegend ($(
for ($i = 1; $i -le 500; $i++) { for ($i = 1; $i -le 500; $i++) {
$s = 0 $s = 0
for ($j = 1; $j -le 100; $j++) { for ($j = 1; $j -le 100; $j++) {
@@ -6,4 +8,4 @@
} }
$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 # Sum up handles by company
# Show the Pie Chart # Show the Pie Chart
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
PieChart -Title "Total Handles by Company" ` PieChart -Title "Total Handles by Company" `
(Invoke-Sum (Get-Process|Where company) company handles) (Invoke-Sum (Get-Process | Where-Object company) company handles)

View File

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

View File

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

View File

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

View File

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

View File

@@ -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 ` $header = echo `
'Date/Time - Peak Brightness (UT)' ` 'Date/Time - Peak Brightness (UT)' `
'Latitude (Deg)' ` 'Latitude (Deg)' `

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

View File

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

Binary file not shown.

View File

@@ -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 = New-Plot
$plt.Plot((Get-Range 0 5 .02|%{[math]::Cos(2*[math]::pi*$_)})) $plt.Plot((Get-Range 0 5 .02|%{[math]::Cos(2*[math]::pi*$_)}))
$plt.SetChartSize(800,300) $plt.SetChartSize(800,300)

View File

@@ -0,0 +1,88 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
$sql = @"
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.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
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.
$pt = @{"LensPivot" = @{ "PivotTableName" = "LensPivot";
"SourceWorkSheet" = "Sheet1" ;
"PivotRows" = "LensModel" ;
"PivotData" = @{"basename" = "Count"} ;
"IncludePivotChart" = $true ;
"NoLegend" = $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`")," +
"TEXT(ROUND(Sqrt(Power(2,O$ROW)),1),`"`"`"f/`"`"0.0`"))"}
$Svalue = {"=IF(P$ROW>2,TEXT(ROUND(POWER(2,P$ROW),0),`"`"`"1/`"`"0`"`"sec`"`"`"),"+
"IF(P$ROW>3.32,TEXT(ROUND(1/POWER(2,P$ROW),2),`"0.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-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.
$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"
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-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
}
#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
############################################################
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"]
$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
"@
#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"}
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.
$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

View File

@@ -0,0 +1,22 @@
try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Get-SQL -Session f1 -Excel -Connection C:\Users\mcp\OneDrive\Public\F1\f1Results.xlsx -showtables -Verbose
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
$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
Set-Column -Worksheet $ws -Heading "WinsToFast" -Value {"=E$row/C$row"} -Column 7 -AutoSize -AutoNameRange
Set-Format -WorkSheet $ws -Range "F2:G50" -NumberFormat "0.0%"
$chart = New-ExcelChart -NoLegend -ChartType XYScatter -XRange WinsToFast -YRange WinsToPoles -Column 7 -Width 2000 -Height 700 -Title "Poles vs fastlaps"
Export-Excel -ExcelPackage $Excel -WorkSheetname "Winners" -ExcelChartDefinition $chart -Show

View File

@@ -0,0 +1,10 @@
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 -AutoSize

View File

@@ -1,6 +1,9 @@
. ..\New-PSItem.ps1 try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
rm *.xlsx
#. ..\New-PSItem.ps1
Remove-Item *.xlsx
$( $(
New-PSItem 12001 Nails 37 3.99 =C2*D2 (echo ID Product Quantity Price Total) New-PSItem 12001 Nails 37 3.99 =C2*D2 (echo ID Product Quantity Price Total)

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

View File

@@ -1,4 +1,6 @@
rm *.xlsx try {. $PSScriptRoot\..\..\LoadPSD1.ps1} catch {}
Remove-Item *.xlsx
$( $(
New-PSItem '=Hyperlink("http://dougfinke.com/blog","Doug Finke")' @("Link") New-PSItem '=Hyperlink("http://dougfinke.com/blog","Doug Finke")' @("Link")

Binary file not shown.

View File

@@ -1,3 +1,7 @@
<#
Revisit I think yahoo deprecated their service
#>
function Get-StockInfo { function Get-StockInfo {
param( param(
$stock, $stock,

View File

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

BIN
Examples/Stocks/stocks.xlsx Normal file

Binary file not shown.

View File

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

Binary file not shown.

View File

@@ -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

@@ -0,0 +1,30 @@
# To ship, is to choose
#ipmo .\ImportExcel.psd1 -Force
$pt=[ordered]@{}
$pt.ServiceInfo=@{
SourceWorkSheet='Services'
PivotRows = "Status"
PivotData= @{'Status'='count'}
IncludePivotChart=$true
ChartType='BarClustered3D'
}
$pt.ProcessInfo=@{
SourceWorkSheet='Processes'
PivotRows = "Company"
PivotData= @{'Company'='count'}
IncludePivotChart=$true
ChartType='PieExploded3D'
}
$gsv=Get-Service | Select-Object status, Name, displayName, starttype
$ps=Get-Process | Select-Object Name,Company, Handles
$file = "c:\temp\testPT.xlsx"
rm $file -ErrorAction Ignore
$gsv| Export-Excel -Path $file -AutoSize -WorkSheetname Services
$ps | Export-Excel -Path $file -AutoSize -WorkSheetname Processes -PivotTableDefinition $pt -Show

View File

@@ -0,0 +1,26 @@
Import-Module ..\ImportExcel.psd1 -Force
$file = "C:\Temp\test.xlsx"
Remove-Item $file -ErrorAction Ignore -Force
$base = @{
SourceWorkSheet = 'gsv'
PivotData = @{'Status' = 'count'}
IncludePivotChart = $true
# ChartType = 'BarClustered3D'
}
$ptd = [ordered]@{}
# $ptd.gpt1 = $base + @{ PivotRows = "ServiceType" }
# $ptd.gpt2 = $base + @{ PivotRows = "Status" }
# $ptd.gpt3 = $base + @{ PivotRows = "StartType" }
# $ptd.gpt4 = $base + @{ PivotRows = "CanStop" }
$ptd += New-PivotTableDefinition @base servicetype -PivotRows servicetype -ChartType Area3D
$ptd += New-PivotTableDefinition @base status -PivotRows status -ChartType PieExploded3D
$ptd += New-PivotTableDefinition @base starttype -PivotRows starttype -ChartType BarClustered3D
$ptd += New-PivotTableDefinition @base canstop -PivotRows canstop -ChartType ConeColStacked
Get-Service | Export-Excel -path $file -WorkSheetname gsv -Show -PivotTableDefinition $ptd

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