usenussi
Goto Top

Powershell CSV Betrag in Euro umwandeln

Hallo Experten,

ich benötige dringen Hilfe und komme nicht weiter.

Ich habe eine große csv Datei (Katalog) und bearbeite diese weiter.
Ich kann die Spalten und den Inhalt abfragen um eine neue Datei zu erzeugen.

# Hier kann der Benutzer die gewünschte Auswahl eingeben
$Spalte = Read-Host "bitte Spaltenname eingeben"  
$Auswahl = Read-Host "Bitte Suchkreterium eingeben "  

$test = Import-Csv -path D:\Preisliste\Frankana3\export2\products.csv -Delimiter ";" -Encoding UTF8 |select sku,marke,price-EUR |where $Spalte -like "$Auswahl" |select -First 3   
echo $test


#Ergebnis:
#sku marke price-EUR
#--- ----- ---------
#430/214 LAKO 4.95
#400/784 Lilie 18.5
#430/035 17.95

#Gewünschter Preis:

  1. 4,95
  2. 18,50
  3. 17,95

Meine Versuche haben alle nicht funktioniert ich bekomme die Währungen nicht hin.

#[System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US"

#[System.Threading.Thread]::CurrentThread.CurrentCulture = "de-DE"

#[convert]::ToDouble('+4.95') oder Formeln wie "{0:C2}" -f $foo weiß ich nicht wie ich es einsetze.


Es wäre schön wenn ihr mir helfen würdet.

Content-Key: 666292

Url: https://administrator.de/contentid/666292

Printed on: May 7, 2024 at 12:05 o'clock

Mitglied: 148121
148121 May 01, 2021, updated at May 02, 2021 at 17:19:02 (UTC)
Goto Top
$test = Import-Csv 'D:\Preisliste\Frankana3\export2\products.csv' -Delimiter ";" -Encoding UTF8 | where $Spalte -like $Auswahl | select sku,marke,@{n='price-EUR';e={([decimal]$_.'price-EUR').toString('0.00',[cultureinfo]'de')}} -F 3  
echo $test
Member: GarfieldBonn
GarfieldBonn May 01, 2021 updated at 18:14:39 (UTC)
Goto Top
Du kannst die Zahl in einem String umwandeln, dann am Punkt splitten und mit Komma wieder zusammensetzen. Ist dann allerdings ein String und keine Zahl!

$B=18.50
$D=("$B").Split(".")  
$E=$D+","+$D[1]  
$E

Ausgabe von $E:
18,5
Member: usenussi
usenussi May 02, 2021 at 17:12:11 (UTC)
Goto Top
Hallo vielen Dank für die schnelle Antwort, es klappt bei mir jedoch leider nicht.
ich habe die Zeile bei mir eingebaut und bekomme folgende Fehlermeldung.

  1. Hier kann der Benutzer die gewünschte Auswahl eingeben
$Spalte = Read-Host "bitte Spaltenname eingeben"
$Auswahl = Read-Host "Bitte Suchkreterium eingeben "
$test = Import-Csv -literalpath 'D:\Preisliste\Frankana3\export2\products.csv' -Delimiter ";" -Encoding UTF8 | where $Spalte -like $Auswahl | select sku,marke,@{n='price-EUR';e={([decimal]$_.'price-EUR').toString('0.00',[cultureinfo]'de')}} -F 3
echo $test

Fehlermeldung
Bei Zeile:4 Zeichen:32

back-to-top$test = Import-Csv -literalpath <<<< 'D:\Preisliste\Frankana3\export2\products.csv' -Delimiter ";" -Encoding UTF8 | where $Spalte -like $Auswahl | select

sku,marke,@{n='price-EUR';e={([decimal]$_.'price-EUR').toString('0.00',[cultureinfo]'de')}} -F 3
+ CategoryInfo : InvalidArgument: (face-smile [Import-Csv], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.ImportCsvCommand


sku marke price-EUR
--- ----- ---------
430/214 LAKO
400/784 Lilie
430/035

wenn ich -literalpath eingeben will, wird mir dieser Befehl schon nicht zur verfügung gestellt.(nur -path) im PowerGui Script Editor.
Member: usenussi
usenussi May 02, 2021 at 17:17:40 (UTC)
Goto Top
Vielen Dank für die Antwort.
Ich kann ja $B018.50 nicht einfach in meinem Skript eingeben, es ist ja der Inhaltswert meiner Spalte.
Mitglied: 148121
Solution 148121 May 02, 2021 updated at 17:22:02 (UTC)
Goto Top
War nur ein Tippfehler, oben korrigiert. Hätte man mit Probieren auch selbst gelöst du hast es ja eigentlich schon selbst erkannt ... Dann hätte man sich den Post sparen können, steht ja alles klipp und klar in der Fehlermeldung.
Member: usenussi
usenussi May 02, 2021 at 17:31:02 (UTC)
Goto Top
Hallo,
wenn ich nur -Path eingebe bekomme ich eine weitere Fehlermeldung;

Import-Csv : Es wurde kein Parameter gefunden, der dem Parameternamen "Encoding" entspricht.

**Bei Zeile:4 Zeichen:97

back-to-top$test = Import-Csv -path 'D:\Preisliste\Frankana3\export2\products.csv' -Delimiter ";" -Encoding <<<< UTF8 | where $Spalte -like $Auswahl | select sku,ma

rke,@{n='price-EUR';e={([decimal]$_.'price-EUR').toString('0.00',[cultureinfo]'de')}} -F 3
+ CategoryInfo : InvalidArgument: (face-smile [Import-Csv], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.ImportCsvCommand

Auch wenn ich -Encoding weglasse komme ich nicht weiter.
Anmerkung: Ich verstehe nicht warum ab $test alles Fett angezeigt wird
Member: usenussi
usenussi May 02, 2021 at 17:44:22 (UTC)
Goto Top
Hallo warranty,

Dein Skript funktioniert in PowerShell ISE.
Es liegt also an der PowerGui.

Vielen Dank für deine Arbeit.
Mitglied: 148121
148121 May 02, 2021 updated at 19:57:53 (UTC)
Goto Top
Zitat von @usenussi:
Es liegt also an der PowerGui.
Das nutzt wohl nur bei dir die PS 2.0 deswegen erkennt er den Parameter -Encoding nicht, denn
den gibt es nämlich erst ab der PS Version 3.0 😉.