stucky007
Goto Top

POWERSHELL - Wahrscheinlich eine sehr Dumme Frage, aber das Ergebnis nervt mich unheimlich , Hilfe erbeten !!!

Der angeführte Code funktioniert mal einwandfrei !!
Die EXPORT Datei --- NEUE-0001.csv ist absolut richtig, keine Fehler bei der Erstellung !!
$GanzeCSV = Import-Csv -Delimiter ';' -Encoding UTF8 -Path $Einlesepfad | Select Max1,Max2,Max3,Max4,Max5,Max6,Max7,Max8,Max9,Max10  

$Ausgabepfad = $MF_Daten_Ordner + "\NEUE-0001.csv"  
$line | Export-Csv -Path $Ausgabepfad -NoTypeInformation -delimiter ";" -Encoding "UTF8" -Append  


ABER NUN KOMMT EIN SCHÖNHEITSFEHLER DER MICH WAHNSINNIG MACHT !

Die erstellte CSV muss ich in OO Calc bzw. Excel öffnen !!
Alle Felder sind soweit ok --- IMPORT FILTER ---- Semikolon ---- Texttrenner: " --- UTF8

und jetzt hab ich folgendes alle Felder RICHTIG gefüllt .... nur alle Felder die eine Zahl enthalten haben nun ein ' !!!

In meinem Beispiel:

Max1 --- Inhalt: Test ---- OK
Max2 --- Inhalt: '9 ---- NICHT OK --- sollte nur 9 sein und Format sollte sein Zahl 1234
Max3 --- Inhalt: '-12,56 --- NICHT OK --- sollte nur -12,56 enthalten und Format sollte sein Zahl -123,45 (2 Nachkommastellen)

Wo kommt das blöde " ' " her ????

Entweder mach ich grundlegend was falsch oder ich denke inzwischen viel zu kompliziert !!!
Bitte um Hilfe !

Das sortieren dann nach Spalte Max2 funktioniert logischerweise nicht da es als STRING sortiert wird und nicht als ZAHL !

Ihr wisst sicher was ich meine , Danke .

Content-Key: 571010

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

Printed on: April 26, 2024 at 13:04 o'clock

Member: Franz-Josef-II
Franz-Josef-II May 11, 2020 at 08:42:52 (UTC)
Goto Top
Servas

Müßte mit einem
-replace ''', '' (das erste sind drei Hochkommas und dann zwei)
funktionieren. Rein Theoretisch face-wink

Das " ' " markierte die Zahl als Text. Vielleicht im Ursprung ...?
Member: StefanKittel
StefanKittel May 11, 2020 at 08:44:42 (UTC)
Goto Top
Hallo,

das ' am Anfang definiert den Inhalt als Text zwangshalber.

Entweder beim Export fixen oder ersetzen nach dem Import.

Stefan
Mitglied: 144260
144260 May 11, 2020 updated at 08:52:51 (UTC)
Goto Top
Zitat von @Stucky007:

Der angeführte Code funktioniert mal einwandfrei !!
Die EXPORT Datei --- NEUE-0001.csv ist absolut richtig, keine Fehler bei der Erstellung !!
> 
> $GanzeCSV = Import-Csv -Delimiter ';' -Encoding UTF8 -Path $Einlesepfad | Select Max1,Max2,Max3,Max4,Max5,Max6,Max7,Max8,Max9,Max10  
> 
> $Ausgabepfad = $MF_Daten_Ordner + "\NEUE-0001.csv"  
> $line | Export-Csv -Path $Ausgabepfad -NoTypeInformation -delimiter ";" -Encoding "UTF8" -Append  
> 
> 

Kann er nicht, da fehlen eine Menge an Variablen ...


ABER NUN KOMMT EIN SCHÖNHEITSFEHLER DER MICH WAHNSINNIG MACHT !
Wieso schreist du hier so rum?

Die erstellte CSV muss ich in OO Calc bzw. Excel öffnen !!
Alle Felder sind soweit ok --- IMPORT FILTER ---- Semikolon ---- Texttrenner: " --- UTF8

und jetzt hab ich folgendes alle Felder RICHTIG gefüllt .... nur alle Felder die eine Zahl enthalten haben nun ein ' !!!

In meinem Beispiel:

Max1 --- Inhalt: Test ---- OK
Max2 --- Inhalt: '9 ---- NICHT OK --- sollte nur 9 sein und Format sollte sein Zahl 1234
Max3 --- Inhalt: '-12,56 --- NICHT OK --- sollte nur -12,56 enthalten und Format sollte sein Zahl -123,45 (2 Nachkommastellen)

Wo kommt das blöde " ' " her ????
Wir kennen deine Ausgangsdaten nicht und was in deinen Variablen steht sieht hier auch niemand.
Das ' benutzt Excel zum maskieren von Sonderzeichen womit der Inhalt der Zelle als Text interpretiert wird und z.B. nicht als Formel wenn ein z.B. ein Gleichheitszeichen am Anfang des Inhalts stünde.
Entweder mach ich grundlegend was falsch oder ich denke inzwischen viel zu kompliziert !!!
Bitte um Hilfe !
Helfe uns erst mal mit ein paar Beispielzeilen deiner Daten und die Variableninhalte.
Das sortieren dann nach Spalte Max2 funktioniert logischerweise nicht da es als STRING sortiert wird und nicht als ZAHL !
Dazu kann man einen String in ein [int] oder [Double]
oder [decimal] umwandeln dann klappt auch das Sortieren problemlos!
Ihr wisst sicher was ich meine , Danke .
Ja, wenn du mehr Infos über die Ausgangsdaten und deinen Variablen lieferst.

p.s. Deine Ausrufezeichen- und Frage-Taste klemmt fest.
Member: emeriks
emeriks May 11, 2020 updated at 08:51:38 (UTC)
Goto Top
Hi,
das Hochkomma erzeugt Excel beim Import, wenn es die importierte Spalte als "Text" wertet. Du musst beim Import einstellen, dass diese Spalte "Zahl" ist. Dann kommt da auch kein Hochkomma dran.

E.
Member: Stucky007
Stucky007 May 11, 2020 at 09:19:09 (UTC)
Goto Top
Ich werde die Frage nochmal ergänzen um das Problem mit dem URSPRUNG der das nicht hat zu klären !
Danke im Moment ... SIEH selbst !
Member: aqui
aqui May 11, 2020 at 09:24:25 (UTC)
Goto Top
um das Problem mit dem URSPRUNG der das nicht hat zu klären ! Danke im Moment ... SIEH selbst !
Bahnhof, Ägypten ?
Ist das Kisuaheli Sprache ?
Mitglied: 144260
144260 May 11, 2020 updated at 09:30:14 (UTC)
Goto Top
Zitat von @aqui:

um das Problem mit dem URSPRUNG der das nicht hat zu klären ! Danke im Moment ... SIEH selbst !
Bahnhof, Ägypten ?
Ist das Kisuaheli Sprache ?
Er bekommt die Strings nicht in die richtige Reihenfolge, hat er ja oben schon geschrieben face-big-smile 💉🚑
Member: emeriks
emeriks May 11, 2020 at 09:31:33 (UTC)
Goto Top
Zitat von @144260:
Er bekommt die Strings nicht in die richtige Reihenfolge, hat er ja oben schon geschrieben face-big-smile 💉🚑
Der war gut!
Member: Stucky007
Stucky007 May 11, 2020 at 09:32:15 (UTC)
Goto Top
ERGÄNZUNG:
Es wird eine Datei in dem Fall 0000.csv erstellt mit folgendem CODE:

echo "";"";%%k;"";"MAXB01";"0";"MAXB02";"";%%l;"";%%n;"";!anz!;!var1!;%%j>>E:\000-Max\00-Daten\0000.csv  

IMPORTIERE ich die 0000.CSV in OO,EXCel, Libre Office etc.
sind ALLE ZAHLENFELDER ---- ZAHLENFELDER ohne das Zeichen ' !!!

In POWERSHELL Füge ich einen HEADER hinzu damit die Spalten einen NAMEN haben
Dann ist bereits die FORMATIERUNG weg !!!


Ich hab echt keine Ahnung wie das geht !!!!

Der CODE oben funktioniert , natürlich habe ich nicht alle 2000 Zeilen gepostet !

Lediglich durch hinzufügen des Headers schreib dir gleich den Code hab ich bereits das ergebnis !

  # DIE 0000.csv EINLESEN ---  DIE NEUE-0000.csv NEU SCHREIBEN !
  $MF_Referenz_Ordner = "E:\000-Max\02-CSVReferenz"  
  $MF_Daten_Ordner = "E:\000-Max\00-Daten"  

  $Einlesepfad = $MF_Daten_Ordner + "\0000.csv"  
  $Ausgabepfad = $MF_Daten_Ordner + "\NEUE-0000.csv"  
  
    Del $Ausgabepfad
    
    $header = "Max1","Max2","Max3","Max4","Max5","Max6","Max7","Max8","Max9","Max10",  
    "Max11","Max12","Max13","Max14","Max15","Max16","Max17","Max18","Max19","Max20",  
    "Max21","Max22","Max23","Max24","Max25","Max26","Max27","Max28","Max29","Max30",  
    "Max31","Max32","Max33","Max34","Max35","Max36","Max37","Max38","Max39","Max40",  
    "Max41","Max42","Max43","Max44","Max45","Max46","Max47","Max48","Max49","Max50",  
    "Max51","Max52","Max53","Max54","Max55","Max56","Max57","Max58","Max59","Max60",  
    "Max61","Max62","Max63","Max64","Max65","Max66","Max67","Max68","Max69","Max70",  
    "Max71","Max72","Max73","Max74","Max75","Max76","Max77","Max78","Max79","Max80",  
    "Max81","Max82","Max83","Max84","Max85","Max86","Max87","Max88","Max89","Max90",  
    "Max91","Max92","Max93","Max94","Max95","Max96","Max97","Max98","Max99","Max100"  
  
  $j = import-csv $Einlesepfad -delimiter ";" -header $header  
  $j | Export-Csv -Path $Ausgabepfad -NoTypeInformation -delimiter ";" -Encoding "UTF8"  
Member: emeriks
emeriks May 11, 2020 at 09:36:00 (UTC)
Goto Top
Lediglich durch hinzufügen des Headers schreib dir gleich den Code hab ich bereits das ergebnis !
Mein Fresse! Wie willst Du Code schreiben, wenn es noch nicht mal mit der normalen Sprache funktioniert?!
Mitglied: 144260
144260 May 11, 2020 updated at 09:41:47 (UTC)
Goto Top
echo "";"";%%k;"";"MAXB01";"0";"MAXB02";"";%%l;"";%%n;"";!anz!;!var1!;%%j>>E:\000-Max\00-Daten\0000.csv
Meine Fresse (2.0) hier fehlt auch wieder alles was nötig ist um vernünftig zu helfen ....
Deine Variableninhalte kennst nur du, und das ist kein Powershell sondern Batch, kann man ja gleich alles PS abfackeln anstatt so einen Mischmasch zu kotzen.

Lass dir $j in der Konsole ausgeben dann siehst du schon vorher was Sache ist.
Member: Stucky007
Stucky007 May 11, 2020 at 09:40:10 (UTC)
Goto Top
Emeriks:

Die Datei 0000.csv importiere ich in EXCEL etc und alle ist GUT ! OK
Dann Füge ich den Header mit POWERSHELL HINZU !!
Du siehst ich mache NICHTS anderes und alle ZAHLENFELDER haben nun das ' Zeichen voranstehen !!!!!
In der Datei NEUE-0000.csv !!!

Was ist daran nicht deutsch ???
Member: Stucky007
Stucky007 May 11, 2020 at 09:43:27 (UTC)
Goto Top
Sorry aber dieses Script funktioniert ja tadellos warum soll ich es posten ???
Ich versteh Euch nicht
die 0000.csv ist vollkommen OK und kann auch in Excel etc. Importiert werden und das richtig !!!
Member: emeriks
emeriks May 11, 2020 at 09:44:42 (UTC)
Goto Top
Klemmt Dein "!"?
Wie sieht die CSV aus, wenn Du sie mit Header-Zeile erneut exportiert hast?
Sind die Zahlen dort dann in "", dann ist es ein PS-Problem, was in PS geklärt werden muss.
Sind die Zahlen dort ohne "", dann ist es ein Excel-Problem (Verhalten) und keine PS-Problem.
Mitglied: 144260
144260 May 11, 2020 updated at 09:51:57 (UTC)
Goto Top
Du verstehst falsch! Wir müssen um konkret zu helfen den INHALT der Variablen kennen und die verschweigst du uns nunmal schon zu Beginn, alter ich glaub bei dem ist heut schon Freitag. 🤒 Glaskugel polieren geh ...

Deine Daten haben wohl doppelte Anführungszeichen um die Zahlen, aber alles nur Spekulation da du uns offensichtlich nicht aufklären willst.
Member: Stucky007
Stucky007 May 11, 2020 at 10:00:23 (UTC)
Goto Top
"";"";"02.01.2020";"";"Max01";"0";"Max02";"";"141,00";"";"02.01.2020 00:39:48:881";"";
"";"";"02.01.2020";"";"Max01";"0";"Max01";"";"130,00";"";"02.01.2020 00:43:26:818";"";
"";"";"02.01.2020";"";"Max01";"0";"Max01";"";"-34,00";"";"02.01.2020 00:51:56:895";"";

So sehen die Zahlen dann aus ! NEUE-0000.csv
Member: Stucky007
Stucky007 May 11, 2020 updated at 10:18:18 (UTC)
Goto Top
"";"";02.01.2020;"";"Max01";"0";"Max01";"";141,00;"";02.01.2020 00:39:48:881;"";
"";"";02.01.2020;"";"Max01";"0";"Max01";"";130,00;"";02.01.2020 00:43:26:818;"";
"";"";02.01.2020;"";"Max01";"0";"Max01";"";-34,00;"";02.01.2020 00:51:56:895;"";
"";"";03.01.2020;"";"Max01";"0";"Max01";"";115,00;"";03.01.2020 00:48:25:448;"";

und so sieht die 0000.csv aus die ich im Batch erstellt habe

Mein Powershellscript komplett :

  # DIE 0000.csv EINLESEN ---  DIE NEUE-0000.csv NEU SCHREIBEN !
  $MF_Referenz_Ordner = "E:\000-Max\02-CSVReferenz"  
  $MF_Daten_Ordner = "E:\000-Max\00-Daten"  

  $Einlesepfad = $MF_Daten_Ordner + "\0000.csv"  
  $Ausgabepfad = $MF_Daten_Ordner + "\NEUE-0000.csv"  
  
    Del $Ausgabepfad
    
    $header = "Max1","Max2","Max3","Max4","Max5","Max6","Max7","Max8","Max9","Max10",  
    "Max11","Max12","Max13","Max14","Max15","Max16","Max17","Max18","Max19","Max20",  
    "Max21","Max22","Max23","Max24","Max25","Max26","Max27","Max28","Max29","Max30",  
    "Max31","Max32","Max33","Max34","Max35","Max36","Max37","Max38","Max39","Max40",  
    "Max41","Max42","Max43","Max44","Max45","Max46","Max47","Max48","Max49","Max50",  
    "Max51","Max52","Max53","Max54","Max55","Max56","Max57","Max58","Max59","Max60",  
    "Max61","Max62","Max63","Max64","Max65","Max66","Max67","Max68","Max69","Max70",  
    "Max71","Max72","Max73","Max74","Max75","Max76","Max77","Max78","Max79","Max80",  
    "Max81","Max82","Max83","Max84","Max85","Max86","Max87","Max88","Max89","Max90",  
    "Max91","Max92","Max93","Max94","Max95","Max96","Max97","Max98","Max99","Max100"  
  
  $j = import-csv $Einlesepfad -delimiter ";" -header $header  
  $j | Export-Csv -Path $Ausgabepfad -NoTypeInformation -delimiter ";" -Encoding "UTF8"  

"Max1";"Max2";"Max3";"Max4";"Max5";"Max6";"Max7";"Max8";"Max9";"Max10";"Max11";"Max12";
"";"";"02.01.2020";"";"Max01";"0";"Max02";"";"141,00";"";"02.01.2020 00:39:48:881";"";
"";"";"02.01.2020";"";"Max01";"0";"Max01";"";"130,00";"";"02.01.2020 00:43:26:818";"";
"";"";"02.01.2020";"";"Max01";"0";"Max01";"";"-34,00";"";"02.01.2020 00:51:56:895";"";

So sehen die Zahlen dann aus ! NEUE-0000.csv

Das ist der ganze Ablauf, bin ich so blöd oder kapier hier was gar nicht !!
Danach in EXCEL das beschriebe Ergebnis ist ja logisch aber wo kommen die "" bei den Zahlen her ??
Member: emeriks
emeriks May 11, 2020 updated at 10:38:38 (UTC)
Goto Top
Zitat von @Stucky007:
So sehen die Zahlen dann aus ! NEUE-0000.csv
und so sieht die 0000.csv aus die ich im Batch erstellt habe
Entschuldige bitte , wenn wir unfähig sind, Dir zu folgen ....
Neu, neuer, am neusten
Null, nuller, am nullsten ...

Könntest Du das bitte mal in "vorher" und "nachher" auflösen oder besser noch in "vor Schritt 1", "nach Schritt 1", "nach Schritt 2" usw.?

Was mich wundert: In beiden von Dir geposteten Versionen ist kein Header zu sehen ...?
Member: clSchak
clSchak May 11, 2020 at 10:38:07 (UTC)
Goto Top
bin ich jetzt falsch?! Aber meiner Meinung nach ist alles was in " " steht immer Text, Zahlen werden ohne Steuerzeichen ausgegeben dann erkennt Excel die auch korrekt und ich tippe darauf, dass Powershell genauso arbeitet. Das gleich gilt ja auch für die Datumsfelder.
Member: Stucky007
Stucky007 May 11, 2020 updated at 10:52:42 (UTC)
Goto Top
Also einmal versuch ichs noch das ist der Inhalt von meiner Datei: 0000.csv der ist in Ordnung !!! 3 Zeilen unten

"";"";02.01.2020;"";"Max01";"0";"Max01";"";141,00;"";02.01.2020 00:39:48:881;"";
"";"";02.01.2020;"";"Max01";"0";"Max01";"";130,00;"";02.01.2020 00:43:26:818;"";
"";"";02.01.2020;"";"Max01";"0";"Max01";"";-34,00;"";02.01.2020 00:51:56:895;"";

Mein Powershellscript komplett :

  # DIE 0000.csv EINLESEN ---  DIE NEUE-0000.csv NEU SCHREIBEN !
  $MF_Referenz_Ordner = "E:\000-Max\02-CSVReferenz"  
  $MF_Daten_Ordner = "E:\000-Max\00-Daten"  

  $Einlesepfad = $MF_Daten_Ordner + "\0000.csv"  
  $Ausgabepfad = $MF_Daten_Ordner + "\NEUE-0000.csv"  
  
    Del $Ausgabepfad
    
  $header = "Max1","Max2","Max3","Max4","Max5","Max6","Max7","Max8","Max9","Max10","Max11","Max12"  

  $j = import-csv $Einlesepfad -delimiter ";" -header $header  
  $j | Export-Csv -Path $Ausgabepfad -NoTypeInformation -delimiter ";" -Encoding "UTF8"  

Das ist nach PS Script die Datei: NEUE-0000.csv Da sind nach dem PS Script die Zahlen alle in " " geschrieben !!!

"Max1";"Max2";"Max3";"Max4";"Max5";"Max6";"Max7";"Max8";"Max9";"Max10";"Max11";"Max12";
"";"";"02.01.2020";"";"Max01";"0";"Max02";"";"141,00";"";"02.01.2020 00:39:48:881";"";
"";"";"02.01.2020";"";"Max01";"0";"Max01";"";"130,00";"";"02.01.2020 00:43:26:818";"";
"";"";"02.01.2020";"";"Max01";"0";"Max01";"";"-34,00";"";"02.01.2020 00:51:56:895";"";

Ich habe nicht mehr als den Header hinzugefügt !!!
Member: erikro
erikro May 11, 2020 at 10:53:11 (UTC)
Goto Top
Moin,

Zitat von @Stucky007:
"Max1";"Max2";"Max3";"Max4";"Max5";"Max6";"Max7";"Max8";"Max9";"Max10";"Max11";"Max12";
"";"";"02.01.2020";"";"Max01";"0";"Max02";"";"141,00";"";"02.01.2020 00:39:48:881";"";
"";"";"02.01.2020";"";"Max01";"0";"Max01";"";"130,00";"";"02.01.2020 00:43:26:818";"";
"";"";"02.01.2020";"";"Max01";"0";"Max01";"";"-34,00";"";"02.01.2020 00:51:56:895";"";

So sehen die Zahlen dann aus ! NEUE-0000.csv

Mein Excel 2013 importiert das ohne Zicken. Zahlen sind Zahlen. Datumsangaben sind Datumsangaben. Ich musste noch nicht einmal festlegen, wie der Delimter heißt oder welches Format die Zellen haben sollten. Hast Du es mal mit einer anderen Excel-Installation auf einem anderen Rechner versucht? Ich vermute den Fehler auf Seiten Excels. Das Verhalten ist jedenfalls vollkommen ungewöhnlich.

Liebe Grüße

Erik
Member: Stucky007
Stucky007 May 11, 2020 at 10:58:30 (UTC)
Goto Top
Sorry in Excel, OpenOffice Calc und in LibreOffice
Importfilter : semikolon , utf8 , Texttrenner: "
Bei allen "02.01.2020" wird zu '02.01.2020
"141,00" wird zu '141,00
Timestamp ebenfalls mit ' am Anfang !

aber warum schreibt mir PS überhaupt die Zahlen in " " waren ja in der Ausgangsdatei 0000.csv auch nicht !!!!
Mitglied: 144260
Solution 144260 May 11, 2020 updated at 11:08:57 (UTC)
Goto Top
Zitat von @Stucky007:

Sorry in Excel, OpenOffice Calc und in LibreOffice
Importfilter : semikolon , utf8 , Texttrenner: "
Bei allen "02.01.2020" wird zu '02.01.2020
"141,00" wird zu '141,00
Timestamp ebenfalls mit ' am Anfang !
Lass den Texttrenner für den Import mal weg, oder öffne die CSV direkt über Doppelklick, ansonsten wohl fehlerhafte Regionseinstellungen im OS, oder Kodierungsproblem, klappt hier ebenfalls problemlos.
aber warum schreibt mir PS überhaupt die Zahlen in " " waren ja in der Ausgangsdatei 0000.csv auch nicht !!!!
Das ist in der Powershell normal und macht keinen Unterschied, das fasst alle Daten immer in Anführungszeichen beim Export.
Das letzte ";" in jeder Zeile ist auch überflüssig wenn dort kein Fehler mehr ist.
Member: Stucky007
Stucky007 May 11, 2020 at 11:09:37 (UTC)
Goto Top
ok das probier mal ....
dennoch stellt sich die Frage: das kann ich in PS nicht abstellen ?
Mitglied: 144260
144260 May 11, 2020 updated at 11:13:34 (UTC)
Goto Top
Zitat von @Stucky007:

ok das probier mal ....
dennoch stellt sich die Frage: das kann ich in PS nicht abstellen ?
Nein nicht mit Parametern. Du musst dann stattdessen ConvertTo-CSV benutzen und die Zeichen per Replace durch nichts ersetzen und das ganze per out-file in eine Datei befördern.
Löse das Problem in deinem OS, das wäre zielgerichteter, statt solche Fummellösungen zu produzieren, denn bei uns allen geht es ja einwandfrei auch ohne irgendwelche Workarounds. Excel erkennt automatisch das es sich um Zahlen handelt auch wenn diese in Anführungszeichen stehen.
Member: Stucky007
Stucky007 May 11, 2020 at 11:13:04 (UTC)
Goto Top
Hab den Textrenner weggelassen

Dann steht "141,00" in allen Feldern sind dann 2x "
Member: emeriks
emeriks May 11, 2020 updated at 11:14:19 (UTC)
Goto Top
Zitat von @Stucky007:
aber warum schreibt mir PS überhaupt die Zahlen in " " waren ja in der Ausgangsdatei 0000.csv auch nicht !!!!
Wenn ich jetzt nichts durcheinander bringe, dann sind die "" an den Zahlen bereits vorher drin.
"";"";02.01.2020;"";"Max01";"0";"Max01";"";141,00;"";02.01.2020 00:39:48:881;"";
Siehe z.B. "0"
Member: erikro
Solution erikro May 11, 2020 at 11:14:37 (UTC)
Goto Top
Moin,

Zitat von @Stucky007:

Sorry in Excel, OpenOffice Calc und in LibreOffice
Importfilter : semikolon , utf8 , Texttrenner: "
Bei allen "02.01.2020" wird zu '02.01.2020
"141,00" wird zu '141,00
Timestamp ebenfalls mit ' am Anfang !

Bei mir nicht. Ich habe jetzt genau Deinen Code und Deine Beispieldaten genommen. Geht ohne Probleme. Excel fragt bei der erzeugten Datei nach der Codierung und dem Delimiter wie gewohnt und nach dem Import sind die Zahlen Zahlen und das Datum ist ein Datum. Nur das

02.01.2020 00:51:56:895

wird von Excel nicht als Zeitangabe erkannt, weil es für Excel keine gültige Zeit ist.

aber warum schreibt mir PS überhaupt die Zahlen in " " waren ja in der Ausgangsdatei 0000.csv auch nicht !!!!

Weil es nur dann ein gültiges CSV ist. Die meisten Anwendungen sind da fehlertolerant. Aber wenn man " um die Daten setzt, dann macht man das üblicherweise bei allen Daten.

Liebe Grüße

Erik
Member: emeriks
emeriks May 11, 2020 updated at 11:16:15 (UTC)
Goto Top
@erikro
Na ja, Excel sollte schon "1" als Text importieren (also mit Hochkomma) und 1 als "echte" Zahl.
Member: Stucky007
Stucky007 May 11, 2020 at 11:21:42 (UTC)
Goto Top
Also .... das ist unfassbar !!!

Texttrenner weglassen etc . beim IMPORT ----- ist ja alles OK

Aber Grundlegend kann man nicht verhindern das PS die " setzt.

Aber Ihr glaubt es nicht, beim Filter herumprobiert :

Wenn ich nun im Libre und Openoffice die ERWEITERTE Zahlenerkennung einschalte ,
dann eliminiert er mir das ' Zeichen und Zahlen und Uhrzeit sind wieder das was Sie sein sollen !!!

JA UNFASSBAR , sorry dass ich Euch damit bemüht habe ....
und jetzt weiss ichs das es in Excel auch geht bekam grad die Info !


Danke !!!
Mitglied: 144260
144260 May 11, 2020 updated at 11:24:46 (UTC)
Goto Top
Btw. "02.01.2020 00:39:48:881" ist auch kein gültiges Date/Time Format, der letzte Doppelpunkt müsste korrekterweise dann ein Punkt sein, dann wird auch das korrekt erkannt.

PEBKAC
Member: Stucky007
Stucky007 May 11, 2020 at 11:27:38 (UTC)
Goto Top
ja sollte es tun deshalb wollte ich ja dass mir PS ausgibt "";141;"Max" und nicht "";"141";"Max" das geht aber nicht so wie es aussieht !
Excel und OO machen dann daraus '141 aus "141"
DOCH MIT ERWEITERTER ZAHLENERKENNUNG EINGESCHALTEN NUN BEIM IMPORT

MACHEN BEIDE NUN AUS "141" ---- 141 als Zahl !

Nur PS sollte aus Eingang ;141; nicht ;"141"; habs mit batch probiert da macht er es nicht !!! nur PS setzt beim Export die " " zwingend
Member: erikro
erikro May 11, 2020 at 11:29:29 (UTC)
Goto Top
Zitat von @emeriks:

@erikro
Na ja, Excel sollte schon "1" als Text importieren (also mit Hochkomma) und 1 als "echte" Zahl.

Warum? CSV kennt keine Formate. Das ist immer reiner Text. Die Anführungszeichen dienen ja nur dazu, den Beginn und das Ende des Datums zu kennzeichnen, damit man auch den Delimiter als Dateninhalt benutzen kann. Wäre der Delimiter z. B. ein Komma, dann müsste ich nach deutscher Art geschriebene Zahlen in Tüttelchen einfassen.

Excel importiert das und interpretiert die eingehenden Daten. Bisher hat Excel bei mir Zahlen immer als Zahlen importiert und Zeitangaben immer als Zeitangaben, sofern sie den in Excel gültigen Formaten entsprechen. Das macht es nur dann anders, wenn ich das beim Import explizit angebe und von "Standard" auf "Text" im dritten Importdialog umstelle.
Member: Stucky007
Stucky007 May 11, 2020 at 11:29:35 (UTC)
Goto Top
Erkennung passt alles !
Nur das das PS Script alle Felder in " " schreibt ist unnötig !!!
Mitglied: 144260
144260 May 11, 2020 updated at 11:33:33 (UTC)
Goto Top
nur PS setzt beim Export die " " zwingend
Gut so, entspricht guten CSV Gepflogenheiten! Pack mal ein Semikolon in dein reinen Daten, was würde passieren wenn du da keine Anführungszeichen setzen würdest, peng ... Der Mischmasch ohne und mit Anführungszeichen führt immer mal wieder zu Problemen.
Member: Stucky007
Stucky007 May 11, 2020 at 11:33:24 (UTC)
Goto Top
Es sollte da hast du Recht hat meines nicht gemacht und auch OO und LibreOffice nicht
Die ERWEITERTE Zahlenerkennung in allen 3 Programmen eingeschalten und es geht perfect !

Nur die Träne bleibt weil PS im prinzip das nicht tun sollte !!
Habs in Batch probiert das gleiche dann bleibt es auch eingang ;141; = ;141; nicht wie in PS ;141; ergibt ;"141";
Mitglied: 144260
144260 May 11, 2020 updated at 11:36:24 (UTC)
Goto Top
Nur die Träne bleibt weil PS im prinzip das nicht tun sollte !!
Deiner Ansicht nach, entspricht aber den gängigen Regeln und hatte ich auch noch nie Probleme mit. Wenn du es anders haben willst kannst du es jederzeit mit ConvertTO-CSV und String-Bearbeitung selbst machen. DIe PS kann nicht jeden Furz als Wunsch berücksichtigen, dazu ist es eine Skriptsprache bei der man sich selbst behelfen kann.
Member: erikro
erikro May 11, 2020 at 11:36:14 (UTC)
Goto Top
Zitat von @Stucky007:
und jetzt weiss ichs das es in Excel auch geht bekam grad die Info !

Verrätst Du uns das auch?
Member: emeriks
emeriks May 11, 2020 at 11:36:57 (UTC)
Goto Top
Noch mal:
Die Quelle hat laut Deinen Angaben bereits ein "" an den Zahlen. Nicht erst, nachdem Du den Header hinzugefügt hast. Es ist klar, dass beim Export mit Header die "" an den Zahlen sind, weil sie das bereits in der Quelle sind.
Member: Stucky007
Stucky007 May 11, 2020 at 11:40:30 (UTC)
Goto Top
glaub mir soll sie auch nicht !!!!

Wenn es so ist ist es so, hab kein Problem damit solang der Import danach geht und der geht jetzt.

Natürlich wär mir lieber ich könnte in PS folgendes machen:

der Eingang immer noch meine Datei als CVS aber dann eine Struktur aufbauen wie folgt:
1. Feld INT
2. Feld STR
3. Feld DEC(5,2)
diese füllen und dann ausgeben muss keine CSV sein , dass wäre mehr als genial ! Smile

danke noch mal
Member: erikro
erikro May 11, 2020 at 11:43:08 (UTC)
Goto Top
Zitat von @Stucky007:

Erkennung passt alles !
Nur das das PS Script alle Felder in " " schreibt ist unnötig !!!

Nein, das entspricht dem allgemeinen Gebrauch. Deshalb wird das von der PS auch so gemacht.
Member: Stucky007
Stucky007 May 11, 2020 at 11:43:56 (UTC)
Goto Top
Also bitte du siehst meine EINGANGSDATEI da sind keine " " bei den Zahlen !!!!


Kopie von oben nochmal schau mal hin !!

"";"";02.01.2020;"";"Max01";"0";"Max01";"";141,00;"";02.01.2020 00:39:48:881;"";
"";"";02.01.2020;"";"Max01";"0";"Max01";"";130,00;"";02.01.2020 00:43:26:818;"";
"";"";02.01.2020;"";"Max01";"0";"Max01";"";-34,00;"";02.01.2020 00:51:56:895;"";

Wo siehst du beim 1. Datum bei 141 und beim Timestamp " " die stehen zwischen 2 ; sonst nix !
Member: erikro
erikro May 11, 2020 at 11:47:20 (UTC)
Goto Top
Zitat von @Stucky007:

glaub mir soll sie auch nicht !!!!

Wenn es so ist ist es so, hab kein Problem damit solang der Import danach geht und der geht jetzt.

Natürlich wär mir lieber ich könnte in PS folgendes machen:

der Eingang immer noch meine Datei als CVS aber dann eine Struktur aufbauen wie folgt:
1. Feld INT
2. Feld STR
3. Feld DEC(5,2)
diese füllen und dann ausgeben muss keine CSV sein , dass wäre mehr als genial ! Smile

danke noch mal

Dann mache doch gleich eine Excel-Datei daraus. Dafür gibt es ein tolles Modul:
https://www.powershellgallery.com/packages/ImportExcel/7.0.1
Member: Stucky007
Stucky007 May 11, 2020 at 11:50:11 (UTC)
Goto Top
Blöde Frage gleich bevor ich es mir ansehe
Einer von uns benutzt EXCEL die anderen OO und LIBREOffice
sollte kein probloem sein oder

Schau ich mir gerne an !!
Wichtig ist ja nur Datei öffnen und dann nach Betragsfeld oder Datum sortieren in EXCEL OO ODER Libre
geht natürlich nur wenn Zahl Zahl ist usw...

Danke
Member: emeriks
emeriks May 11, 2020 updated at 11:51:53 (UTC)
Goto Top
Zitat von @Stucky007:
Also bitte du siehst meine EINGANGSDATEI da sind keine " " bei den Zahlen !!!!
Es wäre auch ganz toll, wenn Du in Deinen Antworten angeben würdest, wem Du gerade antwortest und/oder mit wem Du gerade sprichst. Dann erspart man sich das Scrollen um im Baum nachzusehen, welche Deiner Kommentare auf was/an wen antwortet.
Member: emeriks
emeriks May 11, 2020 at 11:53:31 (UTC)
Goto Top
Zitat von @Stucky007:

Also bitte du siehst meine EINGANGSDATEI da sind keine " " bei den Zahlen !!!!

Kopie von oben nochmal schau mal hin !!

"";"";02.01.2020;"";"Max01";"0";"Max01";"";141,00;"";02.01.2020 00:39:48:881;"";
Ja. ";" ist das Trennzeichen. Und
;"0";
bedeutet dann, dass die 0 in "" steht.
Member: Stucky007
Stucky007 May 11, 2020 updated at 11:59:56 (UTC)
Goto Top
ok sorry aber es geht um 3 Felder ;02.01.2020; ;141; ;02.01.2020 00:39:48:881;
die NULL hab ich nie erwähnt weil sie so auch stimmt und in der weiteren Verarbeitung die mit dem Zahlenproblem nix zu tun hat mit "J" ersetzt wird !

Also der Eingang ist wie du siehst bei den 3 wichtigen Feldern OHNE " " !!!

Wenns ps nicht anders kann dann ist es halt so !
Member: emeriks
emeriks May 11, 2020 updated at 12:09:03 (UTC)
Goto Top
Export-CSV hat einen Parameter
-QuoteFields
Specifies the names of the columns that should be quoted. When this parameter is used, only the specified columns are quoted.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Member: erikro
erikro May 11, 2020 at 12:15:57 (UTC)
Goto Top
Zitat von @emeriks:

Export-CSV hat einen Parameter
-QuoteFields
Specifies the names of the columns that should be quoted. When this parameter is used, only the specified columns are quoted.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Aber erst ab Version 7. face-wink
Mitglied: 144260
144260 May 11, 2020 updated at 12:34:56 (UTC)
Goto Top
Zitat von @erikro:

Zitat von @emeriks:

Export-CSV hat einen Parameter
-QuoteFields
Specifies the names of the columns that should be quoted. When this parameter is used, only the specified columns are quoted.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Aber erst ab Version 7. face-wink
Mit n büschen Regex macht man sich's selbst, für die Zahlen (Regex dafür hier als Beispiel nur vereinfacht)
($csvobject | ConvertTo-CSV -Delimiter ";") -replace '"([\d\.,\-\+]+)"','$1'