2015-07-24 9 views
5

Ich bin auf der Suche nach einer Möglichkeit, eine Reihe von .csv Dateien zu .xlsx über die Befehlszeile zu konvertieren.Convert. CSV zu .XLSX mit der Befehlszeile

Ich habe eine Reihe von verschiedenen VBScripts ausprobiert, die ich gefunden habe, aber sie scheinen alle .xlsx zu .csv zu konvertieren und nicht umgekehrt.

Hier ist der nächste, den ich finden konnte, aber wieder ist es .xlsx-.csv:

if WScript.Arguments.Count < 2 Then 
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv" 
    Wscript.Quit 
End If 
Dim oExcel 
Set oExcel = CreateObject("Excel.Application") 
Dim oBook 
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0)) 
oBook.SaveAs WScript.Arguments.Item(1), 6 
oBook.Close False 
oExcel.Quit 
WScript.Echo "Done" 

Irgendwelche Ideen?

Antwort

6

Einzige Voraussetzung ist, dass die „.csv“ Kleinbuchstaben im Dateinamen sein muss:

Dim file, WB 

With CreateObject("Excel.Application") 
    On Error Resume Next 
    For Each file In WScript.Arguments 
     Set WB = .Workbooks.Open(file) 
     WB.SaveAs Replace(WB.FullName, ".csv", ".xlsx"), 51 
     WB.Close False 
    Next  
    .Quit 
End With 

WScript.Echo "Done!" 
+0

Ich startete es von der Befehlszeile mit einer einzigen CSV-Datei als das Argument, aber es sagt nur getan und nichts passiert. – crackruckles

+0

Haben Sie Argumente übergeben? Und nennst du das Skript von CMD oder direkt per Drag-and-Drop? –

+0

So habe ich Ihre Methode zu arbeiten Ich musste nur den absoluten Pfad übergeben, nicht nur den Dateinamen. Danke für die Hilfe. – crackruckles

0

Sind Sie auf Windows oder Linux/Mac?

Ich könnte eine Lösung für Sie so oder so haben. Hier

ist die Lösung Ihrer Probleme ist, ohne dass die Programme kommentiert unten:

https://social.msdn.microsoft.com/Forums/en-US/74df1378-7c0c-4c0f-b174-fa97a5c2969b/convert-csv-to-xlsx?forum=Vsexpressvb

EDIT hier So ist die Basislösung:

Grundsätzlich gelten Sie einen Filter (die in der Fall wäre der xlsx-Filter) aus dem Verzeichnis, in dem sich Ihre Datei befindet.

Nvm das ich Sie gerade gesehen haben sind unter Windows ./directory --headless --convert-to xlsx: "Calc MS Excel 2007 XML" file.csv

in diesem Fall „Calc MS Excel 2007 XML "ist der Filter.

Das funktioniert für einzelne Dateien, lassen Sie mich Batch in einer Sekunde hinzufügen.

+0

Leider i Fenster erwähnt haben sollte – crackruckles

+0

diese ausprobieren, sie sind nützlich Konverter für Windows http://www.dbf2002.com/csv-converter/commandline.html http: //www.softinterface .com/Convert-XLS/Funktionen/Convert-CSV-To-XLSX.htm –

+0

Ich habe versucht, beide, und sie beide konvertieren sie falsch und führt zu einem Fehler, wenn ich versuche, sie mit SSIS zu meiner SQL-Datenbank zu importieren, aber wenn Ich mache es manuell durch Excel funktioniert es perfekt – crackruckles

1

Für Windows, antwortete ich vor kurzem auf eine ähnliche Frage auf SuperUser.com.

https://superuser.com/a/1011154/326177

Ich denke Gesamt CSV Converter ist die am wenigsten teure Option mit den meisten Funktionen. Es muss nicht einmal Excel installiert werden und kann CSV-Daten in JSON, Access, DBF, XML oder SQL ausgeben.

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options> 
0

Hier ist ein Open-Source-Tool für Windows-Rechner habe ich die NPOI Bibliotheken erstellt, die ohne Excel müssen XLS/XLSX Konvertierungen einfach abgegrenzte Datei wird auf dem Rechner installiert werden. Die Binärdatei befindet sich in Bin/Debug, wenn Sie sie nicht selbst erstellen möchten. Alle notwendigen Bibliotheken sind in der ausführbaren Datei enthalten, so dass sie eigenständig arbeiten kann.

https://github.com/nmolinos/csv2excel

4

Haftungsausschluss: Ich habe CSV2XLSX als Open-Source zur Verfügung geschrieben bei https://gitlab.com/DerLinkshaender/csv2xlsx

Möglicherweise möchten Sie über ein externes Tool wie das versuchen. Warum?

Vorteile:

  • auch verwendet werden, wenn Windows Script Host blockiert wird.
  • unabhängig vom Betriebssystem, so können Sie ein vertrautes Tool mit dann die gleichen Optionen auf jedem Betriebssystem verwenden (speichern Gehirn Speicher :-)).
  • keine Installation von Excel oder LibreOffice etc. erforderlich, so dass Sie keine zusätzlichen Module oder Sprachen installieren müssen.
  • die Angabe mehrerer CSV-Parameter als Befehlszeilenparameter macht das Tool "SysAdmin-freundlich", da sie nicht durch den Quellcode graben müssen.
  • können Sie sogar Zeilen- oder Spaltenbereiche für die CSV-Daten angeben.
  • Das xlsx-Dateiformat ist sehr komplex, das Schreiben ohne eine Installation eines Office-Pakets ist nichts für schwache Nerven.
  • besser für die Stapelverarbeitung geeignet, da das Werkzeug in die OS-spezifische Schleifenlogik integriert werden kann.
  • Ich habe versucht, eine nützliche Reihe von Befehlszeilenflags mit DevOps/SysAdmin im Hinterkopf zu bieten, viele vorhandene Skripts fehlt eine gute Kontrolle über Befehlszeilenoptionen.
+0

Die Angabe des Links ist in Ordnung. Versuchen Sie zu erklären, wie das Problem gelöst wird. –

+0

@ArunVinoth - danke, besser jetzt? Ich bin ein Neuling in SO. – Arminius

+0

Tolles Tool, stellen Sie sicher, dass Ihre Daten bereits UTF-8 sind. – user121391