win95ftw
Goto Top

TXT, CSV in XLS oder CSV mit BATCH, VBA oder ähnliches

Hallo liebe IT-Gemeinde,

ich hab hier ein kleines Problem:

Ich habe eine große Menge an Datensätzen, welche in TXT/CSV Daten gespeicht sind. Jeder Datensatz ist in einer eigenen Datei. Die Formatierung sieht in etwa so aus:

{"_id":"uv2hx","_rev":"1864-f02c5c50d1fd3eXKE2e","@level":"2","@bought":"1695620","value":"1746.85577393","reco":"405000","quest":"8","@nb_veh":"267210","@stars":"52,40","@raw":"2","ELO_LB":"0.0","ranke":"36","@xp_ca:"1008","@multi":"6824",}

... diese Datensätze sollen übersichtlich in einer Tabelle gelistet werden. Dabei muss zB: aus:

"reco":"405000",

der Wert "405000" in eine Spalte der Tabelle übernommen werden. Das "reco" ist in dem Fall der Spaltenname. Für jeden Datensatz soll natürlich eine neue Zeile angelegt werden.

Ein weiteres Problem ist, die Reihenfolge der Daten im Datensatz kann sich unterscheiden. Der oben gezeigte Datensatz kann auch wie folgt aussehen:

{"_id":"uv2hx","_rev":"1864-f02c5c50d1fd3eXKE2e","@stars":"52,40","@level":"2","@bought":"1695620","@multi":"6824","value":"@raw":"2","1746.85577393","reco":"405000","quest":"8","@nb_veh":"267210","ELO_LB":"0.0","ranke":"36","@xp_ca:"1008",}

Da es sich um wirklich viele Datensätze handelt, muss die ganze Aktion automatisiert ablaufen und es dürfen keine Artefakte wie:

" oder ;

in der Tabelle verbleiben.

Ich bedanke mich schoneinmal für alle Hinweise von euch!

Content-Key: 213464

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

Printed on: April 19, 2024 at 15:04 o'clock

Member: bastla
bastla Aug 06, 2013 updated at 14:11:39 (UTC)
Goto Top
Hallo WIN95FTW und willkommen im Forum!

Nur auf Basis Deiner geposteten Beispiel-Datensätze (mich irritiert etwa "{" am Anfang ohne "}" am Ende) und unter der Annahme, dass in jedem Datensatz jeweils die gleichen Felder enthalten sind und es sich außerdem um eine einmalige Aktion handelt, würde ich das quick & dirty etwa so versuchen:
@echo off & setlocal
set "CSV=Ergebnis.csv"  

>"%CSV%" echo ;"@bought";"@level";"@multi";"@stars";"_rev";"quest";"reco";"value":;"@raw";{"_id"  
for /f "delims=" %%f in ('dir /b *.csv') do call :ProcessLine "%%f"  
"%CSV%"  
goto :eof

:ProcessLine
set /p Zeile=<%1
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%i in ('^(for %%a in ^(%Zeile%^) do @echo %%a^)^|sort') do set "Satz=!Satz!;"%%~i"  
>>"%CSV%" echo !Satz: =!  
endlocal
goto :eof
Das Ergebnis sollte eine mit Excel zu öffnende CSV-Datei sein.

Sollten übrigens die Einzeldateien anstatt ".csv" den Typ ".txt" haben, die Zeile 5 entsprechend anpassen.

Grüße
bastla

P.S.: Für Deine Beispiel-Datensätze würde sich "Code"-Formatierung anbieten ...