From a16794d86b30d5aabaaba023b9b331f9da465b30 Mon Sep 17 00:00:00 2001 From: Flavio Ackermann <flavio.ackermann@unibas.ch> Date: Thu, 15 Dec 2022 15:08:33 +0100 Subject: [PATCH] Improved Excel file handling, CSV file handling --- .../Invoke-ElectronicsDataPointExtraction.ps1 | 8 ++- .../ElectronicsDataHandling.psm1 | 53 ++++++++++--------- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/Sources/Invoke-ElectronicsDataPointExtraction.ps1 b/Sources/Invoke-ElectronicsDataPointExtraction.ps1 index 65b88a7..b64ea48 100644 --- a/Sources/Invoke-ElectronicsDataPointExtraction.ps1 +++ b/Sources/Invoke-ElectronicsDataPointExtraction.ps1 @@ -1,2 +1,6 @@ -Import-Module -Name "$PSScriptRoot\Module\ElectronicsDataHandling" -Convert-ElectronicsDataFile \ No newline at end of file +Start-Transcript -Path "$PSScriptRoot\..\Log\$(Get-Date -Format "yyyy-MM-dd-HHmmss").log" + +Import-Module -Name "$PSScriptRoot\Module\ElectronicsDataHandling" -Force +Convert-ElectronicsDataFile -Verbose + +Stop-Transcript \ No newline at end of file diff --git a/Sources/Module/ElectronicsDataHandling/ElectronicsDataHandling.psm1 b/Sources/Module/ElectronicsDataHandling/ElectronicsDataHandling.psm1 index a1a08b2..027fc07 100644 --- a/Sources/Module/ElectronicsDataHandling/ElectronicsDataHandling.psm1 +++ b/Sources/Module/ElectronicsDataHandling/ElectronicsDataHandling.psm1 @@ -77,7 +77,7 @@ function Import-RequiredModules { Write-Verbose "Imported module '$ModuleName'" } catch { Write-Warning "Module '$ModuleName' could not be imported" - break + return } } } @@ -107,7 +107,9 @@ function Convert-ElectronicsDataFile { $OutputFilePath ) - begin { + begin {} + + process { Import-RequiredModules #region Select input file @@ -122,9 +124,15 @@ function Convert-ElectronicsDataFile { $null = $FileBrowser.ShowDialog() $SourceFile = Get-Item -Path $FileBrowser.FileName - Write-Verbose "Source file is '$($SourceFile.FullName)'`n$SourceFile" + Write-Verbose "Source file is '$($SourceFile.FullName)'" + } + $FileExtension = $SourceFile.Extension + if ($FileExtension -notmatch '.txt|.xlsx|.csv') { + Write-Warning "File format is not supported: '$FileExtension'" + return } #endregion + Write-Output "What" #region Select output file if (-not ($OutputFilePath)) { @@ -145,31 +153,25 @@ function Convert-ElectronicsDataFile { $SaveStatus = $SaveFileDialog.ShowDialog() if ($SaveStatus -eq 'Cancel') { - Write-Verbose 'Save file dialog got cancelled' - break + Write-Warning 'Save file dialog got cancelled' + return } - $OutputFile = New-Item -Path $SaveFileDialog.FileName -Force - + $OutputFilePath = $SaveFileDialog.FileName #endregion $Selector = Get-SelectorFromDialog - $FileExtension = $SourceFile.Extension - if ($FileExtension -notmatch '.txt|.xlsx') { - Write-Warning "File format is not supported: '$FileExtension'" - break - } Write-Output "Importing content from '$($SourceFile.FullName)'" switch ($FileExtension) { - '.xlsx' { $Data = Import-Excel -Path $SourceFile.FullName -NoHeader } + '.csv' { $Data = Import-CSV -Path $SourceFile.FullName } '.txt' { $Data = Get-Content -Path $SourceFile.FullName } + '.xlsx' { $Data = Import-Excel -Path $SourceFile.FullName -NoHeader }# -AsText *} } - } + - process { $i = 0 $Result = $Data | ForEach-Object { if ($i % $Selector -eq 0) { @@ -177,20 +179,23 @@ function Convert-ElectronicsDataFile { } $i++ } - } - - end { switch ($FileExtension) { - '.xlsx' { - $Result | Export-Excel -Path $OutputFile -NoHeader + '.csv' { + $Result | Export-CSV -Path $OutputFilePath -NoTypeInformation } '.txt' { - $Result | Set-Content -Path $OutputFile + $null = New-Item -Path $OutputFilePath -Force + $Result | Set-Content -Path $OutputFilePath + } + '.xlsx' { + $Result | Export-Excel -Path $OutputFilePath -NoHeader -ClearSheet } } - Write-Verbose "Created file '$OutputFile'" - Invoke-Item -Path $OutputFile.DirectoryName + Write-Verbose "Created file '$OutputFilePath'" + Invoke-Item -Path (Get-Item -Path $OutputFilePath).DirectoryName } + + end {} } -Export-ModuleMember -Function Convert-ElectronicsDataFile \ No newline at end of file +Export-ModuleMember -Function Convert-ElectronicsDataFile -- GitLab