Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Excel zur Textdatei Wandeln

Frage Entwicklung Batch & Shell

Mitglied: Underdog81

Underdog81 (Level 1) - Jetzt verbinden

28.08.2012 um 17:37 Uhr, 2638 Aufrufe, 3 Kommentare

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





Mitglied: bastla
28.08.2012, aktualisiert um 19:11 Uhr
Hallo Underdog81!

Bis auf die Tatsache, dass die CSV-Datei etwas abenteuerlich festgelegt wird, könnte das etwa so gehen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "out=Kunden.txt" 
03.
set /a cnt=0 
04.
set /p num=Kundennummer:  
05.
>"%out%" echo K;Bestellung vom Kunden;%num%; 
06.
for /f "usebackq skip=1 delims=" %%i in ("%~dpn1.csv") do ( 
07.
    set "Zeile=%%i" 
08.
    for /f "tokens=1-2 delims=," %%s in ("!Zeile:,,=,§,!") do ( 
09.
        if "%%t" neq "§" ( 
10.
            set /a "cnt+=1" 
11.
            >>"%out%" echo D;!cnt!;%%s;%%t;Ja; 
12.
13.
14.
)
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) ...
Bitte warten ..
Mitglied: Underdog81
29.08.2012 um 09:08 Uhr
Ausgangsdatei ist aber wirklich eine EXCEL

und selbst wenn ich deine Batch nehme bekomme ich
den gleichen Aufbau wie bei meiner.
Bitte warten ..
Mitglied: bastla
29.08.2012 um 09:37 Uhr
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
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel VBA: Automatische Konvertierung von Textdatei (.txt) zu Exceldatei (.xlsx) (7)

Frage von Booster07 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel 2010 - Berechnungen mit Datumswerten Uhrzeiten (2)

Frage von Volchy zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel 2013: Nur einem bestimmten Personenkreis erlauben, Daten zu ändern (3)

Frage von newbie58 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Update
MS: Update-Server-Adressen OHNE Wildcards (16)

Frage von mrserious73 zum Thema Windows Update ...

Microsoft Office
+1.000 Ordner in Outlook: Wie besser? (10)

Frage von Matsushita zum Thema Microsoft Office ...

Router & Routing
gelöst Netzwerk am einfachsten trennen (8)

Frage von geheimagent zum Thema Router & Routing ...