¿Cómo convertir un archivo Excel con varias hojas en un conjunto de archivos CSV?

23

Tengo un archivo de Excel con 20 hojas. ¿Hay alguna forma de convertir rápidamente el archivo en 20 archivos CSV, uno para cada hoja?

Puedo hacerlo manualmente, por supuesto, pero tendré que procesar mucho estos archivos, por lo que sería genial tener algún tipo de utilidad de línea de comandos (o incluso modificadores de línea de comandos de Excel).

AngryHacker
fuente

Respuestas:

17

El método de vembutech es definitivamente una solución más pulida. Aquí hay una macro ligera de VBA que exportaría todas las hojas de un libro de trabajo.

Va en la carpeta de libros activos todos los nombres son 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

EDITAR:

Por el comentario. La macro original simplemente usa la función guardar como (que es como cerrar el original). Si desea hacer esto mientras deja abierto el original, debe copiarlo en un nuevo libro de trabajo, guardar, cerrar el nuevo libro de trabajo.

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
fuente
Acabo de obtener Run-time error '1004': Application-defined or object-defined errormi Excel para Mac.
bryan
8

En lugar de un script por lotes, puede usar el convertidor XLS a CSV que le brindaría una mejor interfaz de usuario

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

Descomprima el archivo .HTA.

Haga doble clic en el archivo .HTA

ingrese la descripción de la imagen aquí

Ubique la carpeta donde tiene su archivo xls

seleccione el esquema de nomenclatura csv y haga clic en iniciar conversión que convertirá todos los archivos xls de la carpeta a archivos csv

Si su carpeta tiene 3 archivos xls con 3 hojas, entonces crearía 9 archivos csv para cada una de las hojas y puede identificar el archivo csv con un esquema de nomenclatura csv

¡Espero que esto ayude!

vembutech
fuente
6

Aquí hay un script de python getsheets.py ( espejo ), debe instalar pandasy xlrdantes de usarlo.

Ejecuta esto:

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

¿Cómo funciona?

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

Convierte a varios xlsx:

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

All Done!

Convierte a varios csv:

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

All Done!
Scott Ming
fuente
1
Además: pip3 install openpyxl click ... y luego me meto ImportError: cannot import name 'get_column_letter'en la línea 513 de pandas excel.py; Supongo que mi instalación de pandas está rota de alguna manera.
Jameson Quinn
3

Una macro de ExtendOffice para guardar las pestañas en su carpeta Documentos:

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
fuente