mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-06 00:23:20 +00:00
40 lines
1.1 KiB
PowerShell
40 lines
1.1 KiB
PowerShell
function Export-ExcelSheet {
|
|
[CmdletBinding()]
|
|
param
|
|
(
|
|
[Parameter(Mandatory = $true)]
|
|
[String]$Path,
|
|
[String]$OutputPath = '.\',
|
|
[String]$SheetName,
|
|
[ValidateSet('ASCII', 'BigEndianUniCode','Default','OEM','UniCode','UTF32','UTF7','UTF8')]
|
|
[string]$Encoding = 'UTF8',
|
|
[ValidateSet('.txt', '.log','.csv')]
|
|
[string]$Extension = '.csv',
|
|
[ValidateSet(';', ',')]
|
|
[string]$Delimiter = ';'
|
|
)
|
|
|
|
$Path = (Resolve-Path $Path).Path
|
|
$xl = New-Object -TypeName OfficeOpenXml.ExcelPackage -ArgumentList $Path
|
|
$workbook = $xl.Workbook
|
|
|
|
$targetSheets = $workbook.Worksheets | Where-Object {$_.Name -Match $SheetName}
|
|
|
|
$params = @{} + $PSBoundParameters
|
|
$params.Remove("OutputPath")
|
|
$params.Remove("SheetName")
|
|
$params.Remove('Extension')
|
|
$params.NoTypeInformation = $true
|
|
|
|
Foreach ($sheet in $targetSheets)
|
|
{
|
|
Write-Verbose "Exporting sheet: $($sheet.Name)"
|
|
|
|
$params.Path = "$OutputPath\$($Sheet.Name)$Extension"
|
|
|
|
Import-Excel $Path -Sheet $($sheet.Name) | Export-Csv @params
|
|
}
|
|
|
|
$xl.Dispose()
|
|
}
|