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
GELÖST

Xls to csv Converter per Batch (ohne Excel)

Frage Entwicklung Batch & Shell

Mitglied: xstr3ck3rx

xstr3ck3rx (Level 1) - Jetzt verbinden

08.03.2013, aktualisiert 20:49 Uhr, 4960 Aufrufe, 30 Kommentare, 2 Danke

Hallo Leute,
ich hoffe, dass Ihr mir bei meine Problem behilflich sein könnt.

Ich schreibe zurzeit ein Batch-Script, das eigentlich eine .xls datei in eine .txt datei umwandeln soll. Zurzeit kann es nur .csv in .txt dateien umwandeln, aber ich möchte gerne von .xls in .txt. Gerne auch über den Zwischenschritt .csv.
Wie schon oben beschrieben nutze ich bis jetzt das batch script zum converten von .csv nach .txt mit den folgendem Quelltext:

@echo off
title Semikolon Converter
color 0A
:start
echo.
ECHO M™chten Sie eine .csv Datei Exportieren[e] oder eine .txt Datei Importieren[i]?
echo.
SET /p wahl=
if '%wahl%' EQU 'e' goto Export
if '%wahl%' EQU 'i' goto Import
if '%wahl%' NEQ 'e' goto falsch
if '%wahl%' NEQ 'i' goto falsch
:Export
echo.
color 1E
Set /P Datei=Bitte geben Sie den Namen der .csv Datei ein: %
echo.
Set /P Datei2=Bitte geben Sie den Namen des Ausgabedokuments ein: %
echo.
if NOT exist %Datei%.csv goto falsch2
if exist %Datei%.csv goto weiter
:weiter
FOR /F "delims=" %%A in (%Datei%.csv) do echo %%A;>>%Datei2%.txt
goto Ende1
:Import
echo.
color 1E
Set /P Datei=Bitte geben Sie den Namen des Textdokuments ein: %
echo.
Set /P Datei2=Bitte geben Sie den Namen der Ausgang .csv Datei ein: %
echo.
if NOT exist %Datei%.txt goto falsch3
if exist %Datei%.txt goto weiter2
:weiter2
FOR /F "delims=" %%A in (%Datei%.txt) do echo %%A>>%Datei2%.csv
goto Ende2
:falsch
color C4
echo msgbox "Falsche Eingabe! Exportieren mit der Taste [e] oder Importieren mit der Taste [i]." > %tmp%\tmp.vbs
cscript /nologo %tmp%\tmp.vbs
del %tmp%\tmp.vbs
cls
goto neustart
:falsch2
color C4
echo msgbox "%Datei%.csv konnte nicht gefunden werden!" > %tmp%\tmp.vbs
cscript /nologo %tmp%\tmp.vbs
del %tmp%\tmp.vbs
cls
goto neustart
:falsch3
color C4
echo msgbox "%Datei%.txt konnte nicht gefunden werden!" > %tmp%\tmp.vbs
cscript /nologo %tmp%\tmp.vbs
del %tmp%\tmp.vbs
cls
goto neustart
:Ende1
echo msgbox "%Datei2%.txt wurde erstellt!" > %tmp%\tmp.vbs
cscript /nologo %tmp%\tmp.vbs
del %tmp%\tmp.vbs
goto schliessen
:Ende2
echo msgbox "%Datei2%.csv wurde erstellt!" > %tmp%\tmp.vbs
cscript /nologo %tmp%\tmp.vbs
del %tmp%\tmp.vbs
goto schliessen
:neustart
@call %0
goto neustart2
:neustart2
exit
:schliessen



Es kann sein das einiges überflüssig ist, aber es funktioniert so.
So jetzt hätte ich gerne aber, dass es von .xls nach .txt konvertiert. Kann mir da jemand helfen?
Und nein ich möchte nicht in Excel unter speichern unter.. .csv, weil ich das so ein ganzen Tool für die Arbeit brauche. :D
Und ich möchte in Excel auch kein Modul hinzufügen bzw in Excel ein VBS nutzen.
PS: Nicht wundern, dass das Script nach jeder Zeile ein ";" hinzufügt das möchte ich so bzw. mein Chef :D
Danke Schon mal im vorraus :D
Mit freundlichen Grüßen
Leon
30 Antworten
Mitglied: bastla
08.03.2013 um 20:58 Uhr
Hallo xstr3ck3rx und willkommen im Forum!

Jetzt wissen wir schon mal, was Du nicht möchtest - die Variante "Script (zB VBS), um Excel von außerhalb zu steuern" ist aber nicht ausgeschlossen?

Grüße
bastla
Bitte warten ..
Mitglied: xstr3ck3rx
08.03.2013 um 21:16 Uhr
hallo bastla,
erstmal danke für deine schnelle antwort.
Ich wollte es gerne mit einem Batch-Script schreiben, aber ich weiß nicht ob dies möglich ist. Ist es möglich? Oder ist es möglich ein VBS in batch ein zubinden?
Mit freundlichen Grüßen
Leon
Bitte warten ..
Mitglied: bastla
08.03.2013 um 21:20 Uhr
Hallo xstr3ck3rx!

Ersteres nein, letzteres ja.

Grüße
bastla
Bitte warten ..
Mitglied: xstr3ck3rx
08.03.2013 um 21:26 Uhr
hallo bastla!
mal wieder ein fettes DANKESCHÖN für die schnelle Antwort.
Okay da ich jetzt weiß, dass man ein VBS in eine Batch Datei einbinden kann, möchte ich gerne wissen wie. Also ich würde gerne meine Batch Datei hauptsächlich so lassen, bloß da vbs script hinzufügen, sodass ich auch eine xls in eine csv umwandeln kann von csv nach txt lass ich dann mein script übernehmen.
Mit freundlichen Grüßen,
xstr3ck3rx
Bitte warten ..
Mitglied: bastla
08.03.2013 um 22:07 Uhr
Hallo xstr3ck3rx!
von csv nach txt lass ich dann mein script übernehmen.
Lässt sich alles in einem Arbeitsgang erledigen (insbes, wenn es nur darum zu gehen scheint, am Zeilenende ein Semikolon anzufügen) ...

Wie ist denn der Aufbau der Quelldaten - gibt es eine bestimmte Spaltenanzahl, sollen alle Zeilen in die Zieldatei (oder zB x Überschriftenzeilen übersprungen werden), in welcher Tabelle der Exceldatei befinden sich die Daten?

Grüße
bastla
Bitte warten ..
Mitglied: xstr3ck3rx
08.03.2013 um 22:23 Uhr
Hallo bastla!
Also die Datei soll nach einem Datei Namen fragen also nach einer .xls.
Diese soll das Programm dann in eine .txt umwandeln.
Nachdem die Datei nach der .xls Datei gefragt hat, soll sie auch noch fragen, wie der Name des Ausgangtextdokuments (.txt) sein soll.
D.h. jede .xls datei die ich angebe, soll umgewandelt werden.
Zusätzlich soll dann an jedem Zeilenende in der .txt ein Semikolon stehen.
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 00:32 Uhr
@ bastla
Ich werde jetzt erstmal schlaffen gehen. Ich hoffe, dass wir uns morgen ein script zusammen basteln könnten, denn ich weiß nicht, wie ich eine xls datei in ein txt so umwandeln kann das zusätzlich auch noch ein Simekolon an jedem Zeilenende steht.
Gute Nacht.
Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 14:19 Uhr
Guten Tag.
Weiß jemand, was ich am script verändern muss, damit es direkt von einer xls in eine txt mit dateinamen abfrage umwandelt?
Bitte warten ..
Mitglied: 76109
09.03.2013 um 14:42 Uhr
Hallo xstr3ck3rx!

damit es direkt von einer xls in eine txt
Ohne Excel geht das leider nicht...

Gruß Dieter
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 14:46 Uhr
hallo Dieter,
ich bin mir sicher, dass es ohne Excel auch geht, denn ich habe schon so einiges im Internet dazu gefunden. Mit VBS geht es z.B. ohne Excel. Bloß ich möchte halt mein Batch Script behalten und ein VBS ins batch script einbinden, sodass das VBS von xls nach txt konvertiert und mein Batch script nach jeder Zeile ein Semikolon dran hängt.
Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: 76109
09.03.2013 um 14:50 Uhr
Hallo xstr3ck3rx!

Mit VBS geht es z.B. ohne Excel.


Gruß Dieter
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 14:56 Uhr
Hallo Dieter,
Leider habe ich das VBS schon gelöscht und weiß nicht woher ich das hatte.
Sonst hätte ich es dir beweisen können :P
Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: 76109
09.03.2013 um 15:04 Uhr
Hallo xstr3ck3rx!

Du könntest mir beweisen, dass man Excel per VBS steuern kann, also indirekt mit Hilfe von Excel konvertieren...

Gruß Dieter
Bitte warten ..
Mitglied: Biber
09.03.2013, aktualisiert um 15:06 Uhr
Moin xstr3ck3rx,

du bist noch gar nicht wieder dran mit neuen Nachfragen...

Bitte beantworte erstmal bastlas Rückfragen.

Beim Umformatieren einer .csv-Datei in ein neues Zeilenformat reicht ja vielleicht die Frage nach einem neuen Dateinamen.

Beim Auslesen einer Excel-Datei brauchen wir schon ein paar mehr Infos:
  • welches von wie vielen Arbeitsblättern soll rausgeflöht werden?
  • Überschriften oder nicht?
  • Format von Datums- und numerischen Feldern?
  • Behandlung von Umlauten?

Und, was ich als erstes nachfragen würde:
WTF ist denn das Ziel der Aktion, die Frage hinter der Frage?
Das hört sich für mich alles nicht nach einem professionell durchgestylten Geschäftsprozess an.

Grüße
Biber
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 15:30 Uhr
hi Biber,
es geht darum das ich eine Excel Tabelle habe die wie folgt aufgebaut ist:
Zum;Beispiel;So;
mit;Semikolon;am;Ende;

Also das es eine xls Tabelle mit trennzeichen ";" ausgibt. Das Beispiel kommt raus, wenn man eine xls tabelle als csv speichert und dann mit editor öffnet. bei dem beispiel habe ich nur mit meinem Batch Script ein ";" an jedes Zeilenende gehangen.
Ich schaffe es aber nur mit meinem Batchscript, eine csv in eine txt umzuwandel aber mein ziel ist es eine xls in eine txt umzuwandeln, ohne in excel speichern unter zudrücken.
D.h. das Programm soll mich nach dem Namen der .xls fragen und nach dem namen des Ausgangstextdokuments (.txt).
und dann soll es so wie im Beispiel umgewandelt werden.
Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: bastla
09.03.2013, aktualisiert um 16:10 Uhr
Hallo xstr3ck3rx!

Du antwortest an Bibers und meinen Fragen vorbei - anyhow: Das folgende VBScript erwartet als Aufrufparameter den Pfad zu einer Excel-Datei und den Pfad zur gewünschten CSV-Datei (wobei der Zielordner vorweg bereits existieren muss) und erstellt die CSV-Datei unter Verwendung von Excel (da es ohne installiertes Excel, wie Dieter schon betont hat, nicht geht):
01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
Set Args = WScript.Arguments 
03.
XLSDatei = Args(0) 
04.
CSVDatei = Args(1) 
05.
 
06.
If Not fso.FileExists(XLSDatei) Then WScript.Quit(1) 
07.
 
08.
Set XL = WScript.CreateObject("Excel.Application") 
09.
XL.Visible = False 
10.
XL.DisplayAlerts = False 
11.
Set WB = XL.Workbooks.Open(XLSDatei) 
12.
WB.SaveAs CSVDatei, 6, , , , , , , , , , True 
13.
WB.Saved = True 
14.
XL.Application.Quit 
15.
WScript.Sleep 1000 
16.
T = fso.OpenTextfile(CSVDatei).ReadAll 
17.
fso.CreateTextFile(CSVDatei).Write Replace(T, vbNewLine, ";" & vbNewLine)
Der Aufruf aus einem Batch erfolgt (unter der Annahme, dass das Script als "C:\Scripts\XL2CSV.vbs" gespeichert ist) etwa so:
01.
set "Datei1=D:\Dein Ordner\Deine.xls" 
02.
set "Datei2=D:\Dein Zielordner\Deine.csv" 
03.
:: 
04.
:: 
05.
cscript //nologo "C:\Scripts\XL2CSV.vbs" "%Datei1%" "%Datei2%" || echo "%Datei1%" nicht gefunden! & goto :eof
Falls die Excel-Datei nicht gefunden wird, gibt das Script den Errorlevel 1 zurück (Verwendung wie oben gezeigt).

Excel benötigt für beide Dateien vollständige Pfade - falls also in "%Datei1%" aufgrund der Eingabe durch den Benutzer nur der Dateiname stehen sollte, kannst du mit
set "Datei1=%cd%\%Datei1%"
vor dem Scriptaufruf den Pfad hinzufügen.

Grüße
bastla
Bitte warten ..
Mitglied: 76109
09.03.2013, aktualisiert um 16:27 Uhr
Hallo bastla!

Wobei ich mich frage, wozu das Batch-Script jetzt noch gut sein soll?

Eventuell wäre zu überlegen, ob man das Script nicht einfach in den 'Senden an'-Ordner legt und die Exceldateien per 'Senden an' an das Script übergibt. Ggf könnte auch noch der Dateiname der Ausgabe-Datei (*.txt) anhand der Eingabe-Datei extrahiert werden...

Gruß Dieter
Bitte warten ..
Mitglied: bastla
09.03.2013 um 16:24 Uhr
Hallo Dieter!

Klar - hatten wir ja auch alles schon.

Aus welchem Grund xstr3ck3rx Batch haben wollte, kannst Du eigentlich nur ihn fragen (und vielleicht bekommst du ja sogar eine Antwort ) ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
09.03.2013 um 16:31 Uhr
Hallo bastla!

Aus welchem Grund xstr3ck3rx Batch haben wollte, kannst Du eigentlich nur ihn fragen (und vielleicht bekommst du ja sogar eine Antwort ) ...
Stimmt! Auf die Antwort bin ich schon gespannt

Gruß Dieter
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 16:54 Uhr
Erst mal ein fettes DANKESCHÖN an euch ich werds gleich mal ausprobieren.
Ich brauche das für die Arbeit bzw für meine chef. Er arbeitet viel mit Excel und sucht deshalb ein Tool, dass seine vielen excel tabellen in txt umwandelt damit es im ausland in ihre Programme importiert werden kann. Und ich benutze zusätzlich noch batch, weil ich damit noch sachen hinzufügen möchte.
VIELEN DANK.
Mit freundlichen Grüßen xstr3ck3rx
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 17:18 Uhr
Ich bin zu blöd.
bastla könntest du mir helfen das richtig zu speichern. Ich habe das obere Script jetzt als XL2CSV.vbs unter dem Pfad "C:\Scripts\" gespeichert und was mache ich dann damit er es vernümpftig umwandelt?
Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: bastla
09.03.2013 um 17:32 Uhr
Hallo xstr3ck3rx!

Da oben steht doch das konkrete Batch-Anwendungsbeispiel.

Grüße
bastla
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 18:03 Uhr
Sry aber das verstehe ich jetzt gerade nicht also ich habe das script im vorgebenen pfad gespeichert und nun?
sry
Mit freundlichen Grüßen xstr3ck3rx
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 18:08 Uhr
Ok sry wie behindert bin ich denn xD
Ich habe es hinbekommen.
Sauber danke..
DANKESCHÖN :D
Mit freundlichen Grüßen
xstr3ck3rx
:*
Bitte warten ..
Mitglied: bastla
09.03.2013 um 18:08 Uhr
Hallo xstr3ck3rx!

Für Dich kopiere ich das doch gerne hier herunter ...
01.
set "Datei1=D:\Dein Ordner\Deine.xls" 
02.
set "Datei2=D:\Dein Zielordner\Deine.csv" 
03.
:: 
04.
:: 
05.
cscript //nologo "C:\Scripts\XL2CSV.vbs" "%Datei1%" "%Datei2%" || echo "%Datei1%" nicht gefunden! & goto :eof
oder, wenn in "%Datei1%" und "%Datei2%" nur Dateinamen ohne Pfad stehen und als Pfad der aktuelle Ordner verwendet werden soll:
01.
set "Datei1=D:\Dein Ordner\Deine.xls" 
02.
set "Datei2=D:\Dein Zielordner\Deine.csv" 
03.
:: 
04.
:: 
05.
cscript //nologo "C:\Scripts\XL2CSV.vbs" "%cd%\%Datei1%" "%cd%\%Datei2%" || echo "%Datei1%" nicht gefunden! & goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 18:10 Uhr
und noch mal danke!!!!!!
Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 22:25 Uhr
Man kann das VBScript bestimmt auch so umändern das es von .xlsx in .txt umwandelt, oder nicht?
also wenn man im script überall, wo .xls steht noch ein "x" dazu schreibt. Ich habe es mal gemacht dann sieht es so aus:
Set fso = CreateObject("Scripting.FileSystemObject")
Set Args = WScript.Arguments
XLSXDatei = Args(0)
TXTDatei = Args(1)

If Not fso.FileExists(XLSXDatei) Then WScript.Quit(1)

Set XL = WScript.CreateObject("Excel.Application")
XL.Visible = False
XL.DisplayAlerts = False
Set WB = XL.Workbooks.Open(XLSXDatei)
WB.SaveAs TXTDatei, 6, , , , , , , , , , True
WB.Saved = True
XL.Application.Quit
WScript.Sleep 1000
T = fso.OpenTextfile(TXTDatei).ReadAll
fso.CreateTextFile(TXTDatei).Write Replace(T, vbNewLine, ";" & vbNewLine)



würde das so funktionieren oder fehlt da noch etwas, weil bei mir funktioniert es nur von .xls nach .txt nicht von .xlsx nach .txt.
Nicht wundern das ich aus .csv .txt gemacht habe, wollte es doch so und es funktioniert prima, bloß jetzt wollte ich fragen, wie ich es ändern muss, damit es von .xlsx nach .txt umwandeln kann.

Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: bastla
09.03.2013 um 22:36 Uhr
Hallo xstr3ck3rx!

Du brauchst am Script garnix zu ändern ("XLSDatei" ist, wie "CSVDatei", nur ein Variablenname und hat keinen Einfluss auf das Format).

Ich habe übrigens mit einer xlsx-Datei erfolgreich getestet ...

Grüße
bastla

P.S.: Magst Du Deine Codeschnipsel nicht auch passend formatieren (geht auch im Nachhinein und auch für den Eröffnungsbeitrag)?
Bitte warten ..
Mitglied: xstr3ck3rx
09.03.2013 um 22:44 Uhr
Hallo bastla!
Dann war ich wie immer zu doof und werde es weiter versuchen.
DANKE
Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: xstr3ck3rx
18.03.2013, aktualisiert um 13:11 Uhr
Hallo bastla,
mal wieder habe ich eine weitere frage unzwar möchte ich das script jetzt so modifizieren, dass wenn ich das VBS per batch starte, sich ein FileOpenDialog öffnet und ich die %Datei1%.xls oder %Datei1%.xlsx auswählen kann und Sie anschließen über ein SaveAsDialog abspeichern kann. Wahrscheinlich brauche ich dann mein fettes batch script nicht mehr.
Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
CSV-Datei nach Excel importieren (5)

Frage von mrvfbnummer2 zum Thema Batch & Shell ...

Batch & Shell
gelöst 1 PDF duplizieren und umbenennen nach CSV mittels Batch (5)

Frage von Kalisser zum Thema Batch & Shell ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...