Public/Send-ExcelToSharePoint.ps1
<#
.SYNOPSIS Uploads an Excel file to a SharePoint site. .DESCRIPTION This function connects to a specified SharePoint site and uploads an Excel file from the provided local path to the specified server-relative URL on SharePoint. If username and password are not provided, it will use web login by default. .PARAMETER SiteUrl The URL of the SharePoint site. .PARAMETER SharePointFileServerRelativeUrl The server-relative URL where the Excel file will be uploaded on SharePoint. .PARAMETER LocalExcelFilePath The local path of the Excel file to be uploaded. .PARAMETER Username The username for SharePoint authentication (optional). .PARAMETER Password The password for SharePoint authentication (optional). .EXAMPLE Send-ExcelToSharePoint -SiteUrl "https://contoso.sharepoint.com/sites/Finance" -SharePointFileServerRelativeUrl "/sites/Finance/Shared Documents/report.xlsx" -LocalExcelFilePath "C:\Uploads\report.xlsx" .EXAMPLE Send-ExcelToSharePoint -SiteUrl "https://contoso.sharepoint.com/sites/Finance" -SharePointFileServerRelativeUrl "/sites/Finance/Shared Documents/report.xlsx" -LocalExcelFilePath "C:\Uploads\report.xlsx" -Username "user@contoso.com" -keypath "C:\temp\pass.encrypted" .NOTES Author: Sundeep Eswarawaka #> function Send-ExcelToSharePoint { param ( [Parameter(Mandatory = $true)] [string]$SiteUrl, [Parameter(Mandatory = $true)] [string]$SharePointFileServerRelativeUrl, [Parameter(Mandatory = $true)] [string]$LocalExcelFilePath, [Parameter(Mandatory = $false)] [string]$Username, [Parameter(Mandatory = $false)] [string]$keypath, [Parameter(Mandatory = $false)] [string]$EncryptedCredsName ) # Connect to SharePoint Online if ($PSBoundParameters.ContainsKey('Username') -and $PSBoundParameters.ContainsKey('keypath')) { $securepass = Get-CredentialSecureString -FilePath $keypath $securePassword = ConvertTo-SecureString -String $securepass -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($Username, $securePassword) Connect-PnPOnline -Url $SiteUrl -Credentials $credential -WarningAction SilentlyContinue } else { $creds = Get-SecureCredential -EncryptedCredsName $EncryptedCredsName Connect-PnPOnline -Url $SiteUrl -Credentials $creds -WarningAction SilentlyContinue } # Upload the file Add-PnPFile -Path $LocalExcelFilePath -Folder (Split-Path -Parent $SharePointFileServerRelativeUrl) DisConnect-PnPOnline } |