Come convertire file Excel con più fogli in un set di file CSV?


23

Ho un file Excel con 20 fogli su di esso. C'è un modo per convertire rapidamente il file in 20 file CSV - uno per ogni foglio?

Posso farlo manualmente, ovviamente, ma dovrò elaborare molto questi file, quindi sarebbe bello avere un qualche tipo di utility da riga di comando (o persino opzioni da riga di comando di Excel).

Risposte:


17

Il metodo di vembutech è sicuramente una soluzione più raffinata. Ecco una macro VBA leggera che esporrebbe tutti i fogli da una cartella di lavoro.

Va nella cartella delle cartelle di lavoro attiva, tutti i nomi sono 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

MODIFICARE:

Per il commento La macro originale utilizza semplicemente la funzione di salvataggio come (che è un po 'come chiudere l'originale). Se vuoi farlo lasciando l'originale aperto, devi copiarlo in una nuova cartella di lavoro, salvare, chiudere la nuova cartella di lavoro.

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

Salgo Run-time error '1004': Application-defined or object-defined errorsul mio Excel per Mac.
bryan

8

Invece di uno script batch puoi usare il convertitore da XLS a CSV che ti darebbe una migliore interfaccia utente

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

Decomprimi il file .HTA.

Fare doppio clic sul file .HTA

inserisci qui la descrizione dell'immagine

Individua la cartella in cui hai il tuo file xls

selezionare lo schema di denominazione CSV e fare clic su Avvia conversione che convertirà tutti i file XLS nella cartella in file CSV

Se la tua cartella ha 3 file xls con 3 fogli, creerebbe 9 file CSV per ogni foglio e puoi identificare il file CSV con lo schema di denominazione CSV

Spero che sia di aiuto!


6

Ecco uno script python getsheets.py ( mirror ), è necessario installarlo pandase xlrdprima di utilizzarlo.

Esegui questo:

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

Come funziona?

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

Converti in diversi xlsx:

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

All Done!

Converti in diversi CSV:

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

All Done!

1
Inoltre: pip3 install openpyxl click ... e poi arrivo ImportError: cannot import name 'get_column_letter'sulla linea 513 di panda excel.py; Immagino che la mia installazione di Panda sia in qualche modo rotta.
Jameson Quinn,

3

Una macro da ExtendOffice per salvare le schede nella cartella Documenti:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.