excelbeginner
Goto Top

In CSV Dateien Spalte mit Inhalt aus Dateinamen hinzufügen und zusammenfügen

Hallo,

ich erhalte täglich eine csv Datei (Beispieldateiname: Energiebilanz_2024_04_10.csv).
Diese enthält eine Kopfzeile, 9 Spalten (A bis I) und immer 96 Zeilen (97 Zeilen mit Kopfzeile).
Diese csv Datei soll nun bearbeitet werden:
1. die Kopfzeile soll entfernt werden
2. es soll eine Spalte (am Anfang) eingefügt werden mit dem Teil des Dateinamens,
der das Datum der Werte enthält (Position 15-18 ist Jahr, Pos 20-21 ist Monat, Pos 23-24 ist Tag)
Format in Spalte sollte sein JJJMMTT
3. alle so bearbeiteten csv Dateien sollen zusammengefügt werden

Ziel ist die Gesamtdatei in Excel auszuwerten.

Eine Lösung könnte wohl Powershell sein, habe aber keinerlei Plan von Programmierung,
und alle von Hand zu Fuss umzuwandeln ist echt mühsam.

Schon mal vorab vielen Dank für eure Hilfe.

Content-Key: 62694538589

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

Printed on: June 23, 2024 at 07:06 o'clock

Mitglied: 9697748851
9697748851 May 23, 2024 at 11:24:41 (UTC)
Goto Top
Moin,

habe aber keinerlei Plan von Programmierung
dann fragen Sie Chef, ob man sich sowas entwickeln lassen könnte. Würde viel Zeit (und damit auch Geld) sparen ;)

Schon mal vorab vielen Dank für eure Hilfe.
Du erwartest nun ein fertiges Script, oder?

Gruß
Member: Habiat
Habiat May 23, 2024 at 11:30:44 (UTC)
Goto Top
Moin,

guck dir mal KNIME an.

Gruß
Member: em-pie
em-pie May 23, 2024 at 14:52:20 (UTC)
Goto Top
Moin,

Zitat von @excelbeginner:
Eine Lösung könnte wohl Powershell sein, habe aber keinerlei Plan von Programmierung,
kann man lernen. Die SPrache ist meist irrelevant, wenn man selbst erst einmal ein logisches Konzept hat
und alle von Hand zu Fuss umzuwandeln ist echt mühsam.
Das ist meistens so...


ich erhalte täglich eine csv Datei (Beispieldateiname: Energiebilanz_2024_04_10.csv).
Diese enthält eine Kopfzeile, 9 Spalten (A bis I) und immer 96 Zeilen (97 Zeilen mit Kopfzeile).
Diese csv Datei soll nun bearbeitet werden:
  1. die Kopfzeile soll entfernt werden
  2. es soll eine Spalte (am Anfang) eingefügt werden mit dem Teil des Dateinamens, der das Datum der Werte enthält (Position 15-18 ist Jahr, Pos 20-21 ist Monat, Pos 23-24 ist Tag). Format in Spalte sollte sein JJJMMTT
  3. alle so bearbeiteten csv Dateien sollen zusammengefügt werden
Ziel ist die Gesamtdatei in Excel auszuwerten.
Dazu brauchst du
  • Get-ChildItem()
  • Foreach()
  • RegEx() oder "viel" Replace()
  • Select-Object @{Name='Datum';Expression=[JJJJMMTT]}, * wird als Pipe nach dem Import-CSV eingebunden: Import-CSV [meine.csv] | Select-Object @{Name='Datum';Expression=[JJJJMMTT]}, *}} wobei JJJJMMTT das aus dem Dateinamen exrahierte Datum ist
  • Export-Csv() -NoHeader -Append

Damit kannst du schon mal loslegen.
Wenn du "irgendwo" nicht weiterkommst, bitte melden
Member: hempel
Solution hempel May 23, 2024 updated at 17:47:31 (UTC)
Goto Top
$all = foreach($file in Get-ChildItem -Path "E:\data" -File -Filter *.csv){  
     Import-Csv -Path $file.Fullname -Delimiter ";" -Encoding Default | select @{n='Datum';e={$file.Basename -replace '.*(\d{4})_(\d{2})_(\d{2})$','$1$2$3'}},*  
}
if ($all){
    $all | ConvertTo-Csv -Delimiter ";" -NoType | select -skip 1 | set-content -Path .\merged.csv  
}
Online-Demo

Gruß