
114298
06.06.2015, aktualisiert am 10.06.2015
Erste Zeile einer Excel Datei vergleichen
Hallo zusammen,
ich habe folgendes Szenario.
Ich bekomme täglich eine .csv Datei zugeschickt. In der Datei sind nun in der Spalte A mehrere hundert Semikolon getrennt Datensätze enthalten.
Beispiel Zelle A1: Jahr;Monat;Tag;"Auftragsnummer";...
Beispiel Zelle A2: 2015;06;06;01983737;
Ich möchte nun prüfen ob die Datei der vereinbarten Spaltenstruktur entspricht.
Um die erste Spalte auszulesen, habe ich nun folgenden Code benutzt:
In den Spaltenüberschriften sind auch zum Teil Anführungszeichen enthalten.
Nun bekomme ich am Anfang und am Ende des Ergebnisses und vor und nach den bereits vorhandenen Anführungszeichen weitere angezeigt.
Beispiel Zelle A1: Jahr;Monat;Tag;"Auftragsnummer";...
Ergebnis: "Jahr;Monat;Tag;""Auftragsnummer"";..."
Dadurch funktioniert mein Vergleich mit der Originalen Überschrift nicht.
Ich habe überlegt, die Anführungszeichen durch 'nichts' zu ersetzen, dann aber werden die Originalen Anführungszeichen auch ersetzt und der Vergleich schlägt wieder fehl.
Gibt es eventuell noch eine andere Möglichkeit die erste Zeile bzw. die eine Zelle zu vergleichen?
Beste Grüße
Memo
ich habe folgendes Szenario.
Ich bekomme täglich eine .csv Datei zugeschickt. In der Datei sind nun in der Spalte A mehrere hundert Semikolon getrennt Datensätze enthalten.
Beispiel Zelle A1: Jahr;Monat;Tag;"Auftragsnummer";...
Beispiel Zelle A2: 2015;06;06;01983737;
Ich möchte nun prüfen ob die Datei der vereinbarten Spaltenstruktur entspricht.
Um die erste Spalte auszulesen, habe ich nun folgenden Code benutzt:
get-Content $Filepath -totalcount 1
In den Spaltenüberschriften sind auch zum Teil Anführungszeichen enthalten.
Nun bekomme ich am Anfang und am Ende des Ergebnisses und vor und nach den bereits vorhandenen Anführungszeichen weitere angezeigt.
Beispiel Zelle A1: Jahr;Monat;Tag;"Auftragsnummer";...
Ergebnis: "Jahr;Monat;Tag;""Auftragsnummer"";..."
Dadurch funktioniert mein Vergleich mit der Originalen Überschrift nicht.
Ich habe überlegt, die Anführungszeichen durch 'nichts' zu ersetzen, dann aber werden die Originalen Anführungszeichen auch ersetzt und der Vergleich schlägt wieder fehl.
Gibt es eventuell noch eine andere Möglichkeit die erste Zeile bzw. die eine Zelle zu vergleichen?
Beste Grüße
Memo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 273935
Url: https://administrator.de/forum/erste-zeile-einer-excel-datei-vergleichen-273935.html
Ausgedruckt am: 28.04.2025 um 03:04 Uhr
8 Kommentare
Neuester Kommentar

Moin,
Doppelte Anführungszeichen lassen sich aber einfach durch einfache ersetzen, und die am Anfang und Ende entfernen:
Aber wie gesagt, das wäre absolut nicht normal wenn get-Content da von selbst Anführungszeichen hinzufügen würde. Irgendwas hast du uns da bestimmt verschwiegen 
.Es gibt 1001 Möglichkeiten ...
Gruß jodel32
Nun bekomme ich am Anfang und am Ende des Ergebnisses und vor und nach den bereits vorhandenen Anführungszeichen weitere angezeigt.
Wieso ?? kann nicht sein ...du musst da was nicht richtig machen, das ist nämlich nicht normal das get-content da einfach selber was hinzufügen würde, das wäre ja fatal !Doppelte Anführungszeichen lassen sich aber einfach durch einfache ersetzen, und die am Anfang und Ende entfernen:
((get-Content $Filepath -totalcount 1) -replace '""','"') -replace '^"|"$',''
Dadurch funktioniert mein Vergleich mit der Originalen Überschrift nicht.
Doch, wenn du beim Original ebenfalls die Anführungszeichen ersetzt Gruß jodel32

Zitat von @114298:
Mein Code:
$Filepath = "Z:\Desktop\test.csv"
$Headline = (get-Content $Filepath -totalcount 1)
write-host $Headline
Die Ausgabe:
"Monat;Jahr;Tag;""Hallo"""
Dann muss dein File entweder ein komisches Encoding oder sonstige merkwürdige Eigenschaften haben, denn das ist mir in meiner Powershell-Zeit noch nie untergekommen, und kann es hier absolut nicht nachvollziehen, glaub mir ! Das darf nicht sein. Mach dir mal mit Notepad auf einem anderen Rechner eine Testdatei mit den Überschriften und für den Code auf dem anderen Rechner aus, dann wirst du sehen das es nicht mehr auftritt ...Mein Code:
$Filepath = "Z:\Desktop\test.csv"
$Headline = (get-Content $Filepath -totalcount 1)
write-host $Headline
Die Ausgabe:
"Monat;Jahr;Tag;""Hallo"""
Mit deinem deinem Code funktioniert es. Kannst du mir aber bitte kurz erklären was das zweite -replace macht?
Mit Regular Expressions das führende und abschließende Anführungszeichen entfernen.Gruß jodel
Zitat von @114757:
Dann muss dein File entweder ein komisches Encoding oder sonstige merkwürdige Eigenschaften haben, denn das ist mir in meiner
Powershell-Zeit noch nie untergekommen, und kann es hier absolut nicht nachvollziehen, glaub mir ! Das darf nicht sein. Mach
dir mal mit Notepad auf einem anderen Rechner eine Testdatei mit den Überschriften und für den Code auf dem anderen
Rechner aus, dann wirst du sehen das es nicht mehr auftritt ...
Dem kann ich nur beipflichten. Da stimmt was bei dir mit der Textdatei nicht @114298 und ich mache ebenfalls sehr viel mit der Powershell.Dann muss dein File entweder ein komisches Encoding oder sonstige merkwürdige Eigenschaften haben, denn das ist mir in meiner
Powershell-Zeit noch nie untergekommen, und kann es hier absolut nicht nachvollziehen, glaub mir ! Das darf nicht sein. Mach
dir mal mit Notepad auf einem anderen Rechner eine Testdatei mit den Überschriften und für den Code auf dem anderen
Rechner aus, dann wirst du sehen das es nicht mehr auftritt ...
Wäre mal interessant deine Powershell-Version und OS zu erfahren. Und das Encoding der Datei wäre auch interessant.
Aber ohne gepostete Originalzeile wird das hier vermutlich nicht aufzuklären sein ...

Grüße Uwe
Zitat von @114298:
Ich habe es jetzt auch mit PS 4.0 probiert. Da bekomme ich dasselbe Ergebnis.
Normal ist es aber definitiv nicht !Ich habe es jetzt auch mit PS 4.0 probiert. Da bekomme ich dasselbe Ergebnis.
AUßER die CSV-Dateien kommen direkt aus Excel, denn das stellt verdoppelt die Anführungszeichen...kannst du einfach feststellen indem du solch eine CSV mal in einem Texteditor öffnest.
Deswegen sollte man solche CSV-Dateien auch immer mit Import-CSV in Powershell laden.
Die korrekten Spaltennamen erhältst du dann so in einem Array:
$csv = Import-csv "C:\Test.csv" -Delimiter ";"
$csv | gm -MemberType NoteProperty | select -Expand Name
Grüße Uwe