Wie konvertiere ich eine Excel-Datei mit mehreren Arbeitsblättern in eine Reihe von CSV-Dateien?

23

Ich habe eine Excel-Datei mit 20 Blättern. Gibt es eine Möglichkeit, die Datei schnell in 20 CSV-Dateien zu konvertieren - eine für jedes Blatt?

Ich kann es natürlich manuell machen, aber ich muss diese Dateien oft verarbeiten, daher wäre es großartig, eine Art Befehlszeilenprogramm (oder sogar Excel-Befehlszeilenschalter) zu haben.

AngryHacker
quelle

Antworten:

17

Die Methode von Vembutech ist definitiv eine ausgefeiltere Lösung. Hier ist ein kompaktes VBA-Makro, mit dem alle Blätter aus einer Arbeitsmappe exportiert werden.

Geht im aktiven Arbeitsmappenordner alle Namen vor workbookname_sheetname.csv

Sub exportcsv()
Dim ws As Worksheet
Dim path As String

path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
For Each ws In Worksheets
    ws.Activate
    ActiveWorkbook.SaveAs Filename:=path & "_" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
Next
End Sub

BEARBEITEN:

Für den Kommentar. Das ursprüngliche Makro verwendet einfach die Funktion "Speichern unter" (ähnlich wie das Schließen des Originals). Wenn Sie dies tun möchten, während das Original geöffnet bleibt, müssen Sie es in eine neue Arbeitsmappe kopieren, speichern und die neue Arbeitsmappe schließen.

Sub exportcsv()
Dim ws As Worksheet
Dim path As String

path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
For Each ws In Worksheets
    ws.Copy
    ActiveWorkbook.SaveAs Filename:=path & "_" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    ActiveWorkbook.Close False
Next
End Sub
gtwebb
quelle
Ich komme gerade Run-time error '1004': Application-defined or object-defined errorauf mein Excel für Mac.
Bryan
8

Anstelle von Batch-Skripten können Sie auch den XLS-zu-CSV-Konverter verwenden , um eine bessere Benutzeroberfläche zu erhalten

Direkter Link: http://cwestblog.com/wp-content/uploads/2013/04/XLS-to-CSV-Converter-1.1.0.zip

Entpacken Sie die .HTA-Datei.

Doppelklicken Sie auf die .HTA-Datei

Bildbeschreibung hier eingeben

Suchen Sie den Ordner, in dem Sie Ihre XLS-Datei haben

Wählen Sie das CSV-Namensschema und klicken Sie auf Konvertierung starten, um alle XLS-Dateien im Ordner in CSV-Dateien zu konvertieren

Wenn Ihr Ordner 3 xls-Dateien mit 3 Blättern enthält, werden für jedes Blatt 9 csv-Dateien erstellt, und Sie können die csv-Datei mit dem csv-Namensschema identifizieren

Hoffe das hilft!

Vembutech
quelle
6

Hier ist ein Python - Skript getsheets.py ( Spiegel ), sollten Sie installieren pandasund xlrdbevor Sie es benutzen.

Führen Sie Folgendes aus:

pip3 install pandas xlrd  # or `pip install pandas xlrd`

Wie funktioniert es?

$ python3 getsheets.py -h
Usage: getsheets.py [OPTIONS] INPUTFILE

Convert a Excel file with multiple sheets to several file with one sheet.

Examples:

    getsheets filename

    getsheets filename -f csv

Options:
-f, --format [xlsx|csv]  Default xlsx.
-h, --help               Show this message and exit.

In mehrere xlsx konvertieren:

$ python3 getsheets.py goods_temp.xlsx
Sheet.xlsx Done!
Sheet1.xlsx Done!

All Done!

In mehrere csv konvertieren:

$ python3 getsheets.py goods_temp.xlsx -f csv
Sheet.csv Done!
Sheet1.csv Done!

All Done!
Scott Ming
quelle
1
Also: pip3 install openpyxl click ... und dann steige ich ImportError: cannot import name 'get_column_letter'in Zeile 513 von pandas excel.py ein; Ich denke, meine Pandas-Installation ist irgendwie kaputt.
Jameson Quinn
3

Ein Makro aus ExtendOffice zum Speichern der Registerkarten in Ihrem Ordner "Dokumente":

Sub ExportSheetsToCSV()
    Dim xWs As Worksheet
    Dim xcsvFile As String
    For Each xWs In Application.ActiveWorkbook.Worksheets
        xWs.Copy
        xcsvFile = CurDir & "\" & xWs.Name & ".csv"
        Application.ActiveWorkbook.SaveAs Filename: = xcsvFile, _
        FileFormat: = xlCSV, CreateBackup: = False
        Application.ActiveWorkbook.Saved = True
        Application.ActiveWorkbook.Close
    Next
End Sub
Michel de Ruiter
quelle