mercoledì 3 agosto 2022

Powershell - importexcel

Mi e' capitato di dover lavorare con il modulo powershell ImportExcel. Questi sono alcuni degli appunti che mi sono segnato. 

get-services | Export-excel -now

Crea il file 

get-services | Export-excel c:\temp\testdemo.xlsx

Crea il file e lo apre

get-services | Export-excel c:\temp\testdemo.xlsx -show

Crea il file e lo apre, impostando filtri sulle colonne ed autosize

get-services | Export-excel c:\temp\testdemo.xlsx -show -autosize -autofilter

Cancellare un file 

rm test.xlsx -ErrorAction Ignore

Usare la formattazione condizionale

$data = get-service | Select Status, Name, DisplayName, StartType

$data | Export-Excel test.xlsx -Show -Autosize

rm test.xlsx -ErrorAction Ignore

$text1 = New-ConditionalText stop

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $text1

$text2 = New-ConditionalText runn Blue Cyan

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $text1, $Text2

$text3 = New-ConditionalText svc Wheat Green

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $Text1, $Text2, $$Text3

$data = get-process | Where Company | Select Company, Name, PM, Handles, *mem*

$cfmt = New-ConditionalFormattingIconSet -range "C:C" -ConditionalFormat ThreeIconSet - IconType Arrows

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalFormat $cfmt

$ctext = New-ConditionalText Microsoft Wheat Green

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalFormat $cfmt -ConditionalText $ctext

Importare i valori dal foglio di lavoro

import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15

DEMO

1 - Compilare un file  excel

ps excel -ErrorAction ignore | kill

$xl =  New-Object -ComObject excel.application

$xl.visible =  $True

$wb = $xl.workbooks.add()

$ws = $wb.worksheets["Sheet1"]

$ws.Cells[1,1].value = "ID"

$ws.Cells[1,2].value = "Product"

$ws.Cells[1,3].value = "Quantity"

$ws.Cells[1,4].value = "QPrice"

$ws.Cells[1,5].value = "Value"

$ws.Cells[2,1].value = 12001

$ws.Cells[2,2].value = "Nails"

$ws.Cells[2,3].value = 37

$ws.Cells[2,4].value = 3,99

$ws.Cells[2,5].formula = "=C2*D2"

$ws.Cells[3,1].value = 12002

$ws.Cells[3,2].value = "Hammer"

$ws.Cells[3,3].value = 5

$ws.Cells[3,4].value = 12,10

$ws.Cells[3,5].formula = "=C3*D3"

$ws.Cells[4,1].value = 12003

$ws.Cells[4,2].value = "Saw"

$ws.Cells[4,3].value = 12

$ws.Cells[4,4].value = 15,37

$ws.Cells[4,5].formula = "=C4*D4"

2 - creare un file excel con contenuto

#Hello World

"Hello World" | Export-Excel

3 - Creare una colonna con intestazione Data ed inserire hello world come primo valore

[PSCustomObject]@{Data="Hello World"} | Export-Excel

4 - chiudere il processo di excel e rimuovere eventuali file creati per test

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

5 - esportare tutti i processi in excel

get-process |export-excel '.\demo.xlsx'

invoke-item .\demo.xlsx (si apre solo se excel e' installato)

6 - esportare solo alcune proprieta dei processi in excel

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

get-process | select company, pm, handles | export-excel '.\demo.xlsx' -show

7 - importare dati da un csv ed esportarle in excel

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

import-csv data.csv | Export-Excel test.xlsx -show -TableName Itemms -AutoSize

8 - importare dati da un file excel in una variabile per poi elaborarli

$UserA = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers

9 - importare dati da un file excel, solo alcune colonne, in una variabile per poi elaborarli

$UserB = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15


Nessun commento:

Posta un commento