underdog81
Goto Top

Excel zur Textdatei Wandeln

Hallo ich versuch mich gerade an einer mir fast unlöslichen Aufgabe aber ich bin zuversichtlich,
daß ich hier Hilfe finde bei euch.

Ich habe von meinem Chef den Wunsch eine Dateiverarbeitung zu basteln.
Hier müssen feste Daten in der neuen Datei eingegeben werden.
Zusätzlich wird ein "Counter" benötigt und eine Abfrage in der Excel um zu schauen
was in die neue Textdatei rein soll.
SChon mal ein Dankeschön für alle Antworten und jede Hilfe hier im Forum.

Dann versuch ich mal die Idee zu beschreiben.

Grundbaustein ist eine Exceldatei die in mehreren Spalten unterschiedliche Infos stehen hat.
A = Artikelnummer
B = Menge
C = Artikelname
D = Preis
usw.

Hier brauchen wir nur die Informationen aus Spalte A und B.
Es soll geschaut werden ob ab zeile 2 eine Artikelnummer steht und in Menge was eingetragen ist.
Steht was in Menge sollen diese Infos in die neue Datei und dann weiter in die nächste Zeile und suchen.
Wenn keine Menge angegeben ist soll in der nächsten Zeile weitersuchen ohne etwas in die neue Datei einzutragen.
Findet er in Spalte A keine Artikelnummer mehr ist er fertig.


Aufbau der neune Datei (Textdatei)

K;Bestellung vom Kunden;10007;
D;1;4008;60;JA;

In der ersten Zeile haben wir die Kofzeile, bei der sich nur die Kundennummer (10007)
ändern kann.
in der zweiten Zeile haben wir
D = neue Datenzeile
1 = Positionsnummer (Counter der fortlaufen muss 1,2,3,4 usw.)
4008 = Artikelnummer (aus der Excel wie oben beschrieben)
60 = Menge (aus der Excel wie oben beschrieben)
JA = Befehlsparameter für die Spätere Verarbeitung


Beispiel mit 3 Artiekeln die in der Excel gefunden wurden.

K;Bestellung vom Kunden;10007;
D;1;4008;60;JA;
D;2;33;5;JA;
D;3;257;10;JA;


So nun habe ich selber auch schon ein Wenig probiert aber komme nicht weiter.
Ich habe hier schon eine Abfrage drin für die Kopfzeile, damit man die Kundennummer
eintragen kann zu der bestellung die per Excel übergeben wird.
Hier mal das was ich als nützlich finde


@echo off & setlocal enabledelayedexpansion
set "out=R:Excelbearbeitung\Kundenbestellung in Excel\Dateien\Kunden.txt"
set "cnt=0"
echo Bitte geben Sie die Kundennummer ein:
set /p "num=
"%out%" echo K;Bestellung vom Kunden;%num%;
for /f "usebackq tokens=1,2 delims=," %%s in ("%~dpn1.csv") do (
set /a "cnt+=1"
>>"%out%" echo D;!cnt!;%%s;%%t;Ja;
)


Ich dank euch schon mal für eure Hilfe und hoffe, daß ihr mir helfen könnt.

Mit freundlichem Gruß Underdog81

Content-Key: 190333

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

Printed on: April 26, 2024 at 12:04 o'clock

Member: bastla
bastla Aug 28, 2012 updated at 17:11:27 (UTC)
Goto Top
Hallo Underdog81!

Bis auf die Tatsache, dass die CSV-Datei etwas abenteuerlich festgelegt wird, könnte das etwa so gehen:
@echo off & setlocal enabledelayedexpansion
set "out=Kunden.txt"  
set /a cnt=0
set /p num=Kundennummer: 
>"%out%" echo K;Bestellung vom Kunden;%num%;  
for /f "usebackq skip=1 delims=" %%i in ("%~dpn1.csv") do (  
    set "Zeile=%%i"  
    for /f "tokens=1-2 delims=," %%s in ("!Zeile:,,=,§,!") do (  
        if "%%t" neq "§" (  
            set /a "cnt+=1"  
            >>"%out%" echo D;!cnt!;%%s;%%t;Ja;  
        )
    )
)
Da die Spalte 2 leer sein kann und dann 2 Kommata aufeinander folgen, diese aber von der "for"-Schleife als nur ein Trennzeichen interpretiert würden, muss vorweg ein Kennzeichen (§) für eine leere Spalte eingetragen werden - dieses kann dann abgefragt werden, um eine nicht vorhandene Menge zu erkennen.

Grüße
bastla

P.S.: Den Threadtitel solltest Du noch überarbeiten, da die Ausgangsdatei ja bereits im CSV- (und nicht im Excel-)Format vorliegt (dann wäre VBS/VBA, nicht Batch das richtige Werkzeug) ...
Member: Underdog81
Underdog81 Aug 29, 2012 at 07:08:03 (UTC)
Goto Top
Ausgangsdatei ist aber wirklich eine EXCEL face-sad

und selbst wenn ich deine Batch nehme bekomme ich
den gleichen Aufbau wie bei meiner.
Member: bastla
bastla Aug 29, 2012 at 07:37:35 (UTC)
Goto Top
Hallo Underdog81!

Exceldateien haben nicht den Dateityp ".csv" (und aus einer solchen wird in Zeile 6 gelesen) - Excel kann solche Dateien aber öffnen ...

Grüße
bastla