A common task in PowerShell is to generate CSV files that are later imported into Microsoft Excel for analysis, graphics, etc.  An example:
Get-Process | Export-Csv -Path C:\TEMP\Processes.csv -NoTypeInformation
Imagine being able to export data with PowerShell directly into Excel without having Excel installed with the following capabilities:
- Conditional Formatting
 - PivotTables
 - Charts
 - Sparklines
 - SQL data to Excel
 
Interested?
If so, before you continue reading, go grab the ImportExcel module.
- https://github.com/dfinke/ImportExcel
 - https://www.powershellgallery.com/packages/ImportExcel/7.0.1
 - Find-Module -Name ImportExcel | Import-Module
 
Once installed, use Get-Command to explore the various cmdlets that are available.
Get-Command -Module ImportExcel -Verb Get,Export
Next, I recommend you look at the help for Export-Excel.
Get-Help Export-Excel -ShowWindow #AND
Get-Help Export-Excel -Examples
And finally, let's go ahead and generate an Excel file with some basic formatting.
# remove our example file
$path = 'C:\TEMP\Example1.xlsx'
Remove-Item -Path $path -ErrorAction SilentlyContinue
# Create some data
$data = @"
Name,ID,Quarter1,Quarter2,Quarter3,Quarter4
Greef Karga,0001,1100,1200,1300,1400
Kuiil,0002,1000,1000,1000,0
IG-11,0003,1200,1200,1400,1500
Cara Dune,0004,800,700,700,300
Mayfeld,0005,400,500,600,200
Din Djarin,0006,2000,2200,2100,500
"@ | ConvertFrom-Csv
# Create our various Excel parameters
$params = @{
    # Spreadsheet Properties
    Path                 = $path
    AutoSize             = $true
    AutoFilter           = $true
    BoldTopRow           = $true
    FreezeTopRow         = $true
    WorksheetName        = 'Data'
    PassThru             = $true
}        
# Create the Excel file
$ExcelPackage = $data | Export-Excel @params
$WorkSheet = $ExcelPackage.Data
# Apply some basic formatting
Set-ExcelRange -Worksheet $WorkSheet -Range "A1:F1" -BackgroundColor Black -FontColor White
Set-ExcelRange -Worksheet $WorkSheet -Range "B1:B7" -HorizontalAlignment Center
Set-ExcelRange -Worksheet $WorkSheet -Range "C2:F7" -NumberFormat 'Currency'
Close-ExcelPackage -ExcelPackage $ExcelPackage -Show
The result should look similar to this:

Encourage you to watch Doug Finke's (ImportExcel creator) blog and videos:
https://dfinke.github.io/
https://www.youtube.com/playlist?list=PL5uoqS92stXioZw-u-ze_NtvSo0k0K0kq
Hope this helps and stay tuned for more articles in this series.
    
Top comments (0)