crescent
Goto Top

Textfile in csv file konvertieren, automatisch

hallo, ich arbeite in einem autohaus und wir bekommen von userem gebrauchtwagen system leider nur txt files welche mit ";" getrennt sind. jetzt müsste ich jedoch eine csv datei erstellen. mit bestimmten parametern.

huhu,

wie im vorwort schon beschrieben. suche ich eine möglichkeit eine txt datei automatisch in eine csv datei umzuwandln, jedoch müsste die csv datei noch ein bisschen bearbeitet werden (am besten automatisch)

txt datei:
1111;xxxxxxxxxFahrgestellnummer+Internenummer;Fahrzeug A;;Fahrgestellnummer1
2222;xxxxxxxxxFahrgestellnummer+Internenummer;Fahrzeug B;;Fahrgestellnummer2
3333;xxxxxxxxxFahrgestellnummer+Internenummer;Fahrzeug C;;Fahrgestellnummer3
4444;xxxxxxxxxFahrgestellnummer+Internenummer;Fahrzeug D;;Fahrgestellnummer4
5555;xxxxxxxxxFahrgestellnummer+Internenummer;Fahrzeug E;;Fahrgestellnummer5

und sollte dann so aussehen

ein "|" steht für eine tabelle ;) man beachte, die letzte ziffer muss auch weg, da diese nur eine prüfziffer ist ;)

1111|xxxxxxxxxFahrgestellnummer+Internenummer|Fahrzeug A||Fahrgestellnummer
2222|xxxxxxxxxFahrgestellnummer+Internenummer|Fahrzeug B||Fahrgestellnummer
3333|xxxxxxxxxFahrgestellnummer+Internenummer|Fahrzeug C||Fahrgestellnummer
4444|xxxxxxxxxFahrgestellnummer+Internenummer|Fahrzeug D||Fahrgestellnummer
5555|xxxxxxxxxFahrgestellnummer+Internenummer|Fahrzeug E||Fahrgestellnummer

grüße

vllt hat wer ne idee

Content-Key: 146480

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

Ausgedruckt am: 29.03.2024 um 11:03 Uhr

Mitglied: bastla
bastla 08.07.2010 um 11:31:48 Uhr
Goto Top
Hallo CresCent!

Da der Aufbau der Datensätze ja immer gleich sein sollte, ungetestet etwa so (woebei ich "ein "|" steht für eine tabelle ;)" mal als "ein "|" steht für das Zeichen TAB" uminterpretiere):
@echo off & setlocal
set "Quelle=D:\Liste.txt"  
set "Ziel=D:\ListeTAB.txt"  

del "%Ziel%" 2>nul  
for /f "usebackq tokens=1-4 delims=;" %%a in ("%Quelle%") do set "FGNr=%%d" & call :ProcessLine "%%a" "%%b" "%%c"  
goto :eof

:ProcessLine
>>"%Ziel%" echo %~1  %~2    %~3     %FGNr:~,-1%  
goto :eof
Bitte beachten: zwischen den einzelnen Ausgaben der Zeile 10 befinden sich jeweils (ein bis zwei) TAB-Zeichen!

Grüße
bastla

P.S.: In einer CSV-Datei, die ihren Namen auch verdient, wären einfach die ";" durch "," ersetzt ...
Mitglied: RogerWilco2009
RogerWilco2009 08.07.2010 um 11:32:04 Uhr
Goto Top
Hallo Crescent,

Das läßt sich sicherlich automatisieren, aber wenn ich die Frage stellen darf, wo liegt das Problem es in Excel einzulesen? (das Semikolon ist dazu prädestiniert...)

Gruß Roger
Mitglied: RogerWilco2009
RogerWilco2009 08.07.2010 um 11:34:48 Uhr
Goto Top
Hallo bastla,

Gute Antwort und besser als meine!

Gruß Roger
Mitglied: CresCent
CresCent 08.07.2010 um 11:36:47 Uhr
Goto Top
hallo bastla,

vielen dank, ich werde es gleich mal testen ;)

@ roger, das problem ist der user, der die liste bekommt. momentan liegt die liste ja als txt file vor, was meiner meinung nach auch ausreicht, aber nein er will diese liste in excel haben, damit er nicht soviel klicken muss... deshalb dieser aufwand.

grüße
Mitglied: bastla
bastla 08.07.2010 um 11:41:43 Uhr
Goto Top
Hallo CresCent!

Wenn es wirklich nur darum geht, diese Datei möglichst schmerzfrei in Excel zu importieren, würde ich folgenden Batch empfehlen (nach soviel Unterstützung Deinerseits kann sich der Empfänger um die Prüfziffer dann ja selbst kümmern face-wink):
@echo off & setlocal
set "Quelle=D:\Liste.txt"  
set "Ziel=Liste.csv"  
ren "%Quelle%" "%Ziel%"  
Grüße
bastla
Mitglied: RogerWilco2009
RogerWilco2009 08.07.2010 um 11:42:30 Uhr
Goto Top
Hört sich so an, als könntest Du Einschleimpunkte sammeln, wenn Du es importierst und ihm dann die Excel direkt schickst... face-wink

Gruß Roger
Mitglied: bastla
bastla 08.07.2010 um 11:42:47 Uhr
Goto Top
@Roger
Ob meine Antwort überhaupt sinnvoll war, muss sich erst noch zeigen ... face-wink

Grüße
bastla
Mitglied: CresCent
CresCent 08.07.2010 um 12:48:34 Uhr
Goto Top
Zitat von @bastla:
Hallo CresCent!

Wenn es wirklich nur darum geht, diese Datei möglichst schmerzfrei in Excel zu importieren, würde ich folgenden Batch
empfehlen (nach soviel Unterstützung Deinerseits kann sich der Empfänger um die Prüfziffer dann ja selbst
kümmern face-wink):
@echo off & setlocal
> set "Quelle=D:\Liste.txt"  
> set "Ziel=Liste.csv"  
> ren "%Quelle%" "%Ziel%"  
> 
Grüße
bastla

guten tag bastla,

das problem, an der sache ist, diese person is 55jahre alt... und er hat es jetzt 35 jahre so per excel bekommen und will des jetzt die nächsten 10 jahre auch so bekommen....

daher der ganze aufwand. vielen dank jedenfalls für deine beiden skripte ;) des erste hat mir super weitergeholfen, des zweite nur teils, jetzt wäre es noch super, wenn es eine möglichkeit gibt, die erste datei (welche mit deinem skript erstellt worden ist, in excel zu importieren, dass hier auch die tabellen stimmen, da atm alles im feld a1 steht und nicht auf die felder aufgeteilt wird)

grüße
Mitglied: bastla
bastla 08.07.2010 um 13:01:02 Uhr
Goto Top
Hallo CresCent!

Die Variante 2 war so ja nicht ernst gemeint face-wink - ließe sich aber etwas anpassen:
@echo off & setlocal
set "Quelle=D:\Liste.txt"  
set "Ziel=D:\Liste.csv"  

del "%Ziel%" 2>nul  
for /f "usebackq delims=" %%a in ("%Quelle%") do set "Zeile=%%a" & call :ProcessLine  
"%Ziel%"  
goto :eof

:ProcessLine
>>"%Ziel%" echo %Zeile:~,-1%  
goto :eof

Grüße
bastla

P.S.: Respekt - 35 Jahre Excel habe nicht einmal ich noch geschafft ... face-wink
Mitglied: Biber
Biber 08.07.2010 um 13:03:15 Uhr
Goto Top
[OT]
Moin CresCent,


Zitat von @CresCent:
.. und er hat es jetzt 35 jahre so per excel bekommen und ...
.* tief seufz *
Ich denk auch so gern an diese Version zurück...
...wurde die noch von Pferden gezogen oder war die schon mit Kohlebefeuerung?

Damals haben die noch echte Qualität geschmiedet in Redmond... und das Blech war viel dicker.

Grüße
Biber

[Edit] @bastla Hätte ich mir denken können können, dass du schneller tippst..*g [/Edit]
[Edit2]@LotPings]
Zitat von @77559:
Wenn ich in drei Jahren von jungen Ignoranten mit dem Datenlöffel gefüttert werden muß, geb ich mir die Kugel face-wink
Muss das nicht "geb ich mir Google" heissen?
[/Edit2]

[/OT]
Mitglied: CresCent
CresCent 08.07.2010 um 13:11:20 Uhr
Goto Top
@ biber...

gut 35 jahre is vllt ein bisschen übertrieben, aber seitdem die beiden produkte bei uns im haus eingesetzt werden, wurde ihm die datei via excel aufbereitet und zur verfügung gestellt. ;)

aber es muss ja doch eine funktion geben, mit welcher man ein txt file(evtl. + ";") in eine excel tabelle umwandln kann oder?

grüße
crescent ;)
Mitglied: mrtux
mrtux 08.07.2010 um 14:04:50 Uhr
Goto Top
Hi !

Zitat von @CresCent:
aber es muss ja doch eine funktion geben, mit welcher man ein txt file(evtl. + ";") in eine excel tabelle umwandln kann

Gute Anwendungen bieten sowas normalerweise von Haus aus an....Was aber wohl in deinem Falle nicht so ist...Aber habe ich das jetzt richtig verstanden, Du möchtest als Ergebnis ein File im Excel Format haben? Denn TXT und CSV ist doch eigentlich genau das Gleiche. Der Unterschied liegt doch nur im Separator.

Zitat von @Biber:
.* tief seufz *

[ot]
Seit wir das genannte Produkt einsetzen, bin ich auch um mindestens 35 Jahre gealtert :-P Oder habe ich da jetzt was falsch verstanden?
[/ot]

mrtux
Mitglied: 77559
77559 08.07.2010 um 15:57:30 Uhr
Goto Top
Zitat von @bastla:
P.S.: Respekt - 35 Jahre Excel habe nicht einmal ich noch geschafft ... face-wink

Ohne künstliche Alterung durch die Benutzung ginge das ja auch garnicht face-wink

Ich war ja auch von Anfang an dabei, und habe mit all diesen mehr oder weniger gearbeitet:
1979 Visicalc
1982 Multiplan 
1983 T/Maker
1983 Lotus-1-2-3
1984 Framework
1985 Lotus Symphony
1985 Microsoft Excel (Mac)
1987 Microsoft Excel (Win)
1988 QuattroPro
Selbst Visicalc kommt "nur" auf gut 30 Jahre.

Wenn ich in drei Jahren von jungen Ignoranten mit dem Datenlöffel gefüttert werden muß, geb ich mir die Kugel face-wink

Gruß
LotPings
Mitglied: bastla
bastla 08.07.2010, aktualisiert am 18.10.2012 um 18:42:46 Uhr
Goto Top
Hallo CresCent!
aber es muss ja doch eine funktion geben, mit welcher man ein txt file(evtl. + ";") in eine excel tabelle umwandln kann oder?
Muss ich dieser Frage entnehmen, dass der Batch da oben bei Dir nicht funktioniert?

Grüße
bastla
Mitglied: CresCent
CresCent 09.07.2010 um 08:22:49 Uhr
Goto Top
hallo bastla,

ich wollte mit den 35 jahren eig. nur ausdrücken, dass er dies schon immer so bekommen hat ;)

zu der batch, es funktioniert super ;) vielen herzlichen dank.
hast vllt noch nen kniff auf lager, wie man die letzte spalte in eine zahl konvertiert (format zahl), da mir hier ein wert immer verzehrt bzw falsch dargestellt wird.

bräuchte quasi nur ne formatierung zu "zahl" ohne nachkommaziffern ;)
dann wärs perfekt.

ich hab mir dein skript auch schon ein bisschen angepasst, sodass, wenn man dieses jetzt ausführt, gleich eine email an die entsprechende person geschickt wird. ;)

grüße
Mitglied: Biber
Biber 09.07.2010 um 09:36:16 Uhr
Goto Top
[absolutely OT]
Zitat von @CresCent:
hast vllt noch nen kniff auf lager, wie man die letzte spalte in eine zahl konvertiert (format zahl),
da mir hier ein wert immer verzehrt bzw falsch dargestellt wird.

Oh mann... gut, dass bastla schon unterwegs ist, um es zu richten...
Denn halb verzehrte Werte (oder auch halb verzehrte Leberwurststullen!) können schon ganz schön unappetitlich aussehen.
Sollte deshalb schnellstens bereinigt werden.

@CresCent
Du gibst aber ganz schön viele Steilvorlagen in deinen Beiträgen face-wink

Grüße
Biber
[/absolutely OT]
Mitglied: bastla
bastla 09.07.2010 um 09:37:05 Uhr
Goto Top
Hallo CresCent!
hast vllt noch nen kniff auf lager, wie man die letzte spalte in eine zahl konvertiert (format zahl), da mir hier ein wert immer verzehrt bzw falsch dargestellt wird.
Per Batch fällt mir dazu auch nix ein face-sad - in Excel (ab 2003) sollte aber die "Fehlerüberprüfung" Dich ja auf "als Text gespeicherte Zahlen" aufmerksam machen (und Abhilfe anbieten); ansonsten sollte immer noch die (wenn auch nicht elegante) Methode "Zahl 1 in die Zwischenablage kopieren, Spalte markieren, Inhalte einfügen..., Multiplizieren" für eine Umwandlung in eine Zahl sorgen ...

... wobei allerdings eine rechtsbündige Ausrichtung (und allenfalls Verwendung einer nicht-proportionalen Schrift wie etwa "Courier New" oder "Lucida Console") den Zweck auch schon erfüllen dürfte (rechnen willst Du ja ohnehin nicht mit der FGNr) ...

Grüße
bastla