Xls to csv Converter per Batch (ohne Excel)
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
MfG
Leon
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
MfG
Leon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203046
Url: https://administrator.de/forum/xls-to-csv-converter-per-batch-ohne-excel-203046.html
Ausgedruckt am: 21.04.2025 um 19:04 Uhr
30 Kommentare
Neuester Kommentar
Hallo xstr3ck3rx!
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
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

Hallo xstr3ck3rx!

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

Hallo xstr3ck3rx!

Gruß Dieter
Mit VBS geht es z.B. ohne Excel.
NöGruß Dieter

Hallo xstr3ck3rx!
Du könntest mir beweisen, dass man Excel per VBS steuern kann, also indirekt mit Hilfe von Excel konvertieren...
Gruß Dieter
Du könntest mir beweisen, dass man Excel per VBS steuern kann, also indirekt mit Hilfe von Excel konvertieren...
Gruß Dieter
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:
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
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
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):
Der Aufruf aus einem Batch erfolgt (unter der Annahme, dass das Script als "C:\Scripts\XL2CSV.vbs" gespeichert ist) etwa so:
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
vor dem Scriptaufruf den Pfad hinzufügen.
Grüße
bastla
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):
Set fso = CreateObject("Scripting.FileSystemObject")
Set Args = WScript.Arguments
XLSDatei = Args(0)
CSVDatei = Args(1)
If Not fso.FileExists(XLSDatei) Then WScript.Quit(1)
Set XL = WScript.CreateObject("Excel.Application")
XL.Visible = False
XL.DisplayAlerts = False
Set WB = XL.Workbooks.Open(XLSDatei)
WB.SaveAs CSVDatei, 6, , , , , , , , , , True
WB.Saved = True
XL.Application.Quit
WScript.Sleep 1000
T = fso.OpenTextfile(CSVDatei).ReadAll
fso.CreateTextFile(CSVDatei).Write Replace(T, vbNewLine, ";" & vbNewLine)
set "Datei1=D:\Dein Ordner\Deine.xls"
set "Datei2=D:\Dein Zielordner\Deine.csv"
::
::
cscript //nologo "C:\Scripts\XL2CSV.vbs" "%Datei1%" "%Datei2%" || echo "%Datei1%" nicht gefunden! & goto :eof
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%"
Grüße
bastla

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
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

Hallo bastla!

Gruß Dieter
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 gespanntGruß Dieter
Hallo xstr3ck3rx!
Für Dich kopiere ich das doch gerne hier herunter ...
oder, wenn in "%Datei1%" und "%Datei2%" nur Dateinamen ohne Pfad stehen und als Pfad der aktuelle Ordner verwendet werden soll:
Grüße
bastla
Für Dich kopiere ich das doch gerne hier herunter ...
set "Datei1=D:\Dein Ordner\Deine.xls"
set "Datei2=D:\Dein Zielordner\Deine.csv"
::
::
cscript //nologo "C:\Scripts\XL2CSV.vbs" "%Datei1%" "%Datei2%" || echo "%Datei1%" nicht gefunden! & goto :eof
set "Datei1=D:\Dein Ordner\Deine.xls"
set "Datei2=D:\Dein Zielordner\Deine.csv"
::
::
cscript //nologo "C:\Scripts\XL2CSV.vbs" "%cd%\%Datei1%" "%cd%\%Datei2%" || echo "%Datei1%" nicht gefunden! & goto :eof
bastla
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)?
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)?