Powershell die ersten Zeilen in CSV löschen
Hallo zusammen,
ich bekomme vom Kunden eine xlsx datei, diese wandel ich mit Folgendem Code in eine CSV um:
Das klappt auch soweit gut, nur habe ich im Anschluss Probleme die CSV zu bearbeiten. Zumindest anständig
Die CSV sieht im anschluss etwa so aus:
Allerdings möchte ich den Rest rauslöschen und quasi mit "ReNr.;-;Re-Datum;Re-Betrag;Skonto%;Skonto;Betrag EUR " beginnen. Alles was nach der Gesamt summe kommt muss auch raus. Ich komme hier leider nicht weiter ohne einfach ständig einen Replace zu nutzen. Und das möchte ich eben verhindern und es auch mal anständig hin bekommen.
In einem anderen Skript löse ich sowas in der Art mit Skip, allerdings bleibt dann auch immer der Header stehen... Wäre über jede Hilfe dankbar
ich bekomme vom Kunden eine xlsx datei, diese wandel ich mit Folgendem Code in eine CSV um:
$excelwb = New-Object -ComObject excel.application
$workbook = $excelwb.Workbooks.Open($sourceFile)
$workbook.SaveAs($targetFile,6)
$workbook.Close($false)
$ExcelWB.quit()
Das klappt auch soweit gut, nur habe ich im Anschluss Probleme die CSV zu bearbeiten. Zumindest anständig
Die CSV sieht im anschluss etwa so aus:
XXXX Handels GmbH & Co. KG;;;;Zahlungsavis;;
BLABLA;;;;Beleg / Datum;;
BLABLA;;;;XXX / 30.11.2022;;
XXXX;;;;Ihr Konto bei uns;;
;;;;XXXXX;;
;;;;;;
XXXXX;;;;;;
XXXXX;;;;;;
51147 KÖLN;;;;;;
Deutschland;;;;;;
XXXXX;;;;;;
;;;;;;
Sehr geehrte Damen und Herren,;;;;;;
mit der Zahlung vom 30.11.2022 wurden folgende Rechnungen bezahlt:;;;;;;
;;;;;;
ReNr.;-;Re-Datum;Re-Betrag;Skonto%;Skonto;Betrag EUR
XXXXX;ER;05.10.2022;132.95 ;14.740 ;19.60 ;113.35
XXXXX;ER;05.10.2022;505.84 ;14.740 ;74.57 ;431.27
XXXXX;ER;05.10.2022;190.39 ;14.740 ;28.05 ;162.34
;;;;;;
Gesamt-Summe;;;829.18 ;;122.22 ;706.96
;;;;;;
;;;;;;
Zahlungsbeleg;;;Datum;Währung;Zahl-Betrag;
XXXXX;;;30.11.2022;EUR;706.96 ;
Allerdings möchte ich den Rest rauslöschen und quasi mit "ReNr.;-;Re-Datum;Re-Betrag;Skonto%;Skonto;Betrag EUR " beginnen. Alles was nach der Gesamt summe kommt muss auch raus. Ich komme hier leider nicht weiter ohne einfach ständig einen Replace zu nutzen. Und das möchte ich eben verhindern und es auch mal anständig hin bekommen.
In einem anderen Skript löse ich sowas in der Art mit Skip, allerdings bleibt dann auch immer der Header stehen... Wäre über jede Hilfe dankbar
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4968997755
Url: https://administrator.de/contentid/4968997755
Ausgedruckt am: 24.11.2024 um 10:11 Uhr
6 Kommentare
Neuester Kommentar
https://tio.run/##dVLbbtswDH3PV/ChW9qiYS1f4jjC0C5rkQwp@uBgW7FLASfh7GCWPc ...
Gruß s.
$inhalt = Get-Content "d:\datei.csv" -Raw
[regex]::match($inhalt,'(?ism)^ReNr\..*^Gesamt-Summe.*?$').Value | set-content "d:\datei_neu.csv"
Zitat von @Springstil:
Sehr geil Danke ich hab wohl einfach zu kompliziert gedacht. Bekomme ich allerdings auch hin das er -1 eine spalte entfernt, damit die spalte mit der gesamt summe auch entfernt wird?
Sehr geil Danke ich hab wohl einfach zu kompliziert gedacht. Bekomme ich allerdings auch hin das er -1 eine spalte entfernt, damit die spalte mit der gesamt summe auch entfernt wird?
Du meinst das "Gesamt-Summe" am Anfang weg?, joa, replace es einfach mit nichts
$inhalt = Get-Content "d:\datei.csv" -Raw
[regex]::match($inhalt,'(?ism)^ReNr\..*^Gesamt-Summe.*?$').Value -replace '(?im)^Gesamt-Summe' | set-content "d:\datei_neu.csv"
Zitat von @Springstil:
Genau die soll weg, allerdings komplett und nicht nur das wort. Also die gesamte Zeile. Allerdings ändern sich die Daten hinten immer wieder
Dann musst du das auch schreiben du hast oben nämlich "Spalte" statt "Zeile" geschrieben und das sind zwei paar Schuhe ...!In dem Fall dann so.
$inhalt = Get-Content "d:\datei.csv" -Raw
[regex]::match($inhalt,'(?ism)^ReNr\..*(?=^Gesamt-Summe.*?$)').Value | set-content "d:\datei_neu.csv"